From a55a646de973aa280513c8f4a1294b0912c7a730 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 28 Jul 2024 17:22:36 -0400
Subject: [PATCH 001/165] Fix world manager access stalling for the main thread

---
 .../geyser/platform/mod/world/GeyserModWorldManager.java    | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
index db1768737..524087e86 100644
--- a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
+++ b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
@@ -33,8 +33,10 @@ import net.minecraft.core.component.DataComponents;
 import net.minecraft.core.registries.BuiltInRegistries;
 import net.minecraft.network.chat.Component;
 import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerChunkCache;
 import net.minecraft.server.level.ServerPlayer;
 import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.level.ChunkPos;
 import net.minecraft.world.level.Level;
 import net.minecraft.world.level.block.Block;
 import net.minecraft.world.level.block.entity.BannerBlockEntity;
@@ -43,7 +45,6 @@ import net.minecraft.world.level.block.entity.BlockEntity;
 import net.minecraft.world.level.block.entity.DecoratedPotBlockEntity;
 import net.minecraft.world.level.chunk.ChunkAccess;
 import net.minecraft.world.level.chunk.LevelChunkSection;
-import net.minecraft.world.level.chunk.status.ChunkStatus;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.geysermc.geyser.level.GeyserWorldManager;
@@ -89,7 +90,8 @@ public class GeyserModWorldManager extends GeyserWorldManager {
             return 0;
         }
 
-        ChunkAccess chunk = level.getChunkSource().getChunk(x >> 4, z >> 4, ChunkStatus.FULL, false);
+        // Only loads active chunks, and doesn't delegate to main thread
+        ChunkAccess chunk = ((ServerChunkCache) level.getChunkSource()).chunkMap.getChunkToSend(ChunkPos.asLong(x >> 4, z >> 4));
         if (chunk == null) {
             return 0;
         }

From e2f40569f8e07b7ec4502a056ad64454e26c8952 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 19 Oct 2024 22:38:04 -0400
Subject: [PATCH 002/165] Get some bits going

---
 .../geyser/entity/type/LivingEntity.java      |   31 +-
 .../type/living/animal/horse/CamelEntity.java |    2 +-
 .../type/player/SessionPlayerEntity.java      |    4 +-
 .../entity/vehicle/VehicleComponent.java      |    4 +-
 .../geyser/inventory/item/Potion.java         |    2 +-
 .../java/org/geysermc/geyser/item/Items.java  |  214 +-
 .../geysermc/geyser/level/block/Blocks.java   | 3502 +++++++++--------
 .../level/block/property/Properties.java      |    2 +
 .../geyser/level/physics/CollisionResult.java |   34 +
 .../geyser/session/GeyserSession.java         |    5 +-
 .../inventory/InventoryTranslator.java        |    8 +-
 .../JavaClientboundRecipesTranslator.java     |   82 -
 ....java => JavaLoginFinishedTranslator.java} |   12 +-
 .../java/JavaRecipeBookAddTranslator.java     |   81 +
 .../java/JavaUpdateRecipesTranslator.java     |  913 +++--
 ...or.java => JavaSetHeldSlotTranslator.java} |    8 +-
 .../JavaContainerSetSlotTranslator.java       |    4 +-
 gradle/libs.versions.toml                     |    2 +-
 18 files changed, 2528 insertions(+), 2382 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundRecipesTranslator.java
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/java/{JavaGameProfileTranslator.java => JavaLoginFinishedTranslator.java} (91%)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/{JavaSetCarriedItemTranslator.java => JavaSetHeldSlotTranslator.java} (86%)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java
index 626ceca5c..33064edfe 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java
@@ -25,11 +25,6 @@
 
 package org.geysermc.geyser.entity.type;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.UUID;
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.Setter;
@@ -71,6 +66,12 @@ import org.geysermc.mcprotocollib.protocol.data.game.level.particle.EntityEffect
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.Particle;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.UUID;
+
 @Getter
 @Setter
 public class LivingEntity extends Entity {
@@ -445,35 +446,35 @@ public class LivingEntity extends Entity {
     protected void updateAttribute(Attribute javaAttribute, List<AttributeData> newAttributes) {
         if (javaAttribute.getType() instanceof AttributeType.Builtin type) {
             switch (type) {
-                case GENERIC_MAX_HEALTH -> {
+                case MAX_HEALTH -> {
                     // Since 1.18.0, setting the max health to 0 or below causes the entity to die on Bedrock but not on Java
                     // See https://github.com/GeyserMC/Geyser/issues/2971
                     this.maxHealth = Math.max((float) AttributeUtils.calculateValue(javaAttribute), 1f);
                     newAttributes.add(createHealthAttribute());
                 }
-                case GENERIC_MOVEMENT_SPEED -> {
+                case MOVEMENT_SPEED -> {
                     AttributeData attributeData = calculateAttribute(javaAttribute, GeyserAttributeType.MOVEMENT_SPEED);
                     newAttributes.add(attributeData);
                     if (this instanceof ClientVehicle clientVehicle) {
                         clientVehicle.getVehicleComponent().setMoveSpeed(attributeData.getValue());
                     }
                 }
-                case GENERIC_STEP_HEIGHT -> {
+                case STEP_HEIGHT -> {
                     if (this instanceof ClientVehicle clientVehicle) {
                         clientVehicle.getVehicleComponent().setStepHeight((float) AttributeUtils.calculateValue(javaAttribute));
                     }
                 }
-                case GENERIC_GRAVITY ->  {
+                case GRAVITY ->  {
                     if (this instanceof ClientVehicle clientVehicle) {
                         clientVehicle.getVehicleComponent().setGravity(AttributeUtils.calculateValue(javaAttribute));
                     }
                 }
-                case GENERIC_ATTACK_DAMAGE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.ATTACK_DAMAGE));
-                case GENERIC_FLYING_SPEED -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FLYING_SPEED));
-                case GENERIC_FOLLOW_RANGE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FOLLOW_RANGE));
-                case GENERIC_KNOCKBACK_RESISTANCE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.KNOCKBACK_RESISTANCE));
-                case GENERIC_JUMP_STRENGTH -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.HORSE_JUMP_STRENGTH));
-                case GENERIC_SCALE -> {
+                case ATTACK_DAMAGE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.ATTACK_DAMAGE));
+                case FLYING_SPEED -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FLYING_SPEED));
+                case FOLLOW_RANGE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.FOLLOW_RANGE));
+                case KNOCKBACK_RESISTANCE -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.KNOCKBACK_RESISTANCE));
+                case JUMP_STRENGTH -> newAttributes.add(calculateAttribute(javaAttribute, GeyserAttributeType.HORSE_JUMP_STRENGTH));
+                case SCALE -> {
                     // Attribute on Java, entity data on Bedrock
                     setAttributeScale((float) AttributeUtils.calculateValue(javaAttribute));
                     updateBedrockMetadata();
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java
index 3c0bf1a70..b83a85bfb 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java
@@ -141,7 +141,7 @@ public class CamelEntity extends AbstractHorseEntity implements ClientVehicle {
     @Override
     protected AttributeData calculateAttribute(Attribute javaAttribute, GeyserAttributeType type) {
         AttributeData attributeData = super.calculateAttribute(javaAttribute, type);
-        if (javaAttribute.getType() == AttributeType.Builtin.GENERIC_JUMP_STRENGTH) {
+        if (javaAttribute.getType() == AttributeType.Builtin.JUMP_STRENGTH) {
             vehicleComponent.setHorseJumpStrength(attributeData.getValue());
         }
         return attributeData;
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index f427b001a..a8b0765f3 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -247,9 +247,9 @@ public class SessionPlayerEntity extends PlayerEntity {
 
     @Override
     protected void updateAttribute(Attribute javaAttribute, List<AttributeData> newAttributes) {
-        if (javaAttribute.getType() == AttributeType.Builtin.GENERIC_ATTACK_SPEED) {
+        if (javaAttribute.getType() == AttributeType.Builtin.ATTACK_SPEED) {
             session.setAttackSpeed(AttributeUtils.calculateValue(javaAttribute));
-        } else if (javaAttribute.getType() == AttributeType.Builtin.PLAYER_BLOCK_INTERACTION_RANGE) {
+        } else if (javaAttribute.getType() == AttributeType.Builtin.BLOCK_INTERACTION_RANGE) {
             this.blockInteractionRange = AttributeUtils.calculateValue(javaAttribute);
         } else {
             super.updateAttribute(javaAttribute, newAttributes);
diff --git a/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java b/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
index db703a3cb..4f4a46dc9 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
@@ -76,8 +76,8 @@ public class VehicleComponent<T extends LivingEntity & ClientVehicle> {
     public VehicleComponent(T vehicle, float stepHeight) {
         this.vehicle = vehicle;
         this.stepHeight = stepHeight;
-        this.moveSpeed = (float) AttributeType.Builtin.GENERIC_MOVEMENT_SPEED.getDef();
-        this.gravity = AttributeType.Builtin.GENERIC_GRAVITY.getDef();
+        this.moveSpeed = (float) AttributeType.Builtin.MOVEMENT_SPEED.getDef();
+        this.gravity = AttributeType.Builtin.GRAVITY.getDef();
 
         double width = vehicle.getBoundingBoxWidth();
         double height = vehicle.getBoundingBoxHeight();
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/item/Potion.java b/core/src/main/java/org/geysermc/geyser/inventory/item/Potion.java
index 129c365a9..21de6394e 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/item/Potion.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/item/Potion.java
@@ -99,7 +99,7 @@ public enum Potion {
     }
 
     public PotionContents toComponent() {
-        return new PotionContents(this.ordinal(), -1, Collections.emptyList());
+        return new PotionContents(this.ordinal(), -1, Collections.emptyList(), null);
     }
 
     public static Potion getByJavaIdentifier(String javaIdentifier) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index 462e98d19..ba4b37ff5 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -25,9 +25,39 @@
 
 package org.geysermc.geyser.item;
 
-import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.components.ToolTier;
-import org.geysermc.geyser.item.type.*;
+import org.geysermc.geyser.item.type.ArmorItem;
+import org.geysermc.geyser.item.type.ArrowItem;
+import org.geysermc.geyser.item.type.AxolotlBucketItem;
+import org.geysermc.geyser.item.type.BannerItem;
+import org.geysermc.geyser.item.type.BlockItem;
+import org.geysermc.geyser.item.type.BoatItem;
+import org.geysermc.geyser.item.type.CompassItem;
+import org.geysermc.geyser.item.type.CrossbowItem;
+import org.geysermc.geyser.item.type.DecoratedPotItem;
+import org.geysermc.geyser.item.type.DyeItem;
+import org.geysermc.geyser.item.type.DyeableArmorItem;
+import org.geysermc.geyser.item.type.ElytraItem;
+import org.geysermc.geyser.item.type.EnchantedBookItem;
+import org.geysermc.geyser.item.type.FilledMapItem;
+import org.geysermc.geyser.item.type.FireworkRocketItem;
+import org.geysermc.geyser.item.type.FireworkStarItem;
+import org.geysermc.geyser.item.type.FishingRodItem;
+import org.geysermc.geyser.item.type.GoatHornItem;
+import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.item.type.MaceItem;
+import org.geysermc.geyser.item.type.MapItem;
+import org.geysermc.geyser.item.type.PlayerHeadItem;
+import org.geysermc.geyser.item.type.PotionItem;
+import org.geysermc.geyser.item.type.ShieldItem;
+import org.geysermc.geyser.item.type.ShulkerBoxItem;
+import org.geysermc.geyser.item.type.SpawnEggItem;
+import org.geysermc.geyser.item.type.TieredItem;
+import org.geysermc.geyser.item.type.TippedArrowItem;
+import org.geysermc.geyser.item.type.TropicalFishBucketItem;
+import org.geysermc.geyser.item.type.WolfArmorItem;
+import org.geysermc.geyser.item.type.WritableBookItem;
+import org.geysermc.geyser.item.type.WrittenBookItem;
 import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.registry.Registries;
 
@@ -81,6 +111,7 @@ public final class Items {
     public static final Item ACACIA_PLANKS = register(new BlockItem(builder(), Blocks.ACACIA_PLANKS));
     public static final Item CHERRY_PLANKS = register(new BlockItem(builder(), Blocks.CHERRY_PLANKS));
     public static final Item DARK_OAK_PLANKS = register(new BlockItem(builder(), Blocks.DARK_OAK_PLANKS));
+    public static final Item PALE_OAK_PLANKS = register(new BlockItem(builder(), Blocks.PALE_OAK_PLANKS));
     public static final Item MANGROVE_PLANKS = register(new BlockItem(builder(), Blocks.MANGROVE_PLANKS));
     public static final Item BAMBOO_PLANKS = register(new BlockItem(builder(), Blocks.BAMBOO_PLANKS));
     public static final Item CRIMSON_PLANKS = register(new BlockItem(builder(), Blocks.CRIMSON_PLANKS));
@@ -93,6 +124,7 @@ public final class Items {
     public static final Item ACACIA_SAPLING = register(new BlockItem(builder(), Blocks.ACACIA_SAPLING));
     public static final Item CHERRY_SAPLING = register(new BlockItem(builder(), Blocks.CHERRY_SAPLING));
     public static final Item DARK_OAK_SAPLING = register(new BlockItem(builder(), Blocks.DARK_OAK_SAPLING));
+    public static final Item PALE_OAK_SAPLING = register(new BlockItem(builder(), Blocks.PALE_OAK_SAPLING));
     public static final Item MANGROVE_PROPAGULE = register(new BlockItem(builder(), Blocks.MANGROVE_PROPAGULE));
     public static final Item BEDROCK = register(new BlockItem(builder(), Blocks.BEDROCK));
     public static final Item SAND = register(new BlockItem(builder(), Blocks.SAND));
@@ -123,7 +155,7 @@ public final class Items {
     public static final Item RAW_IRON_BLOCK = register(new BlockItem(builder(), Blocks.RAW_IRON_BLOCK));
     public static final Item RAW_COPPER_BLOCK = register(new BlockItem(builder(), Blocks.RAW_COPPER_BLOCK));
     public static final Item RAW_GOLD_BLOCK = register(new BlockItem(builder(), Blocks.RAW_GOLD_BLOCK));
-    public static final Item HEAVY_CORE = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.HEAVY_CORE));
+    public static final Item HEAVY_CORE = register(new BlockItem(builder(), Blocks.HEAVY_CORE));
     public static final Item AMETHYST_BLOCK = register(new BlockItem(builder(), Blocks.AMETHYST_BLOCK));
     public static final Item BUDDING_AMETHYST = register(new BlockItem(builder(), Blocks.BUDDING_AMETHYST));
     public static final Item IRON_BLOCK = register(new BlockItem(builder(), Blocks.IRON_BLOCK));
@@ -176,6 +208,7 @@ public final class Items {
     public static final Item JUNGLE_LOG = register(new BlockItem(builder(), Blocks.JUNGLE_LOG));
     public static final Item ACACIA_LOG = register(new BlockItem(builder(), Blocks.ACACIA_LOG));
     public static final Item CHERRY_LOG = register(new BlockItem(builder(), Blocks.CHERRY_LOG));
+    public static final Item PALE_OAK_LOG = register(new BlockItem(builder(), Blocks.PALE_OAK_LOG));
     public static final Item DARK_OAK_LOG = register(new BlockItem(builder(), Blocks.DARK_OAK_LOG));
     public static final Item MANGROVE_LOG = register(new BlockItem(builder(), Blocks.MANGROVE_LOG));
     public static final Item MANGROVE_ROOTS = register(new BlockItem(builder(), Blocks.MANGROVE_ROOTS));
@@ -190,6 +223,7 @@ public final class Items {
     public static final Item STRIPPED_ACACIA_LOG = register(new BlockItem(builder(), Blocks.STRIPPED_ACACIA_LOG));
     public static final Item STRIPPED_CHERRY_LOG = register(new BlockItem(builder(), Blocks.STRIPPED_CHERRY_LOG));
     public static final Item STRIPPED_DARK_OAK_LOG = register(new BlockItem(builder(), Blocks.STRIPPED_DARK_OAK_LOG));
+    public static final Item STRIPPED_PALE_OAK_LOG = register(new BlockItem(builder(), Blocks.STRIPPED_PALE_OAK_LOG));
     public static final Item STRIPPED_MANGROVE_LOG = register(new BlockItem(builder(), Blocks.STRIPPED_MANGROVE_LOG));
     public static final Item STRIPPED_CRIMSON_STEM = register(new BlockItem(builder(), Blocks.STRIPPED_CRIMSON_STEM));
     public static final Item STRIPPED_WARPED_STEM = register(new BlockItem(builder(), Blocks.STRIPPED_WARPED_STEM));
@@ -200,6 +234,7 @@ public final class Items {
     public static final Item STRIPPED_ACACIA_WOOD = register(new BlockItem(builder(), Blocks.STRIPPED_ACACIA_WOOD));
     public static final Item STRIPPED_CHERRY_WOOD = register(new BlockItem(builder(), Blocks.STRIPPED_CHERRY_WOOD));
     public static final Item STRIPPED_DARK_OAK_WOOD = register(new BlockItem(builder(), Blocks.STRIPPED_DARK_OAK_WOOD));
+    public static final Item STRIPPED_PALE_OAK_WOOD = register(new BlockItem(builder(), Blocks.STRIPPED_PALE_OAK_WOOD));
     public static final Item STRIPPED_MANGROVE_WOOD = register(new BlockItem(builder(), Blocks.STRIPPED_MANGROVE_WOOD));
     public static final Item STRIPPED_CRIMSON_HYPHAE = register(new BlockItem(builder(), Blocks.STRIPPED_CRIMSON_HYPHAE));
     public static final Item STRIPPED_WARPED_HYPHAE = register(new BlockItem(builder(), Blocks.STRIPPED_WARPED_HYPHAE));
@@ -210,6 +245,7 @@ public final class Items {
     public static final Item JUNGLE_WOOD = register(new BlockItem(builder(), Blocks.JUNGLE_WOOD));
     public static final Item ACACIA_WOOD = register(new BlockItem(builder(), Blocks.ACACIA_WOOD));
     public static final Item CHERRY_WOOD = register(new BlockItem(builder(), Blocks.CHERRY_WOOD));
+    public static final Item PALE_OAK_WOOD = register(new BlockItem(builder(), Blocks.PALE_OAK_WOOD));
     public static final Item DARK_OAK_WOOD = register(new BlockItem(builder(), Blocks.DARK_OAK_WOOD));
     public static final Item MANGROVE_WOOD = register(new BlockItem(builder(), Blocks.MANGROVE_WOOD));
     public static final Item CRIMSON_HYPHAE = register(new BlockItem(builder(), Blocks.CRIMSON_HYPHAE));
@@ -221,6 +257,7 @@ public final class Items {
     public static final Item ACACIA_LEAVES = register(new BlockItem(builder(), Blocks.ACACIA_LEAVES));
     public static final Item CHERRY_LEAVES = register(new BlockItem(builder(), Blocks.CHERRY_LEAVES));
     public static final Item DARK_OAK_LEAVES = register(new BlockItem(builder(), Blocks.DARK_OAK_LEAVES));
+    public static final Item PALE_OAK_LEAVES = register(new BlockItem(builder(), Blocks.PALE_OAK_LEAVES));
     public static final Item MANGROVE_LEAVES = register(new BlockItem(builder(), Blocks.MANGROVE_LEAVES));
     public static final Item AZALEA_LEAVES = register(new BlockItem(builder(), Blocks.AZALEA_LEAVES));
     public static final Item FLOWERING_AZALEA_LEAVES = register(new BlockItem(builder(), Blocks.FLOWERING_AZALEA_LEAVES));
@@ -283,9 +320,12 @@ public final class Items {
     public static final Item TWISTING_VINES = register(new BlockItem(builder(), Blocks.TWISTING_VINES));
     public static final Item SUGAR_CANE = register(new BlockItem(builder(), Blocks.SUGAR_CANE));
     public static final Item KELP = register(new BlockItem(builder(), Blocks.KELP));
-    public static final Item MOSS_CARPET = register(new BlockItem(builder(), Blocks.MOSS_CARPET));
     public static final Item PINK_PETALS = register(new BlockItem(builder(), Blocks.PINK_PETALS));
+    public static final Item MOSS_CARPET = register(new BlockItem(builder(), Blocks.MOSS_CARPET));
     public static final Item MOSS_BLOCK = register(new BlockItem(builder(), Blocks.MOSS_BLOCK));
+    public static final Item PALE_MOSS_CARPET = register(new BlockItem(builder(), Blocks.PALE_MOSS_CARPET));
+    public static final Item PALE_HANGING_MOSS = register(new BlockItem(builder(), Blocks.PALE_HANGING_MOSS));
+    public static final Item PALE_MOSS_BLOCK = register(new BlockItem(builder(), Blocks.PALE_MOSS_BLOCK));
     public static final Item HANGING_ROOTS = register(new BlockItem(builder(), Blocks.HANGING_ROOTS));
     public static final Item BIG_DRIPLEAF = register(new BlockItem(builder(), Blocks.BIG_DRIPLEAF, Blocks.BIG_DRIPLEAF_STEM));
     public static final Item SMALL_DRIPLEAF = register(new BlockItem(builder(), Blocks.SMALL_DRIPLEAF));
@@ -297,6 +337,7 @@ public final class Items {
     public static final Item ACACIA_SLAB = register(new BlockItem(builder(), Blocks.ACACIA_SLAB));
     public static final Item CHERRY_SLAB = register(new BlockItem(builder(), Blocks.CHERRY_SLAB));
     public static final Item DARK_OAK_SLAB = register(new BlockItem(builder(), Blocks.DARK_OAK_SLAB));
+    public static final Item PALE_OAK_SLAB = register(new BlockItem(builder(), Blocks.PALE_OAK_SLAB));
     public static final Item MANGROVE_SLAB = register(new BlockItem(builder(), Blocks.MANGROVE_SLAB));
     public static final Item BAMBOO_SLAB = register(new BlockItem(builder(), Blocks.BAMBOO_SLAB));
     public static final Item BAMBOO_MOSAIC_SLAB = register(new BlockItem(builder(), Blocks.BAMBOO_MOSAIC_SLAB));
@@ -337,6 +378,7 @@ public final class Items {
     public static final Item PURPUR_PILLAR = register(new BlockItem(builder(), Blocks.PURPUR_PILLAR));
     public static final Item PURPUR_STAIRS = register(new BlockItem(builder(), Blocks.PURPUR_STAIRS));
     public static final Item SPAWNER = register(new BlockItem(builder(), Blocks.SPAWNER));
+    public static final Item CREAKING_HEART = register(new BlockItem(builder(), Blocks.CREAKING_HEART));
     public static final Item CHEST = register(new BlockItem(builder(), Blocks.CHEST));
     public static final Item CRAFTING_TABLE = register(new BlockItem(builder(), Blocks.CRAFTING_TABLE));
     public static final Item FARMLAND = register(new BlockItem(builder(), Blocks.FARMLAND));
@@ -356,6 +398,7 @@ public final class Items {
     public static final Item ACACIA_FENCE = register(new BlockItem(builder(), Blocks.ACACIA_FENCE));
     public static final Item CHERRY_FENCE = register(new BlockItem(builder(), Blocks.CHERRY_FENCE));
     public static final Item DARK_OAK_FENCE = register(new BlockItem(builder(), Blocks.DARK_OAK_FENCE));
+    public static final Item PALE_OAK_FENCE = register(new BlockItem(builder(), Blocks.PALE_OAK_FENCE));
     public static final Item MANGROVE_FENCE = register(new BlockItem(builder(), Blocks.MANGROVE_FENCE));
     public static final Item BAMBOO_FENCE = register(new BlockItem(builder(), Blocks.BAMBOO_FENCE));
     public static final Item CRIMSON_FENCE = register(new BlockItem(builder(), Blocks.CRIMSON_FENCE));
@@ -417,7 +460,7 @@ public final class Items {
     public static final Item END_PORTAL_FRAME = register(new BlockItem(builder(), Blocks.END_PORTAL_FRAME));
     public static final Item END_STONE = register(new BlockItem(builder(), Blocks.END_STONE));
     public static final Item END_STONE_BRICKS = register(new BlockItem(builder(), Blocks.END_STONE_BRICKS));
-    public static final Item DRAGON_EGG = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.DRAGON_EGG));
+    public static final Item DRAGON_EGG = register(new BlockItem(builder(), Blocks.DRAGON_EGG));
     public static final Item SANDSTONE_STAIRS = register(new BlockItem(builder(), Blocks.SANDSTONE_STAIRS));
     public static final Item ENDER_CHEST = register(new BlockItem(builder(), Blocks.ENDER_CHEST));
     public static final Item EMERALD_BLOCK = register(new BlockItem(builder(), Blocks.EMERALD_BLOCK));
@@ -428,13 +471,14 @@ public final class Items {
     public static final Item ACACIA_STAIRS = register(new BlockItem(builder(), Blocks.ACACIA_STAIRS));
     public static final Item CHERRY_STAIRS = register(new BlockItem(builder(), Blocks.CHERRY_STAIRS));
     public static final Item DARK_OAK_STAIRS = register(new BlockItem(builder(), Blocks.DARK_OAK_STAIRS));
+    public static final Item PALE_OAK_STAIRS = register(new BlockItem(builder(), Blocks.PALE_OAK_STAIRS));
     public static final Item MANGROVE_STAIRS = register(new BlockItem(builder(), Blocks.MANGROVE_STAIRS));
     public static final Item BAMBOO_STAIRS = register(new BlockItem(builder(), Blocks.BAMBOO_STAIRS));
     public static final Item BAMBOO_MOSAIC_STAIRS = register(new BlockItem(builder(), Blocks.BAMBOO_MOSAIC_STAIRS));
     public static final Item CRIMSON_STAIRS = register(new BlockItem(builder(), Blocks.CRIMSON_STAIRS));
     public static final Item WARPED_STAIRS = register(new BlockItem(builder(), Blocks.WARPED_STAIRS));
-    public static final Item COMMAND_BLOCK = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.COMMAND_BLOCK));
-    public static final Item BEACON = register(new BlockItem(builder().rarity(Rarity.RARE), Blocks.BEACON));
+    public static final Item COMMAND_BLOCK = register(new BlockItem(builder(), Blocks.COMMAND_BLOCK));
+    public static final Item BEACON = register(new BlockItem(builder(), Blocks.BEACON));
     public static final Item COBBLESTONE_WALL = register(new BlockItem(builder(), Blocks.COBBLESTONE_WALL));
     public static final Item MOSSY_COBBLESTONE_WALL = register(new BlockItem(builder(), Blocks.MOSSY_COBBLESTONE_WALL));
     public static final Item BRICK_WALL = register(new BlockItem(builder(), Blocks.BRICK_WALL));
@@ -481,8 +525,8 @@ public final class Items {
     public static final Item GREEN_TERRACOTTA = register(new BlockItem(builder(), Blocks.GREEN_TERRACOTTA));
     public static final Item RED_TERRACOTTA = register(new BlockItem(builder(), Blocks.RED_TERRACOTTA));
     public static final Item BLACK_TERRACOTTA = register(new BlockItem(builder(), Blocks.BLACK_TERRACOTTA));
-    public static final Item BARRIER = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.BARRIER));
-    public static final Item LIGHT = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.LIGHT));
+    public static final Item BARRIER = register(new BlockItem(builder(), Blocks.BARRIER));
+    public static final Item LIGHT = register(new BlockItem(builder(), Blocks.LIGHT));
     public static final Item HAY_BLOCK = register(new BlockItem(builder(), Blocks.HAY_BLOCK));
     public static final Item WHITE_CARPET = register(new BlockItem(builder(), Blocks.WHITE_CARPET));
     public static final Item ORANGE_CARPET = register(new BlockItem(builder(), Blocks.ORANGE_CARPET));
@@ -552,14 +596,14 @@ public final class Items {
     public static final Item CHISELED_RED_SANDSTONE = register(new BlockItem(builder(), Blocks.CHISELED_RED_SANDSTONE));
     public static final Item CUT_RED_SANDSTONE = register(new BlockItem(builder(), Blocks.CUT_RED_SANDSTONE));
     public static final Item RED_SANDSTONE_STAIRS = register(new BlockItem(builder(), Blocks.RED_SANDSTONE_STAIRS));
-    public static final Item REPEATING_COMMAND_BLOCK = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.REPEATING_COMMAND_BLOCK));
-    public static final Item CHAIN_COMMAND_BLOCK = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.CHAIN_COMMAND_BLOCK));
+    public static final Item REPEATING_COMMAND_BLOCK = register(new BlockItem(builder(), Blocks.REPEATING_COMMAND_BLOCK));
+    public static final Item CHAIN_COMMAND_BLOCK = register(new BlockItem(builder(), Blocks.CHAIN_COMMAND_BLOCK));
     public static final Item MAGMA_BLOCK = register(new BlockItem(builder(), Blocks.MAGMA_BLOCK));
     public static final Item NETHER_WART_BLOCK = register(new BlockItem(builder(), Blocks.NETHER_WART_BLOCK));
     public static final Item WARPED_WART_BLOCK = register(new BlockItem(builder(), Blocks.WARPED_WART_BLOCK));
     public static final Item RED_NETHER_BRICKS = register(new BlockItem(builder(), Blocks.RED_NETHER_BRICKS));
     public static final Item BONE_BLOCK = register(new BlockItem(builder(), Blocks.BONE_BLOCK));
-    public static final Item STRUCTURE_VOID = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.STRUCTURE_VOID));
+    public static final Item STRUCTURE_VOID = register(new BlockItem(builder(), Blocks.STRUCTURE_VOID));
     public static final Item SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.SHULKER_BOX));
     public static final Item WHITE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.WHITE_SHULKER_BOX));
     public static final Item ORANGE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.ORANGE_SHULKER_BOX));
@@ -658,7 +702,7 @@ public final class Items {
     public static final Item DEAD_FIRE_CORAL_FAN = register(new BlockItem(builder(), Blocks.DEAD_FIRE_CORAL_FAN, Blocks.DEAD_FIRE_CORAL_WALL_FAN));
     public static final Item DEAD_HORN_CORAL_FAN = register(new BlockItem(builder(), Blocks.DEAD_HORN_CORAL_FAN, Blocks.DEAD_HORN_CORAL_WALL_FAN));
     public static final Item BLUE_ICE = register(new BlockItem(builder(), Blocks.BLUE_ICE));
-    public static final Item CONDUIT = register(new BlockItem(builder().rarity(Rarity.RARE), Blocks.CONDUIT));
+    public static final Item CONDUIT = register(new BlockItem(builder(), Blocks.CONDUIT));
     public static final Item POLISHED_GRANITE_STAIRS = register(new BlockItem(builder(), Blocks.POLISHED_GRANITE_STAIRS));
     public static final Item SMOOTH_RED_SANDSTONE_STAIRS = register(new BlockItem(builder(), Blocks.SMOOTH_RED_SANDSTONE_STAIRS));
     public static final Item MOSSY_STONE_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.MOSSY_STONE_BRICK_STAIRS));
@@ -729,6 +773,7 @@ public final class Items {
     public static final Item ACACIA_BUTTON = register(new BlockItem(builder(), Blocks.ACACIA_BUTTON));
     public static final Item CHERRY_BUTTON = register(new BlockItem(builder(), Blocks.CHERRY_BUTTON));
     public static final Item DARK_OAK_BUTTON = register(new BlockItem(builder(), Blocks.DARK_OAK_BUTTON));
+    public static final Item PALE_OAK_BUTTON = register(new BlockItem(builder(), Blocks.PALE_OAK_BUTTON));
     public static final Item MANGROVE_BUTTON = register(new BlockItem(builder(), Blocks.MANGROVE_BUTTON));
     public static final Item BAMBOO_BUTTON = register(new BlockItem(builder(), Blocks.BAMBOO_BUTTON));
     public static final Item CRIMSON_BUTTON = register(new BlockItem(builder(), Blocks.CRIMSON_BUTTON));
@@ -744,6 +789,7 @@ public final class Items {
     public static final Item ACACIA_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.ACACIA_PRESSURE_PLATE));
     public static final Item CHERRY_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.CHERRY_PRESSURE_PLATE));
     public static final Item DARK_OAK_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.DARK_OAK_PRESSURE_PLATE));
+    public static final Item PALE_OAK_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.PALE_OAK_PRESSURE_PLATE));
     public static final Item MANGROVE_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.MANGROVE_PRESSURE_PLATE));
     public static final Item BAMBOO_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.BAMBOO_PRESSURE_PLATE));
     public static final Item CRIMSON_PRESSURE_PLATE = register(new BlockItem(builder(), Blocks.CRIMSON_PRESSURE_PLATE));
@@ -756,6 +802,7 @@ public final class Items {
     public static final Item ACACIA_DOOR = register(new BlockItem(builder(), Blocks.ACACIA_DOOR));
     public static final Item CHERRY_DOOR = register(new BlockItem(builder(), Blocks.CHERRY_DOOR));
     public static final Item DARK_OAK_DOOR = register(new BlockItem(builder(), Blocks.DARK_OAK_DOOR));
+    public static final Item PALE_OAK_DOOR = register(new BlockItem(builder(), Blocks.PALE_OAK_DOOR));
     public static final Item MANGROVE_DOOR = register(new BlockItem(builder(), Blocks.MANGROVE_DOOR));
     public static final Item BAMBOO_DOOR = register(new BlockItem(builder(), Blocks.BAMBOO_DOOR));
     public static final Item CRIMSON_DOOR = register(new BlockItem(builder(), Blocks.CRIMSON_DOOR));
@@ -776,6 +823,7 @@ public final class Items {
     public static final Item ACACIA_TRAPDOOR = register(new BlockItem(builder(), Blocks.ACACIA_TRAPDOOR));
     public static final Item CHERRY_TRAPDOOR = register(new BlockItem(builder(), Blocks.CHERRY_TRAPDOOR));
     public static final Item DARK_OAK_TRAPDOOR = register(new BlockItem(builder(), Blocks.DARK_OAK_TRAPDOOR));
+    public static final Item PALE_OAK_TRAPDOOR = register(new BlockItem(builder(), Blocks.PALE_OAK_TRAPDOOR));
     public static final Item MANGROVE_TRAPDOOR = register(new BlockItem(builder(), Blocks.MANGROVE_TRAPDOOR));
     public static final Item BAMBOO_TRAPDOOR = register(new BlockItem(builder(), Blocks.BAMBOO_TRAPDOOR));
     public static final Item CRIMSON_TRAPDOOR = register(new BlockItem(builder(), Blocks.CRIMSON_TRAPDOOR));
@@ -795,6 +843,7 @@ public final class Items {
     public static final Item ACACIA_FENCE_GATE = register(new BlockItem(builder(), Blocks.ACACIA_FENCE_GATE));
     public static final Item CHERRY_FENCE_GATE = register(new BlockItem(builder(), Blocks.CHERRY_FENCE_GATE));
     public static final Item DARK_OAK_FENCE_GATE = register(new BlockItem(builder(), Blocks.DARK_OAK_FENCE_GATE));
+    public static final Item PALE_OAK_FENCE_GATE = register(new BlockItem(builder(), Blocks.PALE_OAK_FENCE_GATE));
     public static final Item MANGROVE_FENCE_GATE = register(new BlockItem(builder(), Blocks.MANGROVE_FENCE_GATE));
     public static final Item BAMBOO_FENCE_GATE = register(new BlockItem(builder(), Blocks.BAMBOO_FENCE_GATE));
     public static final Item CRIMSON_FENCE_GATE = register(new BlockItem(builder(), Blocks.CRIMSON_FENCE_GATE));
@@ -811,7 +860,8 @@ public final class Items {
     public static final Item HOPPER_MINECART = register(new Item("hopper_minecart", builder().stackSize(1)));
     public static final Item CARROT_ON_A_STICK = register(new Item("carrot_on_a_stick", builder().stackSize(1).maxDamage(25)));
     public static final Item WARPED_FUNGUS_ON_A_STICK = register(new Item("warped_fungus_on_a_stick", builder().stackSize(1).maxDamage(100)));
-    public static final Item ELYTRA = register(new ElytraItem("elytra", builder().stackSize(1).maxDamage(432).rarity(Rarity.UNCOMMON)));
+    public static final Item PHANTOM_MEMBRANE = register(new Item("phantom_membrane", builder()));
+    public static final Item ELYTRA = register(new ElytraItem("elytra", builder().stackSize(1).maxDamage(432)));
     public static final Item OAK_BOAT = register(new BoatItem("oak_boat", builder().stackSize(1)));
     public static final Item OAK_CHEST_BOAT = register(new BoatItem("oak_chest_boat", builder().stackSize(1)));
     public static final Item SPRUCE_BOAT = register(new BoatItem("spruce_boat", builder().stackSize(1)));
@@ -826,12 +876,14 @@ public final class Items {
     public static final Item CHERRY_CHEST_BOAT = register(new BoatItem("cherry_chest_boat", builder().stackSize(1)));
     public static final Item DARK_OAK_BOAT = register(new BoatItem("dark_oak_boat", builder().stackSize(1)));
     public static final Item DARK_OAK_CHEST_BOAT = register(new BoatItem("dark_oak_chest_boat", builder().stackSize(1)));
+    public static final Item PALE_OAK_BOAT = register(new BoatItem("pale_oak_boat", builder().stackSize(1)));
+    public static final Item PALE_OAK_CHEST_BOAT = register(new BoatItem("pale_oak_chest_boat", builder().stackSize(1)));
     public static final Item MANGROVE_BOAT = register(new BoatItem("mangrove_boat", builder().stackSize(1)));
     public static final Item MANGROVE_CHEST_BOAT = register(new BoatItem("mangrove_chest_boat", builder().stackSize(1)));
     public static final Item BAMBOO_RAFT = register(new BoatItem("bamboo_raft", builder().stackSize(1)));
     public static final Item BAMBOO_CHEST_RAFT = register(new BoatItem("bamboo_chest_raft", builder().stackSize(1)));
-    public static final Item STRUCTURE_BLOCK = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.STRUCTURE_BLOCK));
-    public static final Item JIGSAW = register(new BlockItem(builder().rarity(Rarity.EPIC), Blocks.JIGSAW));
+    public static final Item STRUCTURE_BLOCK = register(new BlockItem(builder(), Blocks.STRUCTURE_BLOCK));
+    public static final Item JIGSAW = register(new BlockItem(builder(), Blocks.JIGSAW));
     public static final Item TURTLE_HELMET = register(new ArmorItem("turtle_helmet", ArmorMaterial.TURTLE, builder().stackSize(1).maxDamage(275)));
     public static final Item TURTLE_SCUTE = register(new Item("turtle_scute", builder()));
     public static final Item ARMADILLO_SCUTE = register(new Item("armadillo_scute", builder()));
@@ -922,8 +974,8 @@ public final class Items {
     public static final Item PORKCHOP = register(new Item("porkchop", builder()));
     public static final Item COOKED_PORKCHOP = register(new Item("cooked_porkchop", builder()));
     public static final Item PAINTING = register(new Item("painting", builder()));
-    public static final Item GOLDEN_APPLE = register(new Item("golden_apple", builder().rarity(Rarity.RARE)));
-    public static final Item ENCHANTED_GOLDEN_APPLE = register(new Item("enchanted_golden_apple", builder().rarity(Rarity.EPIC)));
+    public static final Item GOLDEN_APPLE = register(new Item("golden_apple", builder()));
+    public static final Item ENCHANTED_GOLDEN_APPLE = register(new Item("enchanted_golden_apple", builder()));
     public static final Item OAK_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.OAK_SIGN, Blocks.OAK_WALL_SIGN));
     public static final Item SPRUCE_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.SPRUCE_SIGN, Blocks.SPRUCE_WALL_SIGN));
     public static final Item BIRCH_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BIRCH_SIGN, Blocks.BIRCH_WALL_SIGN));
@@ -931,6 +983,7 @@ public final class Items {
     public static final Item ACACIA_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.ACACIA_SIGN, Blocks.ACACIA_WALL_SIGN));
     public static final Item CHERRY_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CHERRY_SIGN, Blocks.CHERRY_WALL_SIGN));
     public static final Item DARK_OAK_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.DARK_OAK_SIGN, Blocks.DARK_OAK_WALL_SIGN));
+    public static final Item PALE_OAK_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.PALE_OAK_SIGN, Blocks.PALE_OAK_WALL_SIGN));
     public static final Item MANGROVE_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.MANGROVE_SIGN, Blocks.MANGROVE_WALL_SIGN));
     public static final Item BAMBOO_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BAMBOO_SIGN, Blocks.BAMBOO_WALL_SIGN));
     public static final Item CRIMSON_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CRIMSON_SIGN, Blocks.CRIMSON_WALL_SIGN));
@@ -942,6 +995,7 @@ public final class Items {
     public static final Item ACACIA_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN));
     public static final Item CHERRY_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN));
     public static final Item DARK_OAK_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN));
+    public static final Item PALE_OAK_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN));
     public static final Item MANGROVE_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.MANGROVE_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN));
     public static final Item BAMBOO_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN));
     public static final Item CRIMSON_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN));
@@ -969,6 +1023,22 @@ public final class Items {
     public static final Item COMPASS = register(new CompassItem("compass", builder()));
     public static final Item RECOVERY_COMPASS = register(new Item("recovery_compass", builder()));
     public static final Item BUNDLE = register(new Item("bundle", builder().stackSize(1)));
+    public static final Item WHITE_BUNDLE = register(new Item("white_bundle", builder().stackSize(1)));
+    public static final Item ORANGE_BUNDLE = register(new Item("orange_bundle", builder().stackSize(1)));
+    public static final Item MAGENTA_BUNDLE = register(new Item("magenta_bundle", builder().stackSize(1)));
+    public static final Item LIGHT_BLUE_BUNDLE = register(new Item("light_blue_bundle", builder().stackSize(1)));
+    public static final Item YELLOW_BUNDLE = register(new Item("yellow_bundle", builder().stackSize(1)));
+    public static final Item LIME_BUNDLE = register(new Item("lime_bundle", builder().stackSize(1)));
+    public static final Item PINK_BUNDLE = register(new Item("pink_bundle", builder().stackSize(1)));
+    public static final Item GRAY_BUNDLE = register(new Item("gray_bundle", builder().stackSize(1)));
+    public static final Item LIGHT_GRAY_BUNDLE = register(new Item("light_gray_bundle", builder().stackSize(1)));
+    public static final Item CYAN_BUNDLE = register(new Item("cyan_bundle", builder().stackSize(1)));
+    public static final Item PURPLE_BUNDLE = register(new Item("purple_bundle", builder().stackSize(1)));
+    public static final Item BLUE_BUNDLE = register(new Item("blue_bundle", builder().stackSize(1)));
+    public static final Item BROWN_BUNDLE = register(new Item("brown_bundle", builder().stackSize(1)));
+    public static final Item GREEN_BUNDLE = register(new Item("green_bundle", builder().stackSize(1)));
+    public static final Item RED_BUNDLE = register(new Item("red_bundle", builder().stackSize(1)));
+    public static final Item BLACK_BUNDLE = register(new Item("black_bundle", builder().stackSize(1)));
     public static final Item FISHING_ROD = register(new FishingRodItem("fishing_rod", builder().stackSize(1).maxDamage(64)));
     public static final Item CLOCK = register(new Item("clock", builder()));
     public static final Item SPYGLASS = register(new Item("spyglass", builder().stackSize(1)));
@@ -1036,14 +1106,14 @@ public final class Items {
     public static final Item GHAST_TEAR = register(new Item("ghast_tear", builder()));
     public static final Item GOLD_NUGGET = register(new Item("gold_nugget", builder()));
     public static final Item NETHER_WART = register(new BlockItem(builder(), Blocks.NETHER_WART));
-    public static final Item POTION = register(new PotionItem("potion", builder().stackSize(1)));
     public static final Item GLASS_BOTTLE = register(new Item("glass_bottle", builder()));
+    public static final Item POTION = register(new PotionItem("potion", builder().stackSize(1)));
     public static final Item SPIDER_EYE = register(new Item("spider_eye", builder()));
     public static final Item FERMENTED_SPIDER_EYE = register(new Item("fermented_spider_eye", builder()));
     public static final Item BLAZE_POWDER = register(new Item("blaze_powder", builder()));
     public static final Item MAGMA_CREAM = register(new Item("magma_cream", builder()));
     public static final Item BREWING_STAND = register(new BlockItem(builder(), Blocks.BREWING_STAND));
-    public static final Item CAULDRON = register(new BlockItem(builder(), Blocks.CAULDRON, Blocks.WATER_CAULDRON, Blocks.POWDER_SNOW_CAULDRON, Blocks.LAVA_CAULDRON));
+    public static final Item CAULDRON = register(new BlockItem(builder(), Blocks.CAULDRON, Blocks.LAVA_CAULDRON, Blocks.WATER_CAULDRON, Blocks.POWDER_SNOW_CAULDRON));
     public static final Item ENDER_EYE = register(new Item("ender_eye", builder()));
     public static final Item GLISTERING_MELON_SLICE = register(new Item("glistering_melon_slice", builder()));
     public static final Item ARMADILLO_SPAWN_EGG = register(new SpawnEggItem("armadillo_spawn_egg", builder()));
@@ -1122,16 +1192,18 @@ public final class Items {
     public static final Item WITHER_SKELETON_SPAWN_EGG = register(new SpawnEggItem("wither_skeleton_spawn_egg", builder()));
     public static final Item WOLF_SPAWN_EGG = register(new SpawnEggItem("wolf_spawn_egg", builder()));
     public static final Item ZOGLIN_SPAWN_EGG = register(new SpawnEggItem("zoglin_spawn_egg", builder()));
+    public static final Item CREAKING_SPAWN_EGG = register(new SpawnEggItem("creaking_spawn_egg", builder()));
     public static final Item ZOMBIE_SPAWN_EGG = register(new SpawnEggItem("zombie_spawn_egg", builder()));
     public static final Item ZOMBIE_HORSE_SPAWN_EGG = register(new SpawnEggItem("zombie_horse_spawn_egg", builder()));
     public static final Item ZOMBIE_VILLAGER_SPAWN_EGG = register(new SpawnEggItem("zombie_villager_spawn_egg", builder()));
     public static final Item ZOMBIFIED_PIGLIN_SPAWN_EGG = register(new SpawnEggItem("zombified_piglin_spawn_egg", builder()));
-    public static final Item EXPERIENCE_BOTTLE = register(new Item("experience_bottle", builder().rarity(Rarity.UNCOMMON)));
+    public static final Item EXPERIENCE_BOTTLE = register(new Item("experience_bottle", builder()));
     public static final Item FIRE_CHARGE = register(new Item("fire_charge", builder()));
     public static final Item WIND_CHARGE = register(new Item("wind_charge", builder()));
     public static final Item WRITABLE_BOOK = register(new WritableBookItem("writable_book", builder().stackSize(1)));
     public static final Item WRITTEN_BOOK = register(new WrittenBookItem("written_book", builder().stackSize(16)));
-    public static final Item MACE = register(new MaceItem("mace", builder().stackSize(1).maxDamage(500).rarity(Rarity.EPIC)));
+    public static final Item BREEZE_ROD = register(new Item("breeze_rod", builder()));
+    public static final Item MACE = register(new MaceItem("mace", builder().stackSize(1).maxDamage(500)));
     public static final Item ITEM_FRAME = register(new Item("item_frame", builder()));
     public static final Item GLOW_ITEM_FRAME = register(new Item("glow_item_frame", builder()));
     public static final Item FLOWER_POT = register(new BlockItem(builder(), Blocks.FLOWER_POT));
@@ -1141,18 +1213,18 @@ public final class Items {
     public static final Item POISONOUS_POTATO = register(new Item("poisonous_potato", builder()));
     public static final Item MAP = register(new MapItem("map", builder()));
     public static final Item GOLDEN_CARROT = register(new Item("golden_carrot", builder()));
-    public static final Item SKELETON_SKULL = register(new BlockItem(builder().rarity(Rarity.UNCOMMON), Blocks.SKELETON_SKULL, Blocks.SKELETON_WALL_SKULL));
-    public static final Item WITHER_SKELETON_SKULL = register(new BlockItem(builder().rarity(Rarity.UNCOMMON), Blocks.WITHER_SKELETON_SKULL, Blocks.WITHER_SKELETON_WALL_SKULL));
-    public static final Item PLAYER_HEAD = register(new PlayerHeadItem(builder().rarity(Rarity.UNCOMMON), Blocks.PLAYER_HEAD, Blocks.PLAYER_WALL_HEAD));
-    public static final Item ZOMBIE_HEAD = register(new BlockItem(builder().rarity(Rarity.UNCOMMON), Blocks.ZOMBIE_HEAD, Blocks.ZOMBIE_WALL_HEAD));
-    public static final Item CREEPER_HEAD = register(new BlockItem(builder().rarity(Rarity.UNCOMMON), Blocks.CREEPER_HEAD, Blocks.CREEPER_WALL_HEAD));
-    public static final Item DRAGON_HEAD = register(new BlockItem(builder().rarity(Rarity.UNCOMMON), Blocks.DRAGON_HEAD, Blocks.DRAGON_WALL_HEAD));
-    public static final Item PIGLIN_HEAD = register(new BlockItem(builder().rarity(Rarity.UNCOMMON), Blocks.PIGLIN_HEAD, Blocks.PIGLIN_WALL_HEAD));
-    public static final Item NETHER_STAR = register(new Item("nether_star", builder().rarity(Rarity.UNCOMMON)));
+    public static final Item SKELETON_SKULL = register(new BlockItem(builder(), Blocks.SKELETON_SKULL, Blocks.SKELETON_WALL_SKULL));
+    public static final Item WITHER_SKELETON_SKULL = register(new BlockItem(builder(), Blocks.WITHER_SKELETON_SKULL, Blocks.WITHER_SKELETON_WALL_SKULL));
+    public static final Item PLAYER_HEAD = register(new PlayerHeadItem(builder(), Blocks.PLAYER_HEAD, Blocks.PLAYER_WALL_HEAD));
+    public static final Item ZOMBIE_HEAD = register(new BlockItem(builder(), Blocks.ZOMBIE_HEAD, Blocks.ZOMBIE_WALL_HEAD));
+    public static final Item CREEPER_HEAD = register(new BlockItem(builder(), Blocks.CREEPER_HEAD, Blocks.CREEPER_WALL_HEAD));
+    public static final Item DRAGON_HEAD = register(new BlockItem(builder(), Blocks.DRAGON_HEAD, Blocks.DRAGON_WALL_HEAD));
+    public static final Item PIGLIN_HEAD = register(new BlockItem(builder(), Blocks.PIGLIN_HEAD, Blocks.PIGLIN_WALL_HEAD));
+    public static final Item NETHER_STAR = register(new Item("nether_star", builder()));
     public static final Item PUMPKIN_PIE = register(new Item("pumpkin_pie", builder()));
     public static final Item FIREWORK_ROCKET = register(new FireworkRocketItem("firework_rocket", builder()));
     public static final Item FIREWORK_STAR = register(new FireworkStarItem("firework_star", builder()));
-    public static final Item ENCHANTED_BOOK = register(new EnchantedBookItem("enchanted_book", builder().stackSize(1).rarity(Rarity.UNCOMMON)));
+    public static final Item ENCHANTED_BOOK = register(new EnchantedBookItem("enchanted_book", builder().stackSize(1)));
     public static final Item NETHER_BRICK = register(new Item("nether_brick", builder()));
     public static final Item PRISMARINE_SHARD = register(new Item("prismarine_shard", builder()));
     public static final Item PRISMARINE_CRYSTALS = register(new Item("prismarine_crystals", builder()));
@@ -1162,13 +1234,13 @@ public final class Items {
     public static final Item RABBIT_FOOT = register(new Item("rabbit_foot", builder()));
     public static final Item RABBIT_HIDE = register(new Item("rabbit_hide", builder()));
     public static final Item ARMOR_STAND = register(new Item("armor_stand", builder().stackSize(16)));
-    public static final Item IRON_HORSE_ARMOR = register(new ArmorItem("iron_horse_armor", ArmorMaterial.IRON, builder().stackSize(1)));
-    public static final Item GOLDEN_HORSE_ARMOR = register(new ArmorItem("golden_horse_armor", ArmorMaterial.GOLD, builder().stackSize(1)));
-    public static final Item DIAMOND_HORSE_ARMOR = register(new ArmorItem("diamond_horse_armor", ArmorMaterial.DIAMOND, builder().stackSize(1)));
-    public static final Item LEATHER_HORSE_ARMOR = register(new DyeableArmorItem("leather_horse_armor", ArmorMaterial.LEATHER, builder().stackSize(1)));
+    public static final Item IRON_HORSE_ARMOR = register(new Item("iron_horse_armor", builder().stackSize(1)));
+    public static final Item GOLDEN_HORSE_ARMOR = register(new Item("golden_horse_armor", builder().stackSize(1)));
+    public static final Item DIAMOND_HORSE_ARMOR = register(new Item("diamond_horse_armor", builder().stackSize(1)));
+    public static final Item LEATHER_HORSE_ARMOR = register(new Item("leather_horse_armor", builder().stackSize(1)));
     public static final Item LEAD = register(new Item("lead", builder()));
     public static final Item NAME_TAG = register(new Item("name_tag", builder()));
-    public static final Item COMMAND_BLOCK_MINECART = register(new Item("command_block_minecart", builder().stackSize(1).rarity(Rarity.EPIC)));
+    public static final Item COMMAND_BLOCK_MINECART = register(new Item("command_block_minecart", builder().stackSize(1)));
     public static final Item MUTTON = register(new Item("mutton", builder()));
     public static final Item COOKED_MUTTON = register(new Item("cooked_mutton", builder()));
     public static final Item WHITE_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.WHITE_BANNER, Blocks.WHITE_WALL_BANNER));
@@ -1187,7 +1259,7 @@ public final class Items {
     public static final Item GREEN_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.GREEN_BANNER, Blocks.GREEN_WALL_BANNER));
     public static final Item RED_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.RED_BANNER, Blocks.RED_WALL_BANNER));
     public static final Item BLACK_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.BLACK_BANNER, Blocks.BLACK_WALL_BANNER));
-    public static final Item END_CRYSTAL = register(new Item("end_crystal", builder().rarity(Rarity.RARE)));
+    public static final Item END_CRYSTAL = register(new Item("end_crystal", builder()));
     public static final Item CHORUS_FRUIT = register(new Item("chorus_fruit", builder()));
     public static final Item POPPED_CHORUS_FRUIT = register(new Item("popped_chorus_fruit", builder()));
     public static final Item TORCHFLOWER_SEEDS = register(new BlockItem("torchflower_seeds", builder(), Blocks.TORCHFLOWER_CROP));
@@ -1195,52 +1267,53 @@ public final class Items {
     public static final Item BEETROOT = register(new Item("beetroot", builder()));
     public static final Item BEETROOT_SEEDS = register(new BlockItem("beetroot_seeds", builder(), Blocks.BEETROOTS));
     public static final Item BEETROOT_SOUP = register(new Item("beetroot_soup", builder().stackSize(1)));
-    public static final Item DRAGON_BREATH = register(new Item("dragon_breath", builder().rarity(Rarity.UNCOMMON)));
+    public static final Item DRAGON_BREATH = register(new Item("dragon_breath", builder()));
     public static final Item SPLASH_POTION = register(new PotionItem("splash_potion", builder().stackSize(1)));
     public static final Item SPECTRAL_ARROW = register(new Item("spectral_arrow", builder()));
     public static final Item TIPPED_ARROW = register(new TippedArrowItem("tipped_arrow", builder()));
     public static final Item LINGERING_POTION = register(new PotionItem("lingering_potion", builder().stackSize(1)));
     public static final Item SHIELD = register(new ShieldItem("shield", builder().stackSize(1).maxDamage(336)));
-    public static final Item TOTEM_OF_UNDYING = register(new Item("totem_of_undying", builder().stackSize(1).rarity(Rarity.UNCOMMON)));
+    public static final Item TOTEM_OF_UNDYING = register(new Item("totem_of_undying", builder().stackSize(1)));
     public static final Item SHULKER_SHELL = register(new Item("shulker_shell", builder()));
     public static final Item IRON_NUGGET = register(new Item("iron_nugget", builder()));
-    public static final Item KNOWLEDGE_BOOK = register(new Item("knowledge_book", builder().stackSize(1).rarity(Rarity.EPIC)));
-    public static final Item DEBUG_STICK = register(new Item("debug_stick", builder().stackSize(1).rarity(Rarity.EPIC).glint(true)));
-    public static final Item MUSIC_DISC_13 = register(new Item("music_disc_13", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_CAT = register(new Item("music_disc_cat", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_BLOCKS = register(new Item("music_disc_blocks", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_CHIRP = register(new Item("music_disc_chirp", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_CREATOR = register(new Item("music_disc_creator", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_CREATOR_MUSIC_BOX = register(new Item("music_disc_creator_music_box", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_FAR = register(new Item("music_disc_far", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_MALL = register(new Item("music_disc_mall", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_MELLOHI = register(new Item("music_disc_mellohi", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_STAL = register(new Item("music_disc_stal", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_STRAD = register(new Item("music_disc_strad", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_WARD = register(new Item("music_disc_ward", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_11 = register(new Item("music_disc_11", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_WAIT = register(new Item("music_disc_wait", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_OTHERSIDE = register(new Item("music_disc_otherside", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_RELIC = register(new Item("music_disc_relic", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_5 = register(new Item("music_disc_5", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_PIGSTEP = register(new Item("music_disc_pigstep", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item MUSIC_DISC_PRECIPICE = register(new Item("music_disc_precipice", builder().stackSize(1).rarity(Rarity.RARE)));
+    public static final Item KNOWLEDGE_BOOK = register(new Item("knowledge_book", builder().stackSize(1)));
+    public static final Item DEBUG_STICK = register(new Item("debug_stick", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_13 = register(new Item("music_disc_13", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_CAT = register(new Item("music_disc_cat", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_BLOCKS = register(new Item("music_disc_blocks", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_CHIRP = register(new Item("music_disc_chirp", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_CREATOR = register(new Item("music_disc_creator", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_CREATOR_MUSIC_BOX = register(new Item("music_disc_creator_music_box", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_FAR = register(new Item("music_disc_far", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_MALL = register(new Item("music_disc_mall", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_MELLOHI = register(new Item("music_disc_mellohi", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_STAL = register(new Item("music_disc_stal", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_STRAD = register(new Item("music_disc_strad", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_WARD = register(new Item("music_disc_ward", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_11 = register(new Item("music_disc_11", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_WAIT = register(new Item("music_disc_wait", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_OTHERSIDE = register(new Item("music_disc_otherside", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_RELIC = register(new Item("music_disc_relic", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_5 = register(new Item("music_disc_5", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_PIGSTEP = register(new Item("music_disc_pigstep", builder().stackSize(1)));
+    public static final Item MUSIC_DISC_PRECIPICE = register(new Item("music_disc_precipice", builder().stackSize(1)));
     public static final Item DISC_FRAGMENT_5 = register(new Item("disc_fragment_5", builder()));
-    public static final Item TRIDENT = register(new Item("trident", builder().stackSize(1).maxDamage(250).attackDamage(9.0).rarity(Rarity.EPIC)));
-    public static final Item PHANTOM_MEMBRANE = register(new Item("phantom_membrane", builder()));
+    public static final Item TRIDENT = register(new Item("trident", builder().stackSize(1).maxDamage(250).attackDamage(9.0)));
     public static final Item NAUTILUS_SHELL = register(new Item("nautilus_shell", builder()));
-    public static final Item HEART_OF_THE_SEA = register(new Item("heart_of_the_sea", builder().rarity(Rarity.UNCOMMON)));
+    public static final Item HEART_OF_THE_SEA = register(new Item("heart_of_the_sea", builder()));
     public static final Item CROSSBOW = register(new CrossbowItem("crossbow", builder().stackSize(1).maxDamage(465)));
     public static final Item SUSPICIOUS_STEW = register(new Item("suspicious_stew", builder().stackSize(1)));
     public static final Item LOOM = register(new BlockItem(builder(), Blocks.LOOM));
     public static final Item FLOWER_BANNER_PATTERN = register(new Item("flower_banner_pattern", builder().stackSize(1)));
-    public static final Item CREEPER_BANNER_PATTERN = register(new Item("creeper_banner_pattern", builder().stackSize(1).rarity(Rarity.UNCOMMON)));
-    public static final Item SKULL_BANNER_PATTERN = register(new Item("skull_banner_pattern", builder().stackSize(1).rarity(Rarity.UNCOMMON)));
-    public static final Item MOJANG_BANNER_PATTERN = register(new Item("mojang_banner_pattern", builder().stackSize(1).rarity(Rarity.EPIC)));
+    public static final Item CREEPER_BANNER_PATTERN = register(new Item("creeper_banner_pattern", builder().stackSize(1)));
+    public static final Item SKULL_BANNER_PATTERN = register(new Item("skull_banner_pattern", builder().stackSize(1)));
+    public static final Item MOJANG_BANNER_PATTERN = register(new Item("mojang_banner_pattern", builder().stackSize(1)));
     public static final Item GLOBE_BANNER_PATTERN = register(new Item("globe_banner_pattern", builder().stackSize(1)));
-    public static final Item PIGLIN_BANNER_PATTERN = register(new Item("piglin_banner_pattern", builder().stackSize(1).rarity(Rarity.UNCOMMON)));
-    public static final Item FLOW_BANNER_PATTERN = register(new Item("flow_banner_pattern", builder().stackSize(1).rarity(Rarity.RARE)));
-    public static final Item GUSTER_BANNER_PATTERN = register(new Item("guster_banner_pattern", builder().stackSize(1).rarity(Rarity.RARE)));
+    public static final Item PIGLIN_BANNER_PATTERN = register(new Item("piglin_banner_pattern", builder().stackSize(1)));
+    public static final Item FLOW_BANNER_PATTERN = register(new Item("flow_banner_pattern", builder().stackSize(1)));
+    public static final Item GUSTER_BANNER_PATTERN = register(new Item("guster_banner_pattern", builder().stackSize(1)));
+    public static final Item FIELD_MASONED_BANNER_PATTERN = register(new Item("field_masoned_banner_pattern", builder().stackSize(1)));
+    public static final Item BORDURE_INDENTED_BANNER_PATTERN = register(new Item("bordure_indented_banner_pattern", builder().stackSize(1)));
     public static final Item GOAT_HORN = register(new GoatHornItem("goat_horn", builder().stackSize(1)));
     public static final Item COMPOSTER = register(new BlockItem(builder(), Blocks.COMPOSTER));
     public static final Item BARREL = register(new BlockItem(builder(), Blocks.BARREL));
@@ -1369,8 +1442,7 @@ public final class Items {
     public static final Item TRIAL_KEY = register(new Item("trial_key", builder()));
     public static final Item OMINOUS_TRIAL_KEY = register(new Item("ominous_trial_key", builder()));
     public static final Item VAULT = register(new BlockItem(builder(), Blocks.VAULT));
-    public static final Item OMINOUS_BOTTLE = register(new OminousBottleItem("ominous_bottle", builder()));
-    public static final Item BREEZE_ROD = register(new Item("breeze_rod", builder()));
+    public static final Item OMINOUS_BOTTLE = register(new Item("ominous_bottle", builder()));
 
     public static final int AIR_ID = AIR.javaId();
 
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java b/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java
index 735c1f6c4..5db38c559 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java
@@ -49,11 +49,11 @@ public final class Blocks {
     public static final Block ANDESITE = register(new Block("andesite", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block POLISHED_ANDESITE = register(new Block("polished_andesite", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block GRASS_BLOCK = register(new Block("grass_block", builder().destroyTime(0.6f)
-            .booleanState(SNOWY)));
+        .booleanState(SNOWY)));
     public static final Block DIRT = register(new Block("dirt", builder().destroyTime(0.5f)));
     public static final Block COARSE_DIRT = register(new Block("coarse_dirt", builder().destroyTime(0.5f)));
     public static final Block PODZOL = register(new Block("podzol", builder().destroyTime(0.5f)
-            .booleanState(SNOWY)));
+        .booleanState(SNOWY)));
     public static final Block COBBLESTONE = register(new Block("cobblestone", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block OAK_PLANKS = register(new Block("oak_planks", builder().destroyTime(2.0f)));
     public static final Block SPRUCE_PLANKS = register(new Block("spruce_planks", builder().destroyTime(2.0f)));
@@ -62,40 +62,45 @@ public final class Blocks {
     public static final Block ACACIA_PLANKS = register(new Block("acacia_planks", builder().destroyTime(2.0f)));
     public static final Block CHERRY_PLANKS = register(new Block("cherry_planks", builder().destroyTime(2.0f)));
     public static final Block DARK_OAK_PLANKS = register(new Block("dark_oak_planks", builder().destroyTime(2.0f)));
+    public static final Block PALE_OAK_WOOD = register(new Block("pale_oak_wood", builder().destroyTime(2.0f)
+        .enumState(AXIS, Axis.VALUES)));
+    public static final Block PALE_OAK_PLANKS = register(new Block("pale_oak_planks", builder().destroyTime(2.0f)));
     public static final Block MANGROVE_PLANKS = register(new Block("mangrove_planks", builder().destroyTime(2.0f)));
     public static final Block BAMBOO_PLANKS = register(new Block("bamboo_planks", builder().destroyTime(2.0f)));
     public static final Block BAMBOO_MOSAIC = register(new Block("bamboo_mosaic", builder().destroyTime(2.0f)));
     public static final Block OAK_SAPLING = register(new Block("oak_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
     public static final Block SPRUCE_SAPLING = register(new Block("spruce_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
     public static final Block BIRCH_SAPLING = register(new Block("birch_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
     public static final Block JUNGLE_SAPLING = register(new Block("jungle_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
     public static final Block ACACIA_SAPLING = register(new Block("acacia_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
     public static final Block CHERRY_SAPLING = register(new Block("cherry_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
     public static final Block DARK_OAK_SAPLING = register(new Block("dark_oak_sapling", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(STAGE)));
+        .intState(STAGE)));
+    public static final Block PALE_OAK_SAPLING = register(new Block("pale_oak_sapling", builder().pushReaction(PistonBehavior.DESTROY)
+        .intState(STAGE)));
     public static final Block MANGROVE_PROPAGULE = register(new Block("mangrove_propagule", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_4)
-            .booleanState(HANGING)
-            .intState(STAGE)
-            .booleanState(WATERLOGGED)));
+        .intState(AGE_4)
+        .booleanState(HANGING)
+        .intState(STAGE)
+        .booleanState(WATERLOGGED)));
     public static final Block BEDROCK = register(new Block("bedrock", builder().destroyTime(-1.0f)));
     public static final Block WATER = register(new WaterBlock("water", builder().destroyTime(100.0f).pushReaction(PistonBehavior.DESTROY)
-            .intState(LEVEL)));
+        .intState(LEVEL)));
     public static final Block LAVA = register(new Block("lava", builder().destroyTime(100.0f).pushReaction(PistonBehavior.DESTROY)
-            .intState(LEVEL)));
+        .intState(LEVEL)));
     public static final Block SAND = register(new Block("sand", builder().destroyTime(0.5f)));
     public static final Block SUSPICIOUS_SAND = register(new Block("suspicious_sand", builder().setBlockEntity(BlockEntityType.BRUSHABLE_BLOCK).destroyTime(0.25f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DUSTED)));
+        .intState(DUSTED)));
     public static final Block RED_SAND = register(new Block("red_sand", builder().destroyTime(0.5f)));
     public static final Block GRAVEL = register(new Block("gravel", builder().destroyTime(0.6f)));
     public static final Block SUSPICIOUS_GRAVEL = register(new Block("suspicious_gravel", builder().setBlockEntity(BlockEntityType.BRUSHABLE_BLOCK).destroyTime(0.25f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DUSTED)));
+        .intState(DUSTED)));
     public static final Block GOLD_ORE = register(new Block("gold_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block DEEPSLATE_GOLD_ORE = register(new Block("deepslate_gold_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)));
     public static final Block IRON_ORE = register(new Block("iron_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
@@ -104,117 +109,127 @@ public final class Blocks {
     public static final Block DEEPSLATE_COAL_ORE = register(new Block("deepslate_coal_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)));
     public static final Block NETHER_GOLD_ORE = register(new Block("nether_gold_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block OAK_LOG = register(new Block("oak_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block SPRUCE_LOG = register(new Block("spruce_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block BIRCH_LOG = register(new Block("birch_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block JUNGLE_LOG = register(new Block("jungle_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block ACACIA_LOG = register(new Block("acacia_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block CHERRY_LOG = register(new Block("cherry_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block DARK_OAK_LOG = register(new Block("dark_oak_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
+    public static final Block PALE_OAK_LOG = register(new Block("pale_oak_log", builder().destroyTime(2.0f)
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block MANGROVE_LOG = register(new Block("mangrove_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block MANGROVE_ROOTS = register(new Block("mangrove_roots", builder().destroyTime(0.7f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block MUDDY_MANGROVE_ROOTS = register(new Block("muddy_mangrove_roots", builder().destroyTime(0.7f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block BAMBOO_BLOCK = register(new Block("bamboo_block", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_SPRUCE_LOG = register(new Block("stripped_spruce_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_BIRCH_LOG = register(new Block("stripped_birch_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_JUNGLE_LOG = register(new Block("stripped_jungle_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_ACACIA_LOG = register(new Block("stripped_acacia_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_CHERRY_LOG = register(new Block("stripped_cherry_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_DARK_OAK_LOG = register(new Block("stripped_dark_oak_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
+    public static final Block STRIPPED_PALE_OAK_LOG = register(new Block("stripped_pale_oak_log", builder().destroyTime(2.0f)
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_OAK_LOG = register(new Block("stripped_oak_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_MANGROVE_LOG = register(new Block("stripped_mangrove_log", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_BAMBOO_BLOCK = register(new Block("stripped_bamboo_block", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block OAK_WOOD = register(new Block("oak_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block SPRUCE_WOOD = register(new Block("spruce_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block BIRCH_WOOD = register(new Block("birch_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block JUNGLE_WOOD = register(new Block("jungle_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block ACACIA_WOOD = register(new Block("acacia_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block CHERRY_WOOD = register(new Block("cherry_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block DARK_OAK_WOOD = register(new Block("dark_oak_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block MANGROVE_WOOD = register(new Block("mangrove_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_OAK_WOOD = register(new Block("stripped_oak_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_SPRUCE_WOOD = register(new Block("stripped_spruce_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_BIRCH_WOOD = register(new Block("stripped_birch_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_JUNGLE_WOOD = register(new Block("stripped_jungle_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_ACACIA_WOOD = register(new Block("stripped_acacia_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_CHERRY_WOOD = register(new Block("stripped_cherry_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_DARK_OAK_WOOD = register(new Block("stripped_dark_oak_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
+    public static final Block STRIPPED_PALE_OAK_WOOD = register(new Block("stripped_pale_oak_wood", builder().destroyTime(2.0f)
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_MANGROVE_WOOD = register(new Block("stripped_mangrove_wood", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block OAK_LEAVES = register(new Block("oak_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_LEAVES = register(new Block("spruce_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_LEAVES = register(new Block("birch_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_LEAVES = register(new Block("jungle_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_LEAVES = register(new Block("acacia_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_LEAVES = register(new Block("cherry_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_LEAVES = register(new Block("dark_oak_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_LEAVES = register(new Block("pale_oak_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_LEAVES = register(new Block("mangrove_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block AZALEA_LEAVES = register(new Block("azalea_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block FLOWERING_AZALEA_LEAVES = register(new Block("flowering_azalea_leaves", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(DISTANCE)
-            .booleanState(PERSISTENT)
-            .booleanState(WATERLOGGED)));
+        .intState(DISTANCE)
+        .booleanState(PERSISTENT)
+        .booleanState(WATERLOGGED)));
     public static final Block SPONGE = register(new Block("sponge", builder().destroyTime(0.6f)));
     public static final Block WET_SPONGE = register(new Block("wet_sponge", builder().destroyTime(0.6f)));
     public static final Block GLASS = register(new Block("glass", builder().destroyTime(0.3f)));
@@ -222,104 +237,104 @@ public final class Blocks {
     public static final Block DEEPSLATE_LAPIS_ORE = register(new Block("deepslate_lapis_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)));
     public static final Block LAPIS_BLOCK = register(new Block("lapis_block", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block DISPENSER = register(new Block("dispenser", builder().setBlockEntity(BlockEntityType.DISPENSER).requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(TRIGGERED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(TRIGGERED)));
     public static final Block SANDSTONE = register(new Block("sandstone", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block CHISELED_SANDSTONE = register(new Block("chiseled_sandstone", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block CUT_SANDSTONE = register(new Block("cut_sandstone", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block NOTE_BLOCK = register(new Block("note_block", builder().destroyTime(0.8f)
-            .enumState(NOTEBLOCK_INSTRUMENT)
-            .intState(NOTE)
-            .booleanState(POWERED)));
+        .enumState(NOTEBLOCK_INSTRUMENT)
+        .intState(NOTE)
+        .booleanState(POWERED)));
     public static final Block WHITE_BED = register(new BedBlock("white_bed", 0, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block ORANGE_BED = register(new BedBlock("orange_bed", 1, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block MAGENTA_BED = register(new BedBlock("magenta_bed", 2, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block LIGHT_BLUE_BED = register(new BedBlock("light_blue_bed", 3, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block YELLOW_BED = register(new BedBlock("yellow_bed", 4, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block LIME_BED = register(new BedBlock("lime_bed", 5, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block PINK_BED = register(new BedBlock("pink_bed", 6, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block GRAY_BED = register(new BedBlock("gray_bed", 7, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block LIGHT_GRAY_BED = register(new BedBlock("light_gray_bed", 8, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block CYAN_BED = register(new BedBlock("cyan_bed", 9, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block PURPLE_BED = register(new BedBlock("purple_bed", 10, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block BLUE_BED = register(new BedBlock("blue_bed", 11, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block BROWN_BED = register(new BedBlock("brown_bed", 12, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block GREEN_BED = register(new BedBlock("green_bed", 13, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block RED_BED = register(new BedBlock("red_bed", 14, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block BLACK_BED = register(new BedBlock("black_bed", 15, builder().setBlockEntity(BlockEntityType.BED).destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OCCUPIED)
-            .enumState(BED_PART)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OCCUPIED)
+        .enumState(BED_PART)));
     public static final Block POWERED_RAIL = register(new Block("powered_rail", builder().destroyTime(0.7f)
-            .booleanState(POWERED)
-            .enumState(RAIL_SHAPE_STRAIGHT)
-            .booleanState(WATERLOGGED)));
+        .booleanState(POWERED)
+        .enumState(RAIL_SHAPE_STRAIGHT)
+        .booleanState(WATERLOGGED)));
     public static final Block DETECTOR_RAIL = register(new Block("detector_rail", builder().destroyTime(0.7f)
-            .booleanState(POWERED)
-            .enumState(RAIL_SHAPE_STRAIGHT)
-            .booleanState(WATERLOGGED)));
+        .booleanState(POWERED)
+        .enumState(RAIL_SHAPE_STRAIGHT)
+        .booleanState(WATERLOGGED)));
     public static final Block STICKY_PISTON = register(new PistonBlock("sticky_piston", builder().destroyTime(1.5f).pushReaction(PistonBehavior.BLOCK)
-            .booleanState(EXTENDED)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .booleanState(EXTENDED)
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block COBWEB = register(new Block("cobweb", builder().requiresCorrectToolForDrops().destroyTime(4.0f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block SHORT_GRASS = register(new Block("short_grass", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block FERN = register(new Block("fern", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block DEAD_BUSH = register(new Block("dead_bush", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block SEAGRASS = register(new Block("seagrass", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block TALL_SEAGRASS = register(new Block("tall_seagrass", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.SEAGRASS)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block PISTON = register(new PistonBlock("piston", builder().destroyTime(1.5f).pushReaction(PistonBehavior.BLOCK)
-            .booleanState(EXTENDED)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .booleanState(EXTENDED)
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block PISTON_HEAD = register(new PistonHeadBlock("piston_head", builder().destroyTime(1.5f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(SHORT)
-            .enumState(PISTON_TYPE)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(SHORT)
+        .enumState(PISTON_TYPE)));
     public static final Block WHITE_WOOL = register(new Block("white_wool", builder().destroyTime(0.8f)));
     public static final Block ORANGE_WOOL = register(new Block("orange_wool", builder().destroyTime(0.8f)));
     public static final Block MAGENTA_WOOL = register(new Block("magenta_wool", builder().destroyTime(0.8f)));
@@ -337,8 +352,8 @@ public final class Blocks {
     public static final Block RED_WOOL = register(new Block("red_wool", builder().destroyTime(0.8f)));
     public static final Block BLACK_WOOL = register(new Block("black_wool", builder().destroyTime(0.8f)));
     public static final Block MOVING_PISTON = register(new MovingPistonBlock("moving_piston", builder().setBlockEntity(BlockEntityType.PISTON).destroyTime(-1.0f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .enumState(PISTON_TYPE)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .enumState(PISTON_TYPE)));
     public static final Block DANDELION = register(new Block("dandelion", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block TORCHFLOWER = register(new Block("torchflower", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POPPY = register(new Block("poppy", builder().pushReaction(PistonBehavior.DESTROY)));
@@ -359,288 +374,306 @@ public final class Blocks {
     public static final Block IRON_BLOCK = register(new Block("iron_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block BRICKS = register(new Block("bricks", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block TNT = register(new Block("tnt", builder()
-            .booleanState(UNSTABLE)));
+        .booleanState(UNSTABLE)));
     public static final Block BOOKSHELF = register(new Block("bookshelf", builder().destroyTime(1.5f)));
     public static final Block CHISELED_BOOKSHELF = register(new Block("chiseled_bookshelf", builder().setBlockEntity(BlockEntityType.CHISELED_BOOKSHELF).destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(CHISELED_BOOKSHELF_SLOT_0_OCCUPIED)
-            .booleanState(CHISELED_BOOKSHELF_SLOT_1_OCCUPIED)
-            .booleanState(CHISELED_BOOKSHELF_SLOT_2_OCCUPIED)
-            .booleanState(CHISELED_BOOKSHELF_SLOT_3_OCCUPIED)
-            .booleanState(CHISELED_BOOKSHELF_SLOT_4_OCCUPIED)
-            .booleanState(CHISELED_BOOKSHELF_SLOT_5_OCCUPIED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(CHISELED_BOOKSHELF_SLOT_0_OCCUPIED)
+        .booleanState(CHISELED_BOOKSHELF_SLOT_1_OCCUPIED)
+        .booleanState(CHISELED_BOOKSHELF_SLOT_2_OCCUPIED)
+        .booleanState(CHISELED_BOOKSHELF_SLOT_3_OCCUPIED)
+        .booleanState(CHISELED_BOOKSHELF_SLOT_4_OCCUPIED)
+        .booleanState(CHISELED_BOOKSHELF_SLOT_5_OCCUPIED)));
     public static final Block MOSSY_COBBLESTONE = register(new Block("mossy_cobblestone", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block OBSIDIAN = register(new Block("obsidian", builder().requiresCorrectToolForDrops().destroyTime(50.0f)));
     public static final Block TORCH = register(new Block("torch", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block WALL_TORCH = register(new Block("wall_torch", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block FIRE = register(new Block("fire", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_15)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WEST)));
+        .intState(AGE_15)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WEST)));
     public static final Block SOUL_FIRE = register(new Block("soul_fire", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block SPAWNER = register(new SpawnerBlock("spawner", builder().setBlockEntity(BlockEntityType.MOB_SPAWNER).requiresCorrectToolForDrops().destroyTime(5.0f)));
+    public static final Block CREAKING_HEART = register(new Block("creaking_heart", builder().setBlockEntity(BlockEntityType.CREAKING_HEART).destroyTime(5.0f)
+        .enumState(AXIS, Axis.VALUES)
+        .enumState(CREAKING)));
     public static final Block OAK_STAIRS = register(new Block("oak_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CHEST = register(new ChestBlock("chest", builder().setBlockEntity(BlockEntityType.CHEST).destroyTime(2.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(CHEST_TYPE, ChestType.VALUES)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(CHEST_TYPE, ChestType.VALUES)
+        .booleanState(WATERLOGGED)));
     public static final Block REDSTONE_WIRE = register(new Block("redstone_wire", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(EAST_REDSTONE)
-            .enumState(NORTH_REDSTONE)
-            .intState(POWER)
-            .enumState(SOUTH_REDSTONE)
-            .enumState(WEST_REDSTONE)));
+        .enumState(EAST_REDSTONE)
+        .enumState(NORTH_REDSTONE)
+        .intState(POWER)
+        .enumState(SOUTH_REDSTONE)
+        .enumState(WEST_REDSTONE)));
     public static final Block DIAMOND_ORE = register(new Block("diamond_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block DEEPSLATE_DIAMOND_ORE = register(new Block("deepslate_diamond_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)));
     public static final Block DIAMOND_BLOCK = register(new Block("diamond_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block CRAFTING_TABLE = register(new Block("crafting_table", builder().destroyTime(2.5f)));
     public static final Block WHEAT = register(new Block("wheat", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_7)));
+        .intState(AGE_7)));
     public static final Block FARMLAND = register(new Block("farmland", builder().destroyTime(0.6f)
-            .intState(MOISTURE)));
+        .intState(MOISTURE)));
     public static final Block FURNACE = register(new FurnaceBlock("furnace", builder().setBlockEntity(BlockEntityType.FURNACE).requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LIT)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LIT)));
     public static final Block OAK_SIGN = register(new Block("oak_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_SIGN = register(new Block("spruce_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_SIGN = register(new Block("birch_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_SIGN = register(new Block("acacia_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_SIGN = register(new Block("cherry_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_SIGN = register(new Block("jungle_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_SIGN = register(new Block("dark_oak_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_SIGN = register(new Block("pale_oak_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_SIGN = register(new Block("mangrove_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_SIGN = register(new Block("bamboo_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block OAK_DOOR = register(new DoorBlock("oak_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block LADDER = register(new Block("ladder", builder().destroyTime(0.4f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block RAIL = register(new Block("rail", builder().destroyTime(0.7f)
-            .enumState(RAIL_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(RAIL_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block COBBLESTONE_STAIRS = register(new Block("cobblestone_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block OAK_WALL_SIGN = register(new Block("oak_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_WALL_SIGN = register(new Block("spruce_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_WALL_SIGN = register(new Block("birch_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_WALL_SIGN = register(new Block("acacia_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_WALL_SIGN = register(new Block("cherry_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_WALL_SIGN = register(new Block("jungle_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_WALL_SIGN = register(new Block("dark_oak_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_WALL_SIGN = register(new Block("pale_oak_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_WALL_SIGN = register(new Block("mangrove_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_WALL_SIGN = register(new Block("bamboo_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block OAK_HANGING_SIGN = register(new Block("oak_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_HANGING_SIGN = register(new Block("spruce_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_HANGING_SIGN = register(new Block("birch_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_HANGING_SIGN = register(new Block("acacia_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_HANGING_SIGN = register(new Block("cherry_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_HANGING_SIGN = register(new Block("jungle_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_HANGING_SIGN = register(new Block("dark_oak_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_HANGING_SIGN = register(new Block("pale_oak_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block CRIMSON_HANGING_SIGN = register(new Block("crimson_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_HANGING_SIGN = register(new Block("warped_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_HANGING_SIGN = register(new Block("mangrove_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_HANGING_SIGN = register(new Block("bamboo_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .booleanState(ATTACHED)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .booleanState(ATTACHED)
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block OAK_WALL_HANGING_SIGN = register(new Block("oak_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_WALL_HANGING_SIGN = register(new Block("spruce_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_WALL_HANGING_SIGN = register(new Block("birch_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_WALL_HANGING_SIGN = register(new Block("acacia_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_WALL_HANGING_SIGN = register(new Block("cherry_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_WALL_HANGING_SIGN = register(new Block("jungle_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_WALL_HANGING_SIGN = register(new Block("dark_oak_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_WALL_HANGING_SIGN = register(new Block("pale_oak_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_WALL_HANGING_SIGN = register(new Block("mangrove_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block CRIMSON_WALL_HANGING_SIGN = register(new Block("crimson_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_WALL_HANGING_SIGN = register(new Block("warped_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_WALL_HANGING_SIGN = register(new Block("bamboo_wall_hanging_sign", builder().setBlockEntity(BlockEntityType.HANGING_SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block LEVER = register(new Block("lever", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block STONE_PRESSURE_PLATE = register(new Block("stone_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block IRON_DOOR = register(new DoorBlock("iron_door", builder().requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block OAK_PRESSURE_PLATE = register(new Block("oak_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block SPRUCE_PRESSURE_PLATE = register(new Block("spruce_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block BIRCH_PRESSURE_PLATE = register(new Block("birch_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block JUNGLE_PRESSURE_PLATE = register(new Block("jungle_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block ACACIA_PRESSURE_PLATE = register(new Block("acacia_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block CHERRY_PRESSURE_PLATE = register(new Block("cherry_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block DARK_OAK_PRESSURE_PLATE = register(new Block("dark_oak_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
+    public static final Block PALE_OAK_PRESSURE_PLATE = register(new Block("pale_oak_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
+        .booleanState(POWERED)));
     public static final Block MANGROVE_PRESSURE_PLATE = register(new Block("mangrove_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block BAMBOO_PRESSURE_PLATE = register(new Block("bamboo_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block REDSTONE_ORE = register(new Block("redstone_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block DEEPSLATE_REDSTONE_ORE = register(new Block("deepslate_redstone_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block REDSTONE_TORCH = register(new Block("redstone_torch", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block REDSTONE_WALL_TORCH = register(new Block("redstone_wall_torch", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LIT)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LIT)));
     public static final Block STONE_BUTTON = register(new Block("stone_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block SNOW = register(new Block("snow", builder().requiresCorrectToolForDrops().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(LAYERS)));
+        .intState(LAYERS)));
     public static final Block ICE = register(new Block("ice", builder().destroyTime(0.5f)));
     public static final Block SNOW_BLOCK = register(new Block("snow_block", builder().requiresCorrectToolForDrops().destroyTime(0.2f)));
     public static final Block CACTUS = register(new Block("cactus", builder().destroyTime(0.4f).pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_15)));
+        .intState(AGE_15)));
     public static final Block CLAY = register(new Block("clay", builder().destroyTime(0.6f)));
     public static final Block SUGAR_CANE = register(new Block("sugar_cane", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_15)));
+        .intState(AGE_15)));
     public static final Block JUKEBOX = register(new Block("jukebox", builder().setBlockEntity(BlockEntityType.JUKEBOX).destroyTime(2.0f)
-            .booleanState(HAS_RECORD)));
+        .booleanState(HAS_RECORD)));
     public static final Block OAK_FENCE = register(new Block("oak_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block NETHERRACK = register(new Block("netherrack", builder().requiresCorrectToolForDrops().destroyTime(0.4f)));
     public static final Block SOUL_SAND = register(new Block("soul_sand", builder().destroyTime(0.5f)));
     public static final Block SOUL_SOIL = register(new Block("soul_soil", builder().destroyTime(0.5f)));
     public static final Block BASALT = register(new Block("basalt", builder().requiresCorrectToolForDrops().destroyTime(1.25f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block POLISHED_BASALT = register(new Block("polished_basalt", builder().requiresCorrectToolForDrops().destroyTime(1.25f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block SOUL_TORCH = register(new Block("soul_torch", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block SOUL_WALL_TORCH = register(new Block("soul_wall_torch", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block GLOWSTONE = register(new Block("glowstone", builder().destroyTime(0.3f)));
     public static final Block NETHER_PORTAL = register(new Block("nether_portal", builder().destroyTime(-1.0f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(HORIZONTAL_AXIS, Axis.X, Axis.Z)));
+        .enumState(HORIZONTAL_AXIS, Axis.X, Axis.Z)));
     public static final Block CARVED_PUMPKIN = register(new Block("carved_pumpkin", builder().destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block JACK_O_LANTERN = register(new Block("jack_o_lantern", builder().destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block CAKE = register(new Block("cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .intState(BITES)));
+        .intState(BITES)));
     public static final Block REPEATER = register(new Block("repeater", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(DELAY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LOCKED)
-            .booleanState(POWERED)));
+        .intState(DELAY)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LOCKED)
+        .booleanState(POWERED)));
     public static final Block WHITE_STAINED_GLASS = register(new Block("white_stained_glass", builder().destroyTime(0.3f)));
     public static final Block ORANGE_STAINED_GLASS = register(new Block("orange_stained_glass", builder().destroyTime(0.3f)));
     public static final Block MAGENTA_STAINED_GLASS = register(new Block("magenta_stained_glass", builder().destroyTime(0.3f)));
@@ -658,59 +691,65 @@ public final class Blocks {
     public static final Block RED_STAINED_GLASS = register(new Block("red_stained_glass", builder().destroyTime(0.3f)));
     public static final Block BLACK_STAINED_GLASS = register(new Block("black_stained_glass", builder().destroyTime(0.3f)));
     public static final Block OAK_TRAPDOOR = register(new TrapDoorBlock("oak_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_TRAPDOOR = register(new TrapDoorBlock("spruce_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_TRAPDOOR = register(new TrapDoorBlock("birch_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_TRAPDOOR = register(new TrapDoorBlock("jungle_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_TRAPDOOR = register(new TrapDoorBlock("acacia_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_TRAPDOOR = register(new TrapDoorBlock("cherry_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_TRAPDOOR = register(new TrapDoorBlock("dark_oak_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_TRAPDOOR = register(new TrapDoorBlock("pale_oak_trapdoor", builder().destroyTime(3.0f)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_TRAPDOOR = register(new TrapDoorBlock("mangrove_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_TRAPDOOR = register(new TrapDoorBlock("bamboo_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block STONE_BRICKS = register(new Block("stone_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block MOSSY_STONE_BRICKS = register(new Block("mossy_stone_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block CRACKED_STONE_BRICKS = register(new Block("cracked_stone_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
@@ -724,180 +763,180 @@ public final class Blocks {
     public static final Block INFESTED_CRACKED_STONE_BRICKS = register(new Block("infested_cracked_stone_bricks", builder().destroyTime(0.75f)));
     public static final Block INFESTED_CHISELED_STONE_BRICKS = register(new Block("infested_chiseled_stone_bricks", builder().destroyTime(0.75f)));
     public static final Block BROWN_MUSHROOM_BLOCK = register(new Block("brown_mushroom_block", builder().destroyTime(0.2f)
-            .booleanState(DOWN)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WEST)));
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WEST)));
     public static final Block RED_MUSHROOM_BLOCK = register(new Block("red_mushroom_block", builder().destroyTime(0.2f)
-            .booleanState(DOWN)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WEST)));
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WEST)));
     public static final Block MUSHROOM_STEM = register(new Block("mushroom_stem", builder().destroyTime(0.2f)
-            .booleanState(DOWN)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WEST)));
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WEST)));
     public static final Block IRON_BARS = register(new Block("iron_bars", builder().requiresCorrectToolForDrops().destroyTime(5.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block CHAIN = register(new Block("chain", builder().requiresCorrectToolForDrops().destroyTime(5.0f)
-            .enumState(AXIS, Axis.VALUES)
-            .booleanState(WATERLOGGED)));
+        .enumState(AXIS, Axis.VALUES)
+        .booleanState(WATERLOGGED)));
     public static final Block GLASS_PANE = register(new Block("glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block PUMPKIN = register(new Block("pumpkin", builder().destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block MELON = register(new Block("melon", builder().destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block ATTACHED_PUMPKIN_STEM = register(new Block("attached_pumpkin_stem", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.PUMPKIN_SEEDS)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block ATTACHED_MELON_STEM = register(new Block("attached_melon_stem", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.MELON_SEEDS)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block PUMPKIN_STEM = register(new Block("pumpkin_stem", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_7)));
+        .intState(AGE_7)));
     public static final Block MELON_STEM = register(new Block("melon_stem", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_7)));
+        .intState(AGE_7)));
     public static final Block VINE = register(new Block("vine", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WEST)));
     public static final Block GLOW_LICHEN = register(new Block("glow_lichen", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(DOWN)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block OAK_FENCE_GATE = register(new Block("oak_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block BRICK_STAIRS = register(new Block("brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block STONE_BRICK_STAIRS = register(new Block("stone_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MUD_BRICK_STAIRS = register(new Block("mud_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MYCELIUM = register(new Block("mycelium", builder().destroyTime(0.6f)
-            .booleanState(SNOWY)));
+        .booleanState(SNOWY)));
     public static final Block LILY_PAD = register(new Block("lily_pad", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block NETHER_BRICKS = register(new Block("nether_bricks", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block NETHER_BRICK_FENCE = register(new Block("nether_brick_fence", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block NETHER_BRICK_STAIRS = register(new Block("nether_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block NETHER_WART = register(new Block("nether_wart", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_3)));
+        .intState(AGE_3)));
     public static final Block ENCHANTING_TABLE = register(new Block("enchanting_table", builder().setBlockEntity(BlockEntityType.ENCHANTING_TABLE).requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block BREWING_STAND = register(new Block("brewing_stand", builder().setBlockEntity(BlockEntityType.BREWING_STAND).requiresCorrectToolForDrops().destroyTime(0.5f)
-            .booleanState(HAS_BOTTLE_0)
-            .booleanState(HAS_BOTTLE_1)
-            .booleanState(HAS_BOTTLE_2)));
+        .booleanState(HAS_BOTTLE_0)
+        .booleanState(HAS_BOTTLE_1)
+        .booleanState(HAS_BOTTLE_2)));
     public static final Block CAULDRON = register(new CauldronBlock("cauldron", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block WATER_CAULDRON = register(new CauldronBlock("water_cauldron", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .intState(LEVEL_CAULDRON)));
+        .intState(LEVEL_CAULDRON)));
     public static final Block LAVA_CAULDRON = register(new CauldronBlock("lava_cauldron", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block POWDER_SNOW_CAULDRON = register(new CauldronBlock("powder_snow_cauldron", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .intState(LEVEL_CAULDRON)));
+        .intState(LEVEL_CAULDRON)));
     public static final Block END_PORTAL = register(new Block("end_portal", builder().setBlockEntity(BlockEntityType.END_PORTAL).destroyTime(-1.0f).pushReaction(PistonBehavior.BLOCK)));
     public static final Block END_PORTAL_FRAME = register(new Block("end_portal_frame", builder().destroyTime(-1.0f)
-            .booleanState(EYE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .booleanState(EYE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block END_STONE = register(new Block("end_stone", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block DRAGON_EGG = register(new Block("dragon_egg", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block REDSTONE_LAMP = register(new Block("redstone_lamp", builder().destroyTime(0.3f)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block COCOA = register(new Block("cocoa", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_2)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .intState(AGE_2)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block SANDSTONE_STAIRS = register(new Block("sandstone_stairs", builder().requiresCorrectToolForDrops().destroyTime(0.8f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block EMERALD_ORE = register(new Block("emerald_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block DEEPSLATE_EMERALD_ORE = register(new Block("deepslate_emerald_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)));
     public static final Block ENDER_CHEST = register(new Block("ender_chest", builder().setBlockEntity(BlockEntityType.ENDER_CHEST).requiresCorrectToolForDrops().destroyTime(22.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block TRIPWIRE_HOOK = register(new Block("tripwire_hook", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(ATTACHED)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .booleanState(ATTACHED)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block TRIPWIRE = register(new Block("tripwire", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(ATTACHED)
-            .booleanState(DISARMED)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(POWERED)
-            .booleanState(SOUTH)
-            .booleanState(WEST)));
+        .booleanState(ATTACHED)
+        .booleanState(DISARMED)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(POWERED)
+        .booleanState(SOUTH)
+        .booleanState(WEST)));
     public static final Block EMERALD_BLOCK = register(new Block("emerald_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block SPRUCE_STAIRS = register(new Block("spruce_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_STAIRS = register(new Block("birch_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_STAIRS = register(new Block("jungle_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block COMMAND_BLOCK = register(new Block("command_block", builder().setBlockEntity(BlockEntityType.COMMAND_BLOCK).requiresCorrectToolForDrops().destroyTime(-1.0f)
-            .booleanState(CONDITIONAL)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .booleanState(CONDITIONAL)
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block BEACON = register(new Block("beacon", builder().setBlockEntity(BlockEntityType.BEACON).destroyTime(3.0f)));
     public static final Block COBBLESTONE_WALL = register(new Block("cobblestone_wall", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block MOSSY_COBBLESTONE_WALL = register(new Block("mossy_cobblestone_wall", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block FLOWER_POT = register(new FlowerPotBlock("flower_pot", AIR, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_TORCHFLOWER = register(new FlowerPotBlock("potted_torchflower", TORCHFLOWER, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_OAK_SAPLING = register(new FlowerPotBlock("potted_oak_sapling", OAK_SAPLING, builder().pushReaction(PistonBehavior.DESTROY)));
@@ -907,6 +946,7 @@ public final class Blocks {
     public static final Block POTTED_ACACIA_SAPLING = register(new FlowerPotBlock("potted_acacia_sapling", ACACIA_SAPLING, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_CHERRY_SAPLING = register(new FlowerPotBlock("potted_cherry_sapling", CHERRY_SAPLING, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_DARK_OAK_SAPLING = register(new FlowerPotBlock("potted_dark_oak_sapling", DARK_OAK_SAPLING, builder().pushReaction(PistonBehavior.DESTROY)));
+    public static final Block POTTED_PALE_OAK_SAPLING = register(new FlowerPotBlock("potted_pale_oak_sapling", PALE_OAK_SAPLING, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_MANGROVE_PROPAGULE = register(new FlowerPotBlock("potted_mangrove_propagule", MANGROVE_PROPAGULE, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_FERN = register(new FlowerPotBlock("potted_fern", FERN, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_DANDELION = register(new FlowerPotBlock("potted_dandelion", DANDELION, builder().pushReaction(PistonBehavior.DESTROY)));
@@ -927,129 +967,133 @@ public final class Blocks {
     public static final Block POTTED_DEAD_BUSH = register(new FlowerPotBlock("potted_dead_bush", DEAD_BUSH, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_CACTUS = register(new FlowerPotBlock("potted_cactus", CACTUS, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block CARROTS = register(new Block("carrots", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_7)));
+        .intState(AGE_7)));
     public static final Block POTATOES = register(new Block("potatoes", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_7)));
+        .intState(AGE_7)));
     public static final Block OAK_BUTTON = register(new Block("oak_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block SPRUCE_BUTTON = register(new Block("spruce_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block BIRCH_BUTTON = register(new Block("birch_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block JUNGLE_BUTTON = register(new Block("jungle_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block ACACIA_BUTTON = register(new Block("acacia_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block CHERRY_BUTTON = register(new Block("cherry_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block DARK_OAK_BUTTON = register(new Block("dark_oak_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
+    public static final Block PALE_OAK_BUTTON = register(new Block("pale_oak_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block MANGROVE_BUTTON = register(new Block("mangrove_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block BAMBOO_BUTTON = register(new Block("bamboo_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block SKELETON_SKULL = register(new SkullBlock("skeleton_skull", SkullBlock.Type.SKELETON, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block SKELETON_WALL_SKULL = register(new WallSkullBlock("skeleton_wall_skull", SkullBlock.Type.SKELETON, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block WITHER_SKELETON_SKULL = register(new SkullBlock("wither_skeleton_skull", SkullBlock.Type.WITHER_SKELETON, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block WITHER_SKELETON_WALL_SKULL = register(new WallSkullBlock("wither_skeleton_wall_skull", SkullBlock.Type.WITHER_SKELETON, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block ZOMBIE_HEAD = register(new SkullBlock("zombie_head", SkullBlock.Type.ZOMBIE, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block ZOMBIE_WALL_HEAD = register(new WallSkullBlock("zombie_wall_head", SkullBlock.Type.ZOMBIE, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block PLAYER_HEAD = register(new SkullBlock("player_head", SkullBlock.Type.PLAYER, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block PLAYER_WALL_HEAD = register(new WallSkullBlock("player_wall_head", SkullBlock.Type.PLAYER, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block CREEPER_HEAD = register(new SkullBlock("creeper_head", SkullBlock.Type.CREEPER, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block CREEPER_WALL_HEAD = register(new WallSkullBlock("creeper_wall_head", SkullBlock.Type.CREEPER, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block DRAGON_HEAD = register(new SkullBlock("dragon_head", SkullBlock.Type.DRAGON, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block DRAGON_WALL_HEAD = register(new WallSkullBlock("dragon_wall_head", SkullBlock.Type.DRAGON, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block PIGLIN_HEAD = register(new SkullBlock("piglin_head", SkullBlock.Type.PIGLIN, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)
-            .intState(ROTATION_16)));
+        .booleanState(POWERED)
+        .intState(ROTATION_16)));
     public static final Block PIGLIN_WALL_HEAD = register(new WallSkullBlock("piglin_wall_head", SkullBlock.Type.PIGLIN, builder().setBlockEntity(BlockEntityType.SKULL).destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block ANVIL = register(new Block("anvil", builder().requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block CHIPPED_ANVIL = register(new Block("chipped_anvil", builder().requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block DAMAGED_ANVIL = register(new Block("damaged_anvil", builder().requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block TRAPPED_CHEST = register(new ChestBlock("trapped_chest", builder().setBlockEntity(BlockEntityType.TRAPPED_CHEST).destroyTime(2.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(CHEST_TYPE, ChestType.VALUES)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(CHEST_TYPE, ChestType.VALUES)
+        .booleanState(WATERLOGGED)));
     public static final Block LIGHT_WEIGHTED_PRESSURE_PLATE = register(new Block("light_weighted_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .intState(POWER)));
+        .intState(POWER)));
     public static final Block HEAVY_WEIGHTED_PRESSURE_PLATE = register(new Block("heavy_weighted_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .intState(POWER)));
+        .intState(POWER)));
     public static final Block COMPARATOR = register(new Block("comparator", builder().setBlockEntity(BlockEntityType.COMPARATOR).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(MODE_COMPARATOR)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(MODE_COMPARATOR)
+        .booleanState(POWERED)));
     public static final Block DAYLIGHT_DETECTOR = register(new Block("daylight_detector", builder().setBlockEntity(BlockEntityType.DAYLIGHT_DETECTOR).destroyTime(0.2f)
-            .booleanState(INVERTED)
-            .intState(POWER)));
+        .booleanState(INVERTED)
+        .intState(POWER)));
     public static final Block REDSTONE_BLOCK = register(new Block("redstone_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block NETHER_QUARTZ_ORE = register(new Block("nether_quartz_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block HOPPER = register(new Block("hopper", builder().setBlockEntity(BlockEntityType.HOPPER).requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(ENABLED)
-            .enumState(FACING_HOPPER, Direction.DOWN, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .booleanState(ENABLED)
+        .enumState(FACING_HOPPER, Direction.DOWN, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block QUARTZ_BLOCK = register(new Block("quartz_block", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block CHISELED_QUARTZ_BLOCK = register(new Block("chiseled_quartz_block", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block QUARTZ_PILLAR = register(new Block("quartz_pillar", builder().requiresCorrectToolForDrops().destroyTime(0.8f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block QUARTZ_STAIRS = register(new Block("quartz_stairs", builder().requiresCorrectToolForDrops().destroyTime(0.8f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block ACTIVATOR_RAIL = register(new Block("activator_rail", builder().destroyTime(0.7f)
-            .booleanState(POWERED)
-            .enumState(RAIL_SHAPE_STRAIGHT)
-            .booleanState(WATERLOGGED)));
+        .booleanState(POWERED)
+        .enumState(RAIL_SHAPE_STRAIGHT)
+        .booleanState(WATERLOGGED)));
     public static final Block DROPPER = register(new Block("dropper", builder().setBlockEntity(BlockEntityType.DROPPER).requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(TRIGGERED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(TRIGGERED)));
     public static final Block WHITE_TERRACOTTA = register(new Block("white_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.25f)));
     public static final Block ORANGE_TERRACOTTA = register(new Block("orange_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.25f)));
     public static final Block MAGENTA_TERRACOTTA = register(new Block("magenta_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.25f)));
@@ -1067,173 +1111,178 @@ public final class Blocks {
     public static final Block RED_TERRACOTTA = register(new Block("red_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.25f)));
     public static final Block BLACK_TERRACOTTA = register(new Block("black_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.25f)));
     public static final Block WHITE_STAINED_GLASS_PANE = register(new Block("white_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block ORANGE_STAINED_GLASS_PANE = register(new Block("orange_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block MAGENTA_STAINED_GLASS_PANE = register(new Block("magenta_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block LIGHT_BLUE_STAINED_GLASS_PANE = register(new Block("light_blue_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block YELLOW_STAINED_GLASS_PANE = register(new Block("yellow_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block LIME_STAINED_GLASS_PANE = register(new Block("lime_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block PINK_STAINED_GLASS_PANE = register(new Block("pink_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block GRAY_STAINED_GLASS_PANE = register(new Block("gray_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block LIGHT_GRAY_STAINED_GLASS_PANE = register(new Block("light_gray_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block CYAN_STAINED_GLASS_PANE = register(new Block("cyan_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block PURPLE_STAINED_GLASS_PANE = register(new Block("purple_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block BLUE_STAINED_GLASS_PANE = register(new Block("blue_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block BROWN_STAINED_GLASS_PANE = register(new Block("brown_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block GREEN_STAINED_GLASS_PANE = register(new Block("green_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block RED_STAINED_GLASS_PANE = register(new Block("red_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block BLACK_STAINED_GLASS_PANE = register(new Block("black_stained_glass_pane", builder().destroyTime(0.3f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block ACACIA_STAIRS = register(new Block("acacia_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_STAIRS = register(new Block("cherry_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_STAIRS = register(new Block("dark_oak_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_STAIRS = register(new Block("pale_oak_stairs", builder().destroyTime(2.0f)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_STAIRS = register(new Block("mangrove_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_STAIRS = register(new Block("bamboo_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_MOSAIC_STAIRS = register(new Block("bamboo_mosaic_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SLIME_BLOCK = register(new Block("slime_block", builder()));
     public static final Block BARRIER = register(new Block("barrier", builder().destroyTime(-1.0f).pushReaction(PistonBehavior.BLOCK)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block LIGHT = register(new Block("light", builder().destroyTime(-1.0f)
-            .intState(LEVEL)
-            .booleanState(WATERLOGGED)));
+        .intState(LEVEL)
+        .booleanState(WATERLOGGED)));
     public static final Block IRON_TRAPDOOR = register(new TrapDoorBlock("iron_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(5.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block PRISMARINE = register(new Block("prismarine", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block PRISMARINE_BRICKS = register(new Block("prismarine_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block DARK_PRISMARINE = register(new Block("dark_prismarine", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block PRISMARINE_STAIRS = register(new Block("prismarine_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block PRISMARINE_BRICK_STAIRS = register(new Block("prismarine_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_PRISMARINE_STAIRS = register(new Block("dark_prismarine_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block PRISMARINE_SLAB = register(new Block("prismarine_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block PRISMARINE_BRICK_SLAB = register(new Block("prismarine_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_PRISMARINE_SLAB = register(new Block("dark_prismarine_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SEA_LANTERN = register(new Block("sea_lantern", builder().destroyTime(0.3f)));
     public static final Block HAY_BLOCK = register(new Block("hay_block", builder().destroyTime(0.5f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block WHITE_CARPET = register(new Block("white_carpet", builder().destroyTime(0.1f)));
     public static final Block ORANGE_CARPET = register(new Block("orange_carpet", builder().destroyTime(0.1f)));
     public static final Block MAGENTA_CARPET = register(new Block("magenta_carpet", builder().destroyTime(0.1f)));
@@ -1254,415 +1303,435 @@ public final class Blocks {
     public static final Block COAL_BLOCK = register(new Block("coal_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block PACKED_ICE = register(new Block("packed_ice", builder().destroyTime(0.5f)));
     public static final Block SUNFLOWER = register(new Block("sunflower", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block LILAC = register(new Block("lilac", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block ROSE_BUSH = register(new Block("rose_bush", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block PEONY = register(new Block("peony", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block TALL_GRASS = register(new Block("tall_grass", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block LARGE_FERN = register(new Block("large_fern", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block WHITE_BANNER = register(new BannerBlock("white_banner", 0, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block ORANGE_BANNER = register(new BannerBlock("orange_banner", 1, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block MAGENTA_BANNER = register(new BannerBlock("magenta_banner", 2, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block LIGHT_BLUE_BANNER = register(new BannerBlock("light_blue_banner", 3, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block YELLOW_BANNER = register(new BannerBlock("yellow_banner", 4, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block LIME_BANNER = register(new BannerBlock("lime_banner", 5, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block PINK_BANNER = register(new BannerBlock("pink_banner", 6, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block GRAY_BANNER = register(new BannerBlock("gray_banner", 7, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block LIGHT_GRAY_BANNER = register(new BannerBlock("light_gray_banner", 8, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block CYAN_BANNER = register(new BannerBlock("cyan_banner", 9, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block PURPLE_BANNER = register(new BannerBlock("purple_banner", 10, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block BLUE_BANNER = register(new BannerBlock("blue_banner", 11, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block BROWN_BANNER = register(new BannerBlock("brown_banner", 12, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block GREEN_BANNER = register(new BannerBlock("green_banner", 13, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block RED_BANNER = register(new BannerBlock("red_banner", 14, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block BLACK_BANNER = register(new BannerBlock("black_banner", 15, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .intState(ROTATION_16)));
+        .intState(ROTATION_16)));
     public static final Block WHITE_WALL_BANNER = register(new BannerBlock("white_wall_banner", 0, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block ORANGE_WALL_BANNER = register(new BannerBlock("orange_wall_banner", 1, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block MAGENTA_WALL_BANNER = register(new BannerBlock("magenta_wall_banner", 2, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LIGHT_BLUE_WALL_BANNER = register(new BannerBlock("light_blue_wall_banner", 3, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block YELLOW_WALL_BANNER = register(new BannerBlock("yellow_wall_banner", 4, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LIME_WALL_BANNER = register(new BannerBlock("lime_wall_banner", 5, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block PINK_WALL_BANNER = register(new BannerBlock("pink_wall_banner", 6, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block GRAY_WALL_BANNER = register(new BannerBlock("gray_wall_banner", 7, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LIGHT_GRAY_WALL_BANNER = register(new BannerBlock("light_gray_wall_banner", 8, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block CYAN_WALL_BANNER = register(new BannerBlock("cyan_wall_banner", 9, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block PURPLE_WALL_BANNER = register(new BannerBlock("purple_wall_banner", 10, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BLUE_WALL_BANNER = register(new BannerBlock("blue_wall_banner", 11, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BROWN_WALL_BANNER = register(new BannerBlock("brown_wall_banner", 12, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block GREEN_WALL_BANNER = register(new BannerBlock("green_wall_banner", 13, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block RED_WALL_BANNER = register(new BannerBlock("red_wall_banner", 14, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BLACK_WALL_BANNER = register(new BannerBlock("black_wall_banner", 15, builder().setBlockEntity(BlockEntityType.BANNER).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block RED_SANDSTONE = register(new Block("red_sandstone", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block CHISELED_RED_SANDSTONE = register(new Block("chiseled_red_sandstone", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block CUT_RED_SANDSTONE = register(new Block("cut_red_sandstone", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block RED_SANDSTONE_STAIRS = register(new Block("red_sandstone_stairs", builder().requiresCorrectToolForDrops().destroyTime(0.8f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block OAK_SLAB = register(new Block("oak_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SPRUCE_SLAB = register(new Block("spruce_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BIRCH_SLAB = register(new Block("birch_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block JUNGLE_SLAB = register(new Block("jungle_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block ACACIA_SLAB = register(new Block("acacia_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CHERRY_SLAB = register(new Block("cherry_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DARK_OAK_SLAB = register(new Block("dark_oak_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_OAK_SLAB = register(new Block("pale_oak_slab", builder().destroyTime(2.0f)
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MANGROVE_SLAB = register(new Block("mangrove_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_SLAB = register(new Block("bamboo_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_MOSAIC_SLAB = register(new Block("bamboo_mosaic_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block STONE_SLAB = register(new Block("stone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_STONE_SLAB = register(new Block("smooth_stone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SANDSTONE_SLAB = register(new Block("sandstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CUT_SANDSTONE_SLAB = register(new Block("cut_sandstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block PETRIFIED_OAK_SLAB = register(new Block("petrified_oak_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block COBBLESTONE_SLAB = register(new Block("cobblestone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BRICK_SLAB = register(new Block("brick_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block STONE_BRICK_SLAB = register(new Block("stone_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MUD_BRICK_SLAB = register(new Block("mud_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block NETHER_BRICK_SLAB = register(new Block("nether_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block QUARTZ_SLAB = register(new Block("quartz_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block RED_SANDSTONE_SLAB = register(new Block("red_sandstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CUT_RED_SANDSTONE_SLAB = register(new Block("cut_red_sandstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block PURPUR_SLAB = register(new Block("purpur_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_STONE = register(new Block("smooth_stone", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block SMOOTH_SANDSTONE = register(new Block("smooth_sandstone", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block SMOOTH_QUARTZ = register(new Block("smooth_quartz", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block SMOOTH_RED_SANDSTONE = register(new Block("smooth_red_sandstone", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block SPRUCE_FENCE_GATE = register(new Block("spruce_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block BIRCH_FENCE_GATE = register(new Block("birch_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block JUNGLE_FENCE_GATE = register(new Block("jungle_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block ACACIA_FENCE_GATE = register(new Block("acacia_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block CHERRY_FENCE_GATE = register(new Block("cherry_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block DARK_OAK_FENCE_GATE = register(new Block("dark_oak_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
+    public static final Block PALE_OAK_FENCE_GATE = register(new Block("pale_oak_fence_gate", builder().destroyTime(2.0f)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block MANGROVE_FENCE_GATE = register(new Block("mangrove_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block BAMBOO_FENCE_GATE = register(new Block("bamboo_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block SPRUCE_FENCE = register(new Block("spruce_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block BIRCH_FENCE = register(new Block("birch_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block JUNGLE_FENCE = register(new Block("jungle_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block ACACIA_FENCE = register(new Block("acacia_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block CHERRY_FENCE = register(new Block("cherry_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block DARK_OAK_FENCE = register(new Block("dark_oak_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
+    public static final Block PALE_OAK_FENCE = register(new Block("pale_oak_fence", builder().destroyTime(2.0f)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block MANGROVE_FENCE = register(new Block("mangrove_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block BAMBOO_FENCE = register(new Block("bamboo_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block SPRUCE_DOOR = register(new DoorBlock("spruce_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block BIRCH_DOOR = register(new DoorBlock("birch_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block JUNGLE_DOOR = register(new DoorBlock("jungle_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block ACACIA_DOOR = register(new DoorBlock("acacia_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block CHERRY_DOOR = register(new DoorBlock("cherry_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block DARK_OAK_DOOR = register(new DoorBlock("dark_oak_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
+    public static final Block PALE_OAK_DOOR = register(new DoorBlock("pale_oak_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block MANGROVE_DOOR = register(new DoorBlock("mangrove_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block BAMBOO_DOOR = register(new DoorBlock("bamboo_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block END_ROD = register(new Block("end_rod", builder()
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block CHORUS_PLANT = register(new Block("chorus_plant", builder().destroyTime(0.4f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(DOWN)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WEST)));
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WEST)));
     public static final Block CHORUS_FLOWER = register(new Block("chorus_flower", builder().destroyTime(0.4f).pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_5)));
+        .intState(AGE_5)));
     public static final Block PURPUR_BLOCK = register(new Block("purpur_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block PURPUR_PILLAR = register(new Block("purpur_pillar", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block PURPUR_STAIRS = register(new Block("purpur_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block END_STONE_BRICKS = register(new Block("end_stone_bricks", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block TORCHFLOWER_CROP = register(new Block("torchflower_crop", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_1)));
+        .intState(AGE_1)));
     public static final Block PITCHER_CROP = register(new Block("pitcher_crop", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_4)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .intState(AGE_4)
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block PITCHER_PLANT = register(new Block("pitcher_plant", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(DOUBLE_BLOCK_HALF)));
+        .enumState(DOUBLE_BLOCK_HALF)));
     public static final Block BEETROOTS = register(new Block("beetroots", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_3)));
+        .intState(AGE_3)));
     public static final Block DIRT_PATH = register(new Block("dirt_path", builder().destroyTime(0.65f)));
     public static final Block END_GATEWAY = register(new Block("end_gateway", builder().setBlockEntity(BlockEntityType.END_GATEWAY).destroyTime(-1.0f).pushReaction(PistonBehavior.BLOCK)));
     public static final Block REPEATING_COMMAND_BLOCK = register(new Block("repeating_command_block", builder().setBlockEntity(BlockEntityType.COMMAND_BLOCK).requiresCorrectToolForDrops().destroyTime(-1.0f)
-            .booleanState(CONDITIONAL)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .booleanState(CONDITIONAL)
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block CHAIN_COMMAND_BLOCK = register(new Block("chain_command_block", builder().setBlockEntity(BlockEntityType.COMMAND_BLOCK).requiresCorrectToolForDrops().destroyTime(-1.0f)
-            .booleanState(CONDITIONAL)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .booleanState(CONDITIONAL)
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block FROSTED_ICE = register(new Block("frosted_ice", builder().destroyTime(0.5f)
-            .intState(AGE_3)));
+        .intState(AGE_3)));
     public static final Block MAGMA_BLOCK = register(new Block("magma_block", builder().requiresCorrectToolForDrops().destroyTime(0.5f)));
     public static final Block NETHER_WART_BLOCK = register(new Block("nether_wart_block", builder().destroyTime(1.0f)));
     public static final Block RED_NETHER_BRICKS = register(new Block("red_nether_bricks", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block BONE_BLOCK = register(new Block("bone_block", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRUCTURE_VOID = register(new Block("structure_void", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block OBSERVER = register(new Block("observer", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(POWERED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(POWERED)));
     public static final Block SHULKER_BOX = register(new Block("shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block WHITE_SHULKER_BOX = register(new Block("white_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block ORANGE_SHULKER_BOX = register(new Block("orange_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block MAGENTA_SHULKER_BOX = register(new Block("magenta_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block LIGHT_BLUE_SHULKER_BOX = register(new Block("light_blue_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block YELLOW_SHULKER_BOX = register(new Block("yellow_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block LIME_SHULKER_BOX = register(new Block("lime_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block PINK_SHULKER_BOX = register(new Block("pink_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block GRAY_SHULKER_BOX = register(new Block("gray_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block LIGHT_GRAY_SHULKER_BOX = register(new Block("light_gray_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block CYAN_SHULKER_BOX = register(new Block("cyan_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block PURPLE_SHULKER_BOX = register(new Block("purple_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block BLUE_SHULKER_BOX = register(new Block("blue_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block BROWN_SHULKER_BOX = register(new Block("brown_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block GREEN_SHULKER_BOX = register(new Block("green_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block RED_SHULKER_BOX = register(new Block("red_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block BLACK_SHULKER_BOX = register(new Block("black_shulker_box", builder().setBlockEntity(BlockEntityType.SHULKER_BOX).destroyTime(2.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)));
     public static final Block WHITE_GLAZED_TERRACOTTA = register(new Block("white_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block ORANGE_GLAZED_TERRACOTTA = register(new Block("orange_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block MAGENTA_GLAZED_TERRACOTTA = register(new Block("magenta_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LIGHT_BLUE_GLAZED_TERRACOTTA = register(new Block("light_blue_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block YELLOW_GLAZED_TERRACOTTA = register(new Block("yellow_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LIME_GLAZED_TERRACOTTA = register(new Block("lime_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block PINK_GLAZED_TERRACOTTA = register(new Block("pink_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block GRAY_GLAZED_TERRACOTTA = register(new Block("gray_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LIGHT_GRAY_GLAZED_TERRACOTTA = register(new Block("light_gray_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block CYAN_GLAZED_TERRACOTTA = register(new Block("cyan_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block PURPLE_GLAZED_TERRACOTTA = register(new Block("purple_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BLUE_GLAZED_TERRACOTTA = register(new Block("blue_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BROWN_GLAZED_TERRACOTTA = register(new Block("brown_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block GREEN_GLAZED_TERRACOTTA = register(new Block("green_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block RED_GLAZED_TERRACOTTA = register(new Block("red_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BLACK_GLAZED_TERRACOTTA = register(new Block("black_glazed_terracotta", builder().requiresCorrectToolForDrops().destroyTime(1.4f).pushReaction(PistonBehavior.PUSH_ONLY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block WHITE_CONCRETE = register(new Block("white_concrete", builder().requiresCorrectToolForDrops().destroyTime(1.8f)));
     public static final Block ORANGE_CONCRETE = register(new Block("orange_concrete", builder().requiresCorrectToolForDrops().destroyTime(1.8f)));
     public static final Block MAGENTA_CONCRETE = register(new Block("magenta_concrete", builder().requiresCorrectToolForDrops().destroyTime(1.8f)));
@@ -1696,14 +1765,14 @@ public final class Blocks {
     public static final Block RED_CONCRETE_POWDER = register(new Block("red_concrete_powder", builder().destroyTime(0.5f)));
     public static final Block BLACK_CONCRETE_POWDER = register(new Block("black_concrete_powder", builder().destroyTime(0.5f)));
     public static final Block KELP = register(new Block("kelp", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_25)));
+        .intState(AGE_25)));
     public static final Block KELP_PLANT = register(new Block("kelp_plant", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.KELP)));
     public static final Block DRIED_KELP_BLOCK = register(new Block("dried_kelp_block", builder().destroyTime(0.5f)));
     public static final Block TURTLE_EGG = register(new Block("turtle_egg", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .intState(EGGS)
-            .intState(HATCH)));
+        .intState(EGGS)
+        .intState(HATCH)));
     public static final Block SNIFFER_EGG = register(new Block("sniffer_egg", builder().destroyTime(0.5f)
-            .intState(HATCH)));
+        .intState(HATCH)));
     public static final Block DEAD_TUBE_CORAL_BLOCK = register(new Block("dead_tube_coral_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block DEAD_BRAIN_CORAL_BLOCK = register(new Block("dead_brain_coral_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block DEAD_BUBBLE_CORAL_BLOCK = register(new Block("dead_bubble_coral_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
@@ -1715,480 +1784,480 @@ public final class Blocks {
     public static final Block FIRE_CORAL_BLOCK = register(new Block("fire_coral_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block HORN_CORAL_BLOCK = register(new Block("horn_coral_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block DEAD_TUBE_CORAL = register(new Block("dead_tube_coral", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_BRAIN_CORAL = register(new Block("dead_brain_coral", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_BUBBLE_CORAL = register(new Block("dead_bubble_coral", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_FIRE_CORAL = register(new Block("dead_fire_coral", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_HORN_CORAL = register(new Block("dead_horn_coral", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block TUBE_CORAL = register(new Block("tube_coral", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block BRAIN_CORAL = register(new Block("brain_coral", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block BUBBLE_CORAL = register(new Block("bubble_coral", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block FIRE_CORAL = register(new Block("fire_coral", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block HORN_CORAL = register(new Block("horn_coral", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_TUBE_CORAL_FAN = register(new Block("dead_tube_coral_fan", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_BRAIN_CORAL_FAN = register(new Block("dead_brain_coral_fan", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_BUBBLE_CORAL_FAN = register(new Block("dead_bubble_coral_fan", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_FIRE_CORAL_FAN = register(new Block("dead_fire_coral_fan", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_HORN_CORAL_FAN = register(new Block("dead_horn_coral_fan", builder().requiresCorrectToolForDrops()
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block TUBE_CORAL_FAN = register(new Block("tube_coral_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block BRAIN_CORAL_FAN = register(new Block("brain_coral_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block BUBBLE_CORAL_FAN = register(new Block("bubble_coral_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block FIRE_CORAL_FAN = register(new Block("fire_coral_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block HORN_CORAL_FAN = register(new Block("horn_coral_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_TUBE_CORAL_WALL_FAN = register(new Block("dead_tube_coral_wall_fan", builder().requiresCorrectToolForDrops()
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_BRAIN_CORAL_WALL_FAN = register(new Block("dead_brain_coral_wall_fan", builder().requiresCorrectToolForDrops()
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_BUBBLE_CORAL_WALL_FAN = register(new Block("dead_bubble_coral_wall_fan", builder().requiresCorrectToolForDrops()
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_FIRE_CORAL_WALL_FAN = register(new Block("dead_fire_coral_wall_fan", builder().requiresCorrectToolForDrops()
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block DEAD_HORN_CORAL_WALL_FAN = register(new Block("dead_horn_coral_wall_fan", builder().requiresCorrectToolForDrops()
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block TUBE_CORAL_WALL_FAN = register(new Block("tube_coral_wall_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block BRAIN_CORAL_WALL_FAN = register(new Block("brain_coral_wall_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block BUBBLE_CORAL_WALL_FAN = register(new Block("bubble_coral_wall_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block FIRE_CORAL_WALL_FAN = register(new Block("fire_coral_wall_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block HORN_CORAL_WALL_FAN = register(new Block("horn_coral_wall_fan", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block SEA_PICKLE = register(new Block("sea_pickle", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(PICKLES)
-            .booleanState(WATERLOGGED)));
+        .intState(PICKLES)
+        .booleanState(WATERLOGGED)));
     public static final Block BLUE_ICE = register(new Block("blue_ice", builder().destroyTime(2.8f)));
     public static final Block CONDUIT = register(new Block("conduit", builder().setBlockEntity(BlockEntityType.CONDUIT).destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block BAMBOO_SAPLING = register(new Block("bamboo_sapling", builder().destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.BAMBOO)));
     public static final Block BAMBOO = register(new Block("bamboo", builder().destroyTime(1.0f).pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_1)
-            .enumState(BAMBOO_LEAVES)
-            .intState(STAGE)));
+        .intState(AGE_1)
+        .enumState(BAMBOO_LEAVES)
+        .intState(STAGE)));
     public static final Block POTTED_BAMBOO = register(new FlowerPotBlock("potted_bamboo", BAMBOO, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block VOID_AIR = register(new Block("void_air", builder()));
     public static final Block CAVE_AIR = register(new Block("cave_air", builder()));
     public static final Block BUBBLE_COLUMN = register(new Block("bubble_column", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(DRAG)));
+        .booleanState(DRAG)));
     public static final Block POLISHED_GRANITE_STAIRS = register(new Block("polished_granite_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_RED_SANDSTONE_STAIRS = register(new Block("smooth_red_sandstone_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MOSSY_STONE_BRICK_STAIRS = register(new Block("mossy_stone_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_DIORITE_STAIRS = register(new Block("polished_diorite_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MOSSY_COBBLESTONE_STAIRS = register(new Block("mossy_cobblestone_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block END_STONE_BRICK_STAIRS = register(new Block("end_stone_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block STONE_STAIRS = register(new Block("stone_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_SANDSTONE_STAIRS = register(new Block("smooth_sandstone_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_QUARTZ_STAIRS = register(new Block("smooth_quartz_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block GRANITE_STAIRS = register(new Block("granite_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block ANDESITE_STAIRS = register(new Block("andesite_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block RED_NETHER_BRICK_STAIRS = register(new Block("red_nether_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_ANDESITE_STAIRS = register(new Block("polished_andesite_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DIORITE_STAIRS = register(new Block("diorite_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_GRANITE_SLAB = register(new Block("polished_granite_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_RED_SANDSTONE_SLAB = register(new Block("smooth_red_sandstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MOSSY_STONE_BRICK_SLAB = register(new Block("mossy_stone_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_DIORITE_SLAB = register(new Block("polished_diorite_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block MOSSY_COBBLESTONE_SLAB = register(new Block("mossy_cobblestone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block END_STONE_BRICK_SLAB = register(new Block("end_stone_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_SANDSTONE_SLAB = register(new Block("smooth_sandstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block SMOOTH_QUARTZ_SLAB = register(new Block("smooth_quartz_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block GRANITE_SLAB = register(new Block("granite_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block ANDESITE_SLAB = register(new Block("andesite_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block RED_NETHER_BRICK_SLAB = register(new Block("red_nether_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_ANDESITE_SLAB = register(new Block("polished_andesite_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DIORITE_SLAB = register(new Block("diorite_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BRICK_WALL = register(new Block("brick_wall", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block PRISMARINE_WALL = register(new Block("prismarine_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block RED_SANDSTONE_WALL = register(new Block("red_sandstone_wall", builder().requiresCorrectToolForDrops().destroyTime(0.8f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block MOSSY_STONE_BRICK_WALL = register(new Block("mossy_stone_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block GRANITE_WALL = register(new Block("granite_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block STONE_BRICK_WALL = register(new Block("stone_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block MUD_BRICK_WALL = register(new Block("mud_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block NETHER_BRICK_WALL = register(new Block("nether_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block ANDESITE_WALL = register(new Block("andesite_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block RED_NETHER_BRICK_WALL = register(new Block("red_nether_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block SANDSTONE_WALL = register(new Block("sandstone_wall", builder().requiresCorrectToolForDrops().destroyTime(0.8f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block END_STONE_BRICK_WALL = register(new Block("end_stone_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block DIORITE_WALL = register(new Block("diorite_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block SCAFFOLDING = register(new Block("scaffolding", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(BOTTOM)
-            .intState(STABILITY_DISTANCE)
-            .booleanState(WATERLOGGED)));
+        .booleanState(BOTTOM)
+        .intState(STABILITY_DISTANCE)
+        .booleanState(WATERLOGGED)));
     public static final Block LOOM = register(new Block("loom", builder().destroyTime(2.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BARREL = register(new Block("barrel", builder().setBlockEntity(BlockEntityType.BARREL).destroyTime(2.5f)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(OPEN)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(OPEN)));
     public static final Block SMOKER = register(new Block("smoker", builder().setBlockEntity(BlockEntityType.SMOKER).requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LIT)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LIT)));
     public static final Block BLAST_FURNACE = register(new Block("blast_furnace", builder().setBlockEntity(BlockEntityType.BLAST_FURNACE).requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LIT)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LIT)));
     public static final Block CARTOGRAPHY_TABLE = register(new Block("cartography_table", builder().destroyTime(2.5f)));
     public static final Block FLETCHING_TABLE = register(new Block("fletching_table", builder().destroyTime(2.5f)));
     public static final Block GRINDSTONE = register(new Block("grindstone", builder().requiresCorrectToolForDrops().destroyTime(2.0f).pushReaction(PistonBehavior.BLOCK)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block LECTERN = register(new LecternBlock("lectern", builder().setBlockEntity(BlockEntityType.LECTERN).destroyTime(2.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(HAS_BOOK)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(HAS_BOOK)
+        .booleanState(POWERED)));
     public static final Block SMITHING_TABLE = register(new Block("smithing_table", builder().destroyTime(2.5f)));
     public static final Block STONECUTTER = register(new Block("stonecutter", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
     public static final Block BELL = register(new Block("bell", builder().setBlockEntity(BlockEntityType.BELL).requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(BELL_ATTACHMENT)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(BELL_ATTACHMENT)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block LANTERN = register(new Block("lantern", builder().requiresCorrectToolForDrops().destroyTime(3.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(HANGING)
-            .booleanState(WATERLOGGED)));
+        .booleanState(HANGING)
+        .booleanState(WATERLOGGED)));
     public static final Block SOUL_LANTERN = register(new Block("soul_lantern", builder().requiresCorrectToolForDrops().destroyTime(3.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(HANGING)
-            .booleanState(WATERLOGGED)));
+        .booleanState(HANGING)
+        .booleanState(WATERLOGGED)));
     public static final Block CAMPFIRE = register(new Block("campfire", builder().setBlockEntity(BlockEntityType.CAMPFIRE).destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LIT)
-            .booleanState(SIGNAL_FIRE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LIT)
+        .booleanState(SIGNAL_FIRE)
+        .booleanState(WATERLOGGED)));
     public static final Block SOUL_CAMPFIRE = register(new Block("soul_campfire", builder().setBlockEntity(BlockEntityType.CAMPFIRE).destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(LIT)
-            .booleanState(SIGNAL_FIRE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(LIT)
+        .booleanState(SIGNAL_FIRE)
+        .booleanState(WATERLOGGED)));
     public static final Block SWEET_BERRY_BUSH = register(new Block("sweet_berry_bush", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_3)));
+        .intState(AGE_3)));
     public static final Block WARPED_STEM = register(new Block("warped_stem", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_WARPED_STEM = register(new Block("stripped_warped_stem", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block WARPED_HYPHAE = register(new Block("warped_hyphae", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_WARPED_HYPHAE = register(new Block("stripped_warped_hyphae", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block WARPED_NYLIUM = register(new Block("warped_nylium", builder().requiresCorrectToolForDrops().destroyTime(0.4f)));
     public static final Block WARPED_FUNGUS = register(new Block("warped_fungus", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block WARPED_WART_BLOCK = register(new Block("warped_wart_block", builder().destroyTime(1.0f)));
     public static final Block WARPED_ROOTS = register(new Block("warped_roots", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block NETHER_SPROUTS = register(new Block("nether_sprouts", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block CRIMSON_STEM = register(new Block("crimson_stem", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_CRIMSON_STEM = register(new Block("stripped_crimson_stem", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block CRIMSON_HYPHAE = register(new Block("crimson_hyphae", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block STRIPPED_CRIMSON_HYPHAE = register(new Block("stripped_crimson_hyphae", builder().destroyTime(2.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block CRIMSON_NYLIUM = register(new Block("crimson_nylium", builder().requiresCorrectToolForDrops().destroyTime(0.4f)));
     public static final Block CRIMSON_FUNGUS = register(new Block("crimson_fungus", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block SHROOMLIGHT = register(new Block("shroomlight", builder().destroyTime(1.0f)));
     public static final Block WEEPING_VINES = register(new Block("weeping_vines", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_25)));
+        .intState(AGE_25)));
     public static final Block WEEPING_VINES_PLANT = register(new Block("weeping_vines_plant", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.WEEPING_VINES)));
     public static final Block TWISTING_VINES = register(new Block("twisting_vines", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_25)));
+        .intState(AGE_25)));
     public static final Block TWISTING_VINES_PLANT = register(new Block("twisting_vines_plant", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.TWISTING_VINES)));
     public static final Block CRIMSON_ROOTS = register(new Block("crimson_roots", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block CRIMSON_PLANKS = register(new Block("crimson_planks", builder().destroyTime(2.0f)));
     public static final Block WARPED_PLANKS = register(new Block("warped_planks", builder().destroyTime(2.0f)));
     public static final Block CRIMSON_SLAB = register(new Block("crimson_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_SLAB = register(new Block("warped_slab", builder().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CRIMSON_PRESSURE_PLATE = register(new Block("crimson_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block WARPED_PRESSURE_PLATE = register(new Block("warped_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block CRIMSON_FENCE = register(new Block("crimson_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block WARPED_FENCE = register(new Block("warped_fence", builder().destroyTime(2.0f)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block CRIMSON_TRAPDOOR = register(new TrapDoorBlock("crimson_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_TRAPDOOR = register(new TrapDoorBlock("warped_trapdoor", builder().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block CRIMSON_FENCE_GATE = register(new Block("crimson_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WARPED_FENCE_GATE = register(new Block("warped_fence_gate", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(IN_WALL)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(IN_WALL)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block CRIMSON_STAIRS = register(new Block("crimson_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_STAIRS = register(new Block("warped_stairs", builder().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CRIMSON_BUTTON = register(new Block("crimson_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block WARPED_BUTTON = register(new Block("warped_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block CRIMSON_DOOR = register(new DoorBlock("crimson_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WARPED_DOOR = register(new DoorBlock("warped_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block CRIMSON_SIGN = register(new Block("crimson_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_SIGN = register(new Block("warped_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .intState(ROTATION_16)
-            .booleanState(WATERLOGGED)));
+        .intState(ROTATION_16)
+        .booleanState(WATERLOGGED)));
     public static final Block CRIMSON_WALL_SIGN = register(new Block("crimson_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block WARPED_WALL_SIGN = register(new Block("warped_wall_sign", builder().setBlockEntity(BlockEntityType.SIGN).destroyTime(1.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block STRUCTURE_BLOCK = register(new Block("structure_block", builder().setBlockEntity(BlockEntityType.STRUCTURE_BLOCK).requiresCorrectToolForDrops().destroyTime(-1.0f)
-            .enumState(STRUCTUREBLOCK_MODE)));
+        .enumState(STRUCTUREBLOCK_MODE)));
     public static final Block JIGSAW = register(new Block("jigsaw", builder().setBlockEntity(BlockEntityType.JIGSAW).requiresCorrectToolForDrops().destroyTime(-1.0f)
-            .enumState(ORIENTATION, FrontAndTop.VALUES)));
+        .enumState(ORIENTATION, FrontAndTop.VALUES)));
     public static final Block COMPOSTER = register(new Block("composter", builder().destroyTime(0.6f)
-            .intState(LEVEL_COMPOSTER)));
+        .intState(LEVEL_COMPOSTER)));
     public static final Block TARGET = register(new Block("target", builder().destroyTime(0.5f)
-            .intState(POWER)));
+        .intState(POWER)));
     public static final Block BEE_NEST = register(new Block("bee_nest", builder().setBlockEntity(BlockEntityType.BEEHIVE).destroyTime(0.3f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .intState(LEVEL_HONEY)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .intState(LEVEL_HONEY)));
     public static final Block BEEHIVE = register(new Block("beehive", builder().setBlockEntity(BlockEntityType.BEEHIVE).destroyTime(0.6f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .intState(LEVEL_HONEY)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .intState(LEVEL_HONEY)));
     public static final Block HONEY_BLOCK = register(new HoneyBlock("honey_block", builder()));
     public static final Block HONEYCOMB_BLOCK = register(new Block("honeycomb_block", builder().destroyTime(0.6f)));
     public static final Block NETHERITE_BLOCK = register(new Block("netherite_block", builder().requiresCorrectToolForDrops().destroyTime(50.0f)));
     public static final Block ANCIENT_DEBRIS = register(new Block("ancient_debris", builder().requiresCorrectToolForDrops().destroyTime(30.0f)));
     public static final Block CRYING_OBSIDIAN = register(new Block("crying_obsidian", builder().requiresCorrectToolForDrops().destroyTime(50.0f)));
     public static final Block RESPAWN_ANCHOR = register(new Block("respawn_anchor", builder().requiresCorrectToolForDrops().destroyTime(50.0f)
-            .intState(RESPAWN_ANCHOR_CHARGES)));
+        .intState(RESPAWN_ANCHOR_CHARGES)));
     public static final Block POTTED_CRIMSON_FUNGUS = register(new FlowerPotBlock("potted_crimson_fungus", CRIMSON_FUNGUS, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_WARPED_FUNGUS = register(new FlowerPotBlock("potted_warped_fungus", WARPED_FUNGUS, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_CRIMSON_ROOTS = register(new FlowerPotBlock("potted_crimson_roots", CRIMSON_ROOTS, builder().pushReaction(PistonBehavior.DESTROY)));
@@ -2196,257 +2265,257 @@ public final class Blocks {
     public static final Block LODESTONE = register(new Block("lodestone", builder().requiresCorrectToolForDrops().destroyTime(3.5f).pushReaction(PistonBehavior.BLOCK)));
     public static final Block BLACKSTONE = register(new Block("blackstone", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block BLACKSTONE_STAIRS = register(new Block("blackstone_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block BLACKSTONE_WALL = register(new Block("blackstone_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block BLACKSTONE_SLAB = register(new Block("blackstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_BLACKSTONE = register(new Block("polished_blackstone", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block POLISHED_BLACKSTONE_BRICKS = register(new Block("polished_blackstone_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block CRACKED_POLISHED_BLACKSTONE_BRICKS = register(new Block("cracked_polished_blackstone_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block CHISELED_POLISHED_BLACKSTONE = register(new Block("chiseled_polished_blackstone", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block POLISHED_BLACKSTONE_BRICK_SLAB = register(new Block("polished_blackstone_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_BLACKSTONE_BRICK_STAIRS = register(new Block("polished_blackstone_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_BLACKSTONE_BRICK_WALL = register(new Block("polished_blackstone_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block GILDED_BLACKSTONE = register(new Block("gilded_blackstone", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block POLISHED_BLACKSTONE_STAIRS = register(new Block("polished_blackstone_stairs", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_BLACKSTONE_SLAB = register(new Block("polished_blackstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_BLACKSTONE_PRESSURE_PLATE = register(new Block("polished_blackstone_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(POWERED)));
+        .booleanState(POWERED)));
     public static final Block POLISHED_BLACKSTONE_BUTTON = register(new Block("polished_blackstone_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(ATTACH_FACE)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(POWERED)));
+        .enumState(ATTACH_FACE)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(POWERED)));
     public static final Block POLISHED_BLACKSTONE_WALL = register(new Block("polished_blackstone_wall", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block CHISELED_NETHER_BRICKS = register(new Block("chiseled_nether_bricks", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block CRACKED_NETHER_BRICKS = register(new Block("cracked_nether_bricks", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block QUARTZ_BRICKS = register(new Block("quartz_bricks", builder().requiresCorrectToolForDrops().destroyTime(0.8f)));
     public static final Block CANDLE = register(new Block("candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block WHITE_CANDLE = register(new Block("white_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block ORANGE_CANDLE = register(new Block("orange_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block MAGENTA_CANDLE = register(new Block("magenta_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block LIGHT_BLUE_CANDLE = register(new Block("light_blue_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block YELLOW_CANDLE = register(new Block("yellow_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block LIME_CANDLE = register(new Block("lime_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block PINK_CANDLE = register(new Block("pink_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block GRAY_CANDLE = register(new Block("gray_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block LIGHT_GRAY_CANDLE = register(new Block("light_gray_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block CYAN_CANDLE = register(new Block("cyan_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block PURPLE_CANDLE = register(new Block("purple_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block BLUE_CANDLE = register(new Block("blue_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block BROWN_CANDLE = register(new Block("brown_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block GREEN_CANDLE = register(new Block("green_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block RED_CANDLE = register(new Block("red_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block BLACK_CANDLE = register(new Block("black_candle", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .intState(CANDLES)
-            .booleanState(LIT)
-            .booleanState(WATERLOGGED)));
+        .intState(CANDLES)
+        .booleanState(LIT)
+        .booleanState(WATERLOGGED)));
     public static final Block CANDLE_CAKE = register(new Block("candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block WHITE_CANDLE_CAKE = register(new Block("white_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block ORANGE_CANDLE_CAKE = register(new Block("orange_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block MAGENTA_CANDLE_CAKE = register(new Block("magenta_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block LIGHT_BLUE_CANDLE_CAKE = register(new Block("light_blue_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block YELLOW_CANDLE_CAKE = register(new Block("yellow_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block LIME_CANDLE_CAKE = register(new Block("lime_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block PINK_CANDLE_CAKE = register(new Block("pink_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block GRAY_CANDLE_CAKE = register(new Block("gray_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block LIGHT_GRAY_CANDLE_CAKE = register(new Block("light_gray_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block CYAN_CANDLE_CAKE = register(new Block("cyan_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block PURPLE_CANDLE_CAKE = register(new Block("purple_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block BLUE_CANDLE_CAKE = register(new Block("blue_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block BROWN_CANDLE_CAKE = register(new Block("brown_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block GREEN_CANDLE_CAKE = register(new Block("green_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block RED_CANDLE_CAKE = register(new Block("red_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block BLACK_CANDLE_CAKE = register(new Block("black_candle_cake", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.CAKE)
-            .booleanState(LIT)));
+        .booleanState(LIT)));
     public static final Block AMETHYST_BLOCK = register(new Block("amethyst_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block BUDDING_AMETHYST = register(new Block("budding_amethyst", builder().requiresCorrectToolForDrops().destroyTime(1.5f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block AMETHYST_CLUSTER = register(new Block("amethyst_cluster", builder().destroyTime(1.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(WATERLOGGED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(WATERLOGGED)));
     public static final Block LARGE_AMETHYST_BUD = register(new Block("large_amethyst_bud", builder().destroyTime(1.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(WATERLOGGED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(WATERLOGGED)));
     public static final Block MEDIUM_AMETHYST_BUD = register(new Block("medium_amethyst_bud", builder().destroyTime(1.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(WATERLOGGED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(WATERLOGGED)));
     public static final Block SMALL_AMETHYST_BUD = register(new Block("small_amethyst_bud", builder().destroyTime(1.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(WATERLOGGED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(WATERLOGGED)));
     public static final Block TUFF = register(new Block("tuff", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block TUFF_SLAB = register(new Block("tuff_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block TUFF_STAIRS = register(new Block("tuff_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block TUFF_WALL = register(new Block("tuff_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block POLISHED_TUFF = register(new Block("polished_tuff", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block POLISHED_TUFF_SLAB = register(new Block("polished_tuff_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_TUFF_STAIRS = register(new Block("polished_tuff_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_TUFF_WALL = register(new Block("polished_tuff_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block CHISELED_TUFF = register(new Block("chiseled_tuff", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block TUFF_BRICKS = register(new Block("tuff_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block TUFF_BRICK_SLAB = register(new Block("tuff_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block TUFF_BRICK_STAIRS = register(new Block("tuff_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block TUFF_BRICK_WALL = register(new Block("tuff_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block CHISELED_TUFF_BRICKS = register(new Block("chiseled_tuff_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block CALCITE = register(new Block("calcite", builder().requiresCorrectToolForDrops().destroyTime(0.75f)));
     public static final Block TINTED_GLASS = register(new Block("tinted_glass", builder().destroyTime(0.3f)));
     public static final Block POWDER_SNOW = register(new Block("powder_snow", builder().destroyTime(0.25f)));
     public static final Block SCULK_SENSOR = register(new Block("sculk_sensor", builder().setBlockEntity(BlockEntityType.SCULK_SENSOR).destroyTime(1.5f)
-            .intState(POWER)
-            .enumState(SCULK_SENSOR_PHASE)
-            .booleanState(WATERLOGGED)));
+        .intState(POWER)
+        .enumState(SCULK_SENSOR_PHASE)
+        .booleanState(WATERLOGGED)));
     public static final Block CALIBRATED_SCULK_SENSOR = register(new Block("calibrated_sculk_sensor", builder().setBlockEntity(BlockEntityType.CALIBRATED_SCULK_SENSOR).destroyTime(1.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .intState(POWER)
-            .enumState(SCULK_SENSOR_PHASE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .intState(POWER)
+        .enumState(SCULK_SENSOR_PHASE)
+        .booleanState(WATERLOGGED)));
     public static final Block SCULK = register(new Block("sculk", builder().destroyTime(0.2f)));
     public static final Block SCULK_VEIN = register(new Block("sculk_vein", builder().destroyTime(0.2f).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(DOWN)
-            .booleanState(EAST)
-            .booleanState(NORTH)
-            .booleanState(SOUTH)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .booleanState(WEST)));
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block SCULK_CATALYST = register(new Block("sculk_catalyst", builder().setBlockEntity(BlockEntityType.SCULK_CATALYST).destroyTime(3.0f)
-            .booleanState(BLOOM)));
+        .booleanState(BLOOM)));
     public static final Block SCULK_SHRIEKER = register(new Block("sculk_shrieker", builder().setBlockEntity(BlockEntityType.SCULK_SHRIEKER).destroyTime(3.0f)
-            .booleanState(CAN_SUMMON)
-            .booleanState(SHRIEKING)
-            .booleanState(WATERLOGGED)));
+        .booleanState(CAN_SUMMON)
+        .booleanState(SHRIEKING)
+        .booleanState(WATERLOGGED)));
     public static final Block COPPER_BLOCK = register(new Block("copper_block", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block EXPOSED_COPPER = register(new Block("exposed_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block WEATHERED_COPPER = register(new Block("weathered_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
@@ -2466,37 +2535,37 @@ public final class Blocks {
     public static final Block WAXED_EXPOSED_CHISELED_COPPER = register(new Block("waxed_exposed_chiseled_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block WAXED_CHISELED_COPPER = register(new Block("waxed_chiseled_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block OXIDIZED_CUT_COPPER_STAIRS = register(new Block("oxidized_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WEATHERED_CUT_COPPER_STAIRS = register(new Block("weathered_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block EXPOSED_CUT_COPPER_STAIRS = register(new Block("exposed_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CUT_COPPER_STAIRS = register(new Block("cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block OXIDIZED_CUT_COPPER_SLAB = register(new Block("oxidized_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WEATHERED_CUT_COPPER_SLAB = register(new Block("weathered_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block EXPOSED_CUT_COPPER_SLAB = register(new Block("exposed_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block CUT_COPPER_SLAB = register(new Block("cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_COPPER_BLOCK = register(new Block("waxed_copper_block", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block WAXED_WEATHERED_COPPER = register(new Block("waxed_weathered_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block WAXED_EXPOSED_COPPER = register(new Block("waxed_exposed_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
@@ -2506,281 +2575,281 @@ public final class Blocks {
     public static final Block WAXED_EXPOSED_CUT_COPPER = register(new Block("waxed_exposed_cut_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block WAXED_CUT_COPPER = register(new Block("waxed_cut_copper", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block WAXED_OXIDIZED_CUT_COPPER_STAIRS = register(new Block("waxed_oxidized_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_WEATHERED_CUT_COPPER_STAIRS = register(new Block("waxed_weathered_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_EXPOSED_CUT_COPPER_STAIRS = register(new Block("waxed_exposed_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_CUT_COPPER_STAIRS = register(new Block("waxed_cut_copper_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_OXIDIZED_CUT_COPPER_SLAB = register(new Block("waxed_oxidized_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_WEATHERED_CUT_COPPER_SLAB = register(new Block("waxed_weathered_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_EXPOSED_CUT_COPPER_SLAB = register(new Block("waxed_exposed_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_CUT_COPPER_SLAB = register(new Block("waxed_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block COPPER_DOOR = register(new DoorBlock("copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block EXPOSED_COPPER_DOOR = register(new DoorBlock("exposed_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block OXIDIZED_COPPER_DOOR = register(new DoorBlock("oxidized_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WEATHERED_COPPER_DOOR = register(new DoorBlock("weathered_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WAXED_COPPER_DOOR = register(new DoorBlock("waxed_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WAXED_EXPOSED_COPPER_DOOR = register(new DoorBlock("waxed_exposed_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WAXED_OXIDIZED_COPPER_DOOR = register(new DoorBlock("waxed_oxidized_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block WAXED_WEATHERED_COPPER_DOOR = register(new DoorBlock("waxed_weathered_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .enumState(DOOR_HINGE)
-            .booleanState(OPEN)
-            .booleanState(POWERED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .enumState(DOOR_HINGE)
+        .booleanState(OPEN)
+        .booleanState(POWERED)));
     public static final Block COPPER_TRAPDOOR = register(new TrapDoorBlock("copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block EXPOSED_COPPER_TRAPDOOR = register(new TrapDoorBlock("exposed_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block OXIDIZED_COPPER_TRAPDOOR = register(new TrapDoorBlock("oxidized_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block WEATHERED_COPPER_TRAPDOOR = register(new TrapDoorBlock("weathered_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_COPPER_TRAPDOOR = register(new TrapDoorBlock("waxed_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_EXPOSED_COPPER_TRAPDOOR = register(new TrapDoorBlock("waxed_exposed_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_OXIDIZED_COPPER_TRAPDOOR = register(new TrapDoorBlock("waxed_oxidized_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_WEATHERED_COPPER_TRAPDOOR = register(new TrapDoorBlock("waxed_weathered_copper_trapdoor", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .booleanState(OPEN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .booleanState(OPEN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block COPPER_GRATE = register(new Block("copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block EXPOSED_COPPER_GRATE = register(new Block("exposed_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block WEATHERED_COPPER_GRATE = register(new Block("weathered_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block OXIDIZED_COPPER_GRATE = register(new Block("oxidized_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_COPPER_GRATE = register(new Block("waxed_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_EXPOSED_COPPER_GRATE = register(new Block("waxed_exposed_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_WEATHERED_COPPER_GRATE = register(new Block("waxed_weathered_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block WAXED_OXIDIZED_COPPER_GRATE = register(new Block("waxed_oxidized_copper_grate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block COPPER_BULB = register(new Block("copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block EXPOSED_COPPER_BULB = register(new Block("exposed_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block WEATHERED_COPPER_BULB = register(new Block("weathered_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block OXIDIZED_COPPER_BULB = register(new Block("oxidized_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block WAXED_COPPER_BULB = register(new Block("waxed_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block WAXED_EXPOSED_COPPER_BULB = register(new Block("waxed_exposed_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block WAXED_WEATHERED_COPPER_BULB = register(new Block("waxed_weathered_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block WAXED_OXIDIZED_COPPER_BULB = register(new Block("waxed_oxidized_copper_bulb", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .booleanState(LIT)
-            .booleanState(POWERED)));
+        .booleanState(LIT)
+        .booleanState(POWERED)));
     public static final Block LIGHTNING_ROD = register(new Block("lightning_rod", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
-            .booleanState(POWERED)
-            .booleanState(WATERLOGGED)));
+        .enumState(FACING, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP, Direction.DOWN)
+        .booleanState(POWERED)
+        .booleanState(WATERLOGGED)));
     public static final Block POINTED_DRIPSTONE = register(new Block("pointed_dripstone", builder().destroyTime(1.5f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(DRIPSTONE_THICKNESS)
-            .enumState(VERTICAL_DIRECTION, Direction.UP, Direction.DOWN)
-            .booleanState(WATERLOGGED)));
+        .enumState(DRIPSTONE_THICKNESS)
+        .enumState(VERTICAL_DIRECTION, Direction.UP, Direction.DOWN)
+        .booleanState(WATERLOGGED)));
     public static final Block DRIPSTONE_BLOCK = register(new Block("dripstone_block", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block CAVE_VINES = register(new Block("cave_vines", builder().pushReaction(PistonBehavior.DESTROY)
-            .intState(AGE_25)
-            .booleanState(BERRIES)));
+        .intState(AGE_25)
+        .booleanState(BERRIES)));
     public static final Block CAVE_VINES_PLANT = register(new Block("cave_vines_plant", builder().pushReaction(PistonBehavior.DESTROY).pickItem(() -> Items.GLOW_BERRIES)
-            .booleanState(BERRIES)));
+        .booleanState(BERRIES)));
     public static final Block SPORE_BLOSSOM = register(new Block("spore_blossom", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block AZALEA = register(new Block("azalea", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block FLOWERING_AZALEA = register(new Block("flowering_azalea", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block MOSS_CARPET = register(new Block("moss_carpet", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block PINK_PETALS = register(new Block("pink_petals", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .intState(FLOWER_AMOUNT)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .intState(FLOWER_AMOUNT)));
     public static final Block MOSS_BLOCK = register(new Block("moss_block", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)));
     public static final Block BIG_DRIPLEAF = register(new Block("big_dripleaf", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(TILT)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(TILT)
+        .booleanState(WATERLOGGED)));
     public static final Block BIG_DRIPLEAF_STEM = register(new Block("big_dripleaf_stem", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block SMALL_DRIPLEAF = register(new Block("small_dripleaf", builder().pushReaction(PistonBehavior.DESTROY)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(DOUBLE_BLOCK_HALF)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(DOUBLE_BLOCK_HALF)
+        .booleanState(WATERLOGGED)));
     public static final Block HANGING_ROOTS = register(new Block("hanging_roots", builder().pushReaction(PistonBehavior.DESTROY)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
     public static final Block ROOTED_DIRT = register(new Block("rooted_dirt", builder().destroyTime(0.5f)));
     public static final Block MUD = register(new Block("mud", builder().destroyTime(0.5f)));
     public static final Block DEEPSLATE = register(new Block("deepslate", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block COBBLED_DEEPSLATE = register(new Block("cobbled_deepslate", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block COBBLED_DEEPSLATE_STAIRS = register(new Block("cobbled_deepslate_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block COBBLED_DEEPSLATE_SLAB = register(new Block("cobbled_deepslate_slab", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block COBBLED_DEEPSLATE_WALL = register(new Block("cobbled_deepslate_wall", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block POLISHED_DEEPSLATE = register(new Block("polished_deepslate", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block POLISHED_DEEPSLATE_STAIRS = register(new Block("polished_deepslate_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_DEEPSLATE_SLAB = register(new Block("polished_deepslate_slab", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block POLISHED_DEEPSLATE_WALL = register(new Block("polished_deepslate_wall", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block DEEPSLATE_TILES = register(new Block("deepslate_tiles", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block DEEPSLATE_TILE_STAIRS = register(new Block("deepslate_tile_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DEEPSLATE_TILE_SLAB = register(new Block("deepslate_tile_slab", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DEEPSLATE_TILE_WALL = register(new Block("deepslate_tile_wall", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block DEEPSLATE_BRICKS = register(new Block("deepslate_bricks", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block DEEPSLATE_BRICK_STAIRS = register(new Block("deepslate_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .enumState(HALF)
-            .enumState(STAIRS_SHAPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DEEPSLATE_BRICK_SLAB = register(new Block("deepslate_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(SLAB_TYPE)
-            .booleanState(WATERLOGGED)));
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
     public static final Block DEEPSLATE_BRICK_WALL = register(new Block("deepslate_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
-            .enumState(EAST_WALL)
-            .enumState(NORTH_WALL)
-            .enumState(SOUTH_WALL)
-            .booleanState(UP)
-            .booleanState(WATERLOGGED)
-            .enumState(WEST_WALL)));
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
     public static final Block CHISELED_DEEPSLATE = register(new Block("chiseled_deepslate", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block CRACKED_DEEPSLATE_BRICKS = register(new Block("cracked_deepslate_bricks", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block CRACKED_DEEPSLATE_TILES = register(new Block("cracked_deepslate_tiles", builder().requiresCorrectToolForDrops().destroyTime(3.5f)));
     public static final Block INFESTED_DEEPSLATE = register(new Block("infested_deepslate", builder().destroyTime(1.5f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block SMOOTH_BASALT = register(new Block("smooth_basalt", builder().requiresCorrectToolForDrops().destroyTime(1.25f)));
     public static final Block RAW_IRON_BLOCK = register(new Block("raw_iron_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
     public static final Block RAW_COPPER_BLOCK = register(new Block("raw_copper_block", builder().requiresCorrectToolForDrops().destroyTime(5.0f)));
@@ -2788,30 +2857,39 @@ public final class Blocks {
     public static final Block POTTED_AZALEA_BUSH = register(new FlowerPotBlock("potted_azalea_bush", AZALEA, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block POTTED_FLOWERING_AZALEA_BUSH = register(new FlowerPotBlock("potted_flowering_azalea_bush", FLOWERING_AZALEA, builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block OCHRE_FROGLIGHT = register(new Block("ochre_froglight", builder().destroyTime(0.3f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block VERDANT_FROGLIGHT = register(new Block("verdant_froglight", builder().destroyTime(0.3f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block PEARLESCENT_FROGLIGHT = register(new Block("pearlescent_froglight", builder().destroyTime(0.3f)
-            .enumState(AXIS, Axis.VALUES)));
+        .enumState(AXIS, Axis.VALUES)));
     public static final Block FROGSPAWN = register(new Block("frogspawn", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block REINFORCED_DEEPSLATE = register(new Block("reinforced_deepslate", builder().destroyTime(55.0f)));
     public static final Block DECORATED_POT = register(new Block("decorated_pot", builder().setBlockEntity(BlockEntityType.DECORATED_POT).pushReaction(PistonBehavior.DESTROY)
-            .booleanState(CRACKED)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(WATERLOGGED)));
+        .booleanState(CRACKED)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(WATERLOGGED)));
     public static final Block CRAFTER = register(new Block("crafter", builder().setBlockEntity(BlockEntityType.CRAFTER).destroyTime(1.5f)
-            .booleanState(CRAFTING)
-            .enumState(ORIENTATION, FrontAndTop.VALUES)
-            .booleanState(TRIGGERED)));
+        .booleanState(CRAFTING)
+        .enumState(ORIENTATION, FrontAndTop.VALUES)
+        .booleanState(TRIGGERED)));
     public static final Block TRIAL_SPAWNER = register(new Block("trial_spawner", builder().setBlockEntity(BlockEntityType.TRIAL_SPAWNER).destroyTime(50.0f)
-            .booleanState(OMINOUS)
-            .enumState(TRIAL_SPAWNER_STATE)));
+        .booleanState(OMINOUS)
+        .enumState(TRIAL_SPAWNER_STATE)));
     public static final Block VAULT = register(new Block("vault", builder().setBlockEntity(BlockEntityType.VAULT).destroyTime(50.0f)
-            .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
-            .booleanState(OMINOUS)
-            .enumState(VAULT_STATE)));
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .booleanState(OMINOUS)
+        .enumState(VAULT_STATE)));
     public static final Block HEAVY_CORE = register(new Block("heavy_core", builder().destroyTime(10.0f)
-            .booleanState(WATERLOGGED)));
+        .booleanState(WATERLOGGED)));
+    public static final Block PALE_MOSS_BLOCK = register(new Block("pale_moss_block", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)));
+    public static final Block PALE_MOSS_CARPET = register(new Block("pale_moss_carpet", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
+        .booleanState(BOTTOM)
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .enumState(WEST_WALL)));
+    public static final Block PALE_HANGING_MOSS = register(new Block("pale_hanging_moss", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
+        .booleanState(TIP)));
 
     private static <T extends Block> T register(T block) {
         block.setJavaId(BlockRegistries.JAVA_BLOCKS.get().size());
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java b/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java
index 7efa2ef80..3e5f1b510 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java
@@ -47,6 +47,7 @@ public final class Properties {
     public static final BooleanProperty INVERTED = BooleanProperty.create("inverted");
     public static final BooleanProperty IN_WALL = BooleanProperty.create("in_wall");
     public static final BooleanProperty LIT = BooleanProperty.create("lit");
+    public static final BooleanProperty TIP = BooleanProperty.create("tip");
     public static final BooleanProperty LOCKED = BooleanProperty.create("locked");
     public static final BooleanProperty OCCUPIED = BooleanProperty.create("occupied");
     public static final BooleanProperty OPEN = BooleanProperty.create("open");
@@ -142,5 +143,6 @@ public final class Properties {
     public static final BooleanProperty CRAFTING = BooleanProperty.create("crafting");
     public static final BasicEnumProperty TRIAL_SPAWNER_STATE = BasicEnumProperty.create("trial_spawner_state", "inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown");
     public static final BasicEnumProperty VAULT_STATE = BasicEnumProperty.create("vault_state", "inactive", "active", "unlocking", "ejecting");
+    public static final BasicEnumProperty CREAKING = BasicEnumProperty.create("creaking", "disabled", "dormant", "active");
     public static final BooleanProperty OMINOUS = BooleanProperty.create("ominous");
 }
diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java
new file mode 100644
index 000000000..8ba5f895b
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.level.physics;
+
+import org.cloudburstmc.math.vector.Vector3d;
+
+/**
+ * Holds the result of a collision check.
+ */
+public record CollisionResult(Vector3d correctedMovement, boolean horizontalCollision) {
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 9c20e9909..db802439f 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -191,7 +191,6 @@ import org.geysermc.mcprotocollib.network.event.session.SessionAdapter;
 import org.geysermc.mcprotocollib.network.packet.Packet;
 import org.geysermc.mcprotocollib.network.tcp.TcpClientSession;
 import org.geysermc.mcprotocollib.network.tcp.TcpSession;
-import org.geysermc.mcprotocollib.protocol.ClientListener;
 import org.geysermc.mcprotocollib.protocol.MinecraftConstants;
 import org.geysermc.mcprotocollib.protocol.MinecraftProtocol;
 import org.geysermc.mcprotocollib.protocol.data.ProtocolState;
@@ -207,8 +206,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.setting.SkinPart;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.CustomStatistic;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.Statistic;
 import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundClientInformationPacket;
-import org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound.ClientboundFinishConfigurationPacket;
-import org.geysermc.mcprotocollib.protocol.packet.configuration.serverbound.ServerboundFinishConfigurationPacket;
 import org.geysermc.mcprotocollib.protocol.packet.handshake.serverbound.ClientIntentionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatCommandSignedPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatPacket;
@@ -1275,7 +1272,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
                 Vector3d position = collisionManager.adjustBedrockPosition(playerEntity.getPosition(), playerEntity.isOnGround(), false);
                 // A null return value cancels the packet
                 if (position != null) {
-                    ServerboundMovePlayerPosPacket packet = new ServerboundMovePlayerPosPacket(playerEntity.isOnGround(),
+                    ServerboundMovePlayerPosPacket packet = new ServerboundMovePlayerPosPacket(playerEntity.isOnGround(), false, //FIXME
                             position.getX(), position.getY(), position.getZ());
                     sendDownstreamGamePacket(packet);
                 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index 3338d2e52..f051885d4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -729,10 +729,10 @@ public abstract class InventoryTranslator {
 
                     if (ingRemaining == 0) {
                         while (++ingredientIndex < ingredients.length) {
-                            if (ingredients[ingredientIndex].getOptions().length != 0) {
-                                ingRemaining = timesCrafted;
-                                break;
-                            }
+//                            if (ingredients[ingredientIndex].getOptions().length != 0) {
+//                                ingRemaining = timesCrafted;
+//                                break;
+//                            }
                         }
                     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundRecipesTranslator.java
deleted file mode 100644
index 9eb69183d..000000000
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundRecipesTranslator.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.translator.protocol.java;
-
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipePacket;
-import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
-import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@Translator(packet = ClientboundRecipePacket.class)
-public class JavaClientboundRecipesTranslator extends PacketTranslator<ClientboundRecipePacket> {
-
-    @Override
-    public void translate(GeyserSession session, ClientboundRecipePacket packet) {
-        UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
-        switch (packet.getAction()) {
-            case INIT -> {
-                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.INITIALLY_UNLOCKED);
-                recipesPacket.getUnlockedRecipes().addAll(getBedrockRecipes(session, packet.getAlreadyKnownRecipes()));
-            }
-            case ADD -> {
-                List<String> recipes = getBedrockRecipes(session, packet.getRecipes());
-                if (recipes.isEmpty()) {
-                    // Sending an empty list here packet will crash the client as of 1.20.60
-                    return;
-                }
-                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.NEWLY_UNLOCKED);
-                recipesPacket.getUnlockedRecipes().addAll(recipes);
-            }
-            case REMOVE -> {
-                List<String> recipes = getBedrockRecipes(session, packet.getRecipes());
-                if (recipes.isEmpty()) {
-                    // Sending an empty list here will crash the client as of 1.20.60
-                    return;
-                }
-                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.REMOVE_UNLOCKED);
-                recipesPacket.getUnlockedRecipes().addAll(recipes);
-            }
-        }
-        session.sendUpstreamPacket(recipesPacket);
-    }
-
-    private List<String> getBedrockRecipes(GeyserSession session, String[] javaRecipeIdentifiers) {
-        List<String> recipes = new ArrayList<>();
-        for (String javaIdentifier : javaRecipeIdentifiers) {
-            List<String> bedrockRecipes = session.getJavaToBedrockRecipeIds().get(javaIdentifier);
-            // Some recipes are not (un)lockable on Bedrock edition, like furnace or stonecutter recipes.
-            // So we don't store/send these.
-            if (bedrockRecipes != null) {
-                recipes.addAll(bedrockRecipes);
-            }
-        }
-        return recipes;
-    }
-}
\ No newline at end of file
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaGameProfileTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java
similarity index 91%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaGameProfileTranslator.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java
index 47d1cff08..cebf71efd 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaGameProfileTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.translator.protocol.java;
 
-import org.geysermc.mcprotocollib.auth.GameProfile;
 import net.kyori.adventure.key.Key;
 import org.geysermc.geyser.api.network.AuthType;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
@@ -34,17 +33,18 @@ import org.geysermc.geyser.skin.SkinManager;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.PluginMessageUtils;
+import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundCustomPayloadPacket;
-import org.geysermc.mcprotocollib.protocol.packet.login.clientbound.ClientboundGameProfilePacket;
+import org.geysermc.mcprotocollib.protocol.packet.login.clientbound.ClientboundLoginFinishedPacket;
 
 /**
- * ClientboundGameProfilePacket triggers protocol change LOGIN -> CONFIGURATION
+ * Triggers protocol change LOGIN -> CONFIGURATION
  */
-@Translator(packet = ClientboundGameProfilePacket.class)
-public class JavaGameProfileTranslator extends PacketTranslator<ClientboundGameProfilePacket> {
+@Translator(packet = ClientboundLoginFinishedPacket.class)
+public class JavaLoginFinishedTranslator extends PacketTranslator<ClientboundLoginFinishedPacket> {
 
     @Override
-    public void translate(GeyserSession session, ClientboundGameProfilePacket packet) {
+    public void translate(GeyserSession session, ClientboundLoginFinishedPacket packet) {
         PlayerEntity playerEntity = session.getPlayerEntity();
         AuthType remoteAuthType = session.remoteServer().authType();
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
new file mode 100644
index 000000000..74fb11814
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2019-2023 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java;
+
+import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookAddPacket;
+
+@Translator(packet = ClientboundRecipeBookAddPacket.class)
+public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRecipeBookAddPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundRecipeBookAddPacket packet) {
+        UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
+        recipesPacket.setAction(packet.isReplace() ? UnlockedRecipesPacket.ActionType.INITIALLY_UNLOCKED : UnlockedRecipesPacket.ActionType.NEWLY_UNLOCKED);
+//        List<String> recipes = getBedrockRecipes(session, packet.getEntries());
+//        if (recipes.isEmpty() && !packet.isReplace()) {
+//            // Sending an empty list here packet will crash the client as of 1.20.60
+//            return;
+//        }
+//        switch (packet.getAction()) {
+//            case INIT -> {
+//                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.INITIALLY_UNLOCKED);
+//                recipesPacket.getUnlockedRecipes().addAll(getBedrockRecipes(session, packet.getAlreadyKnownRecipes()));
+//            }
+//            case ADD -> {
+//
+//                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.NEWLY_UNLOCKED);
+//                recipesPacket.getUnlockedRecipes().addAll(recipes);
+//            }
+//            case REMOVE -> {
+//                List<String> recipes = getBedrockRecipes(session, packet.getRecipes());
+//                if (recipes.isEmpty()) {
+//                    // Sending an empty list here will crash the client as of 1.20.60
+//                    return;
+//                }
+//                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.REMOVE_UNLOCKED);
+//                recipesPacket.getUnlockedRecipes().addAll(recipes);
+//            }
+//        }
+//        session.sendUpstreamPacket(recipesPacket);
+    }
+
+//    private List<String> getBedrockRecipes(GeyserSession session, List<ClientboundRecipeBookAddPacket.Entry> entry) {
+//        List<String> recipes = new ArrayList<>();
+//        for (String javaIdentifier : javaRecipeIdentifiers) {
+//            List<String> bedrockRecipes = session.getJavaToBedrockRecipeIds().get(javaIdentifier);
+//            // Some recipes are not (un)lockable on Bedrock edition, like furnace or stonecutter recipes.
+//            // So we don't store/send these.
+//            if (bedrockRecipes != null) {
+//                recipes.addAll(bedrockRecipes);
+//            }
+//        }
+//        return recipes;
+//    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index 689e0448a..e6e875791 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -25,61 +25,18 @@
 
 package org.geysermc.geyser.translator.protocol.java;
 
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
-import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.ints.IntIterator;
-import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
-import it.unimi.dsi.fastutil.ints.IntSet;
-import lombok.AllArgsConstructor;
-import lombok.EqualsAndHashCode;
-import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
+import net.kyori.adventure.key.Key;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.MultiRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.RecipeData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTrimRecipeData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
-import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
-import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemTagDescriptor;
-import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
-import org.cloudburstmc.protocol.bedrock.packet.TrimDataPacket;
-import org.geysermc.geyser.GeyserImpl;
-import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
-import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
-import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
-import org.geysermc.geyser.inventory.recipe.GeyserStonecutterData;
-import org.geysermc.geyser.inventory.recipe.TrimRecipe;
-import org.geysermc.geyser.item.type.BedrockRequiresTagItem;
-import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.Registries;
-import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.geyser.util.InventoryUtils;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Recipe;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.RecipeType;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.data.ShapedRecipeData;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.data.ShapelessRecipeData;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.data.SmithingTransformRecipeData;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.data.StoneCuttingRecipeData;
+import org.geysermc.geyser.util.MinecraftKey;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundUpdateRecipesPacket;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 import static org.geysermc.geyser.util.InventoryUtils.LAST_RECIPE_NET_ID;
 
@@ -121,437 +78,443 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
         "minecraft:wooden_slab", "minecraft:wooden_slabs",
         "minecraft:planks", "minecraft:planks");
 
+    private static final Key SMITHING_BASE = MinecraftKey.key("smithing_base");
+    private static final Key SMITHING_TEMPLATE = MinecraftKey.key("smithing_template");
+    private static final Key SMITHING_ADDITION = MinecraftKey.key("smithing_addition");
+
     @Override
     public void translate(GeyserSession session, ClientboundUpdateRecipesPacket packet) {
-        boolean sendTrimRecipes = false;
-        Map<String, List<String>> recipeIDs = session.getJavaToBedrockRecipeIds();
-        recipeIDs.clear();
-        Int2ObjectMap<GeyserRecipe> recipeMap = new Int2ObjectOpenHashMap<>();
-        Int2ObjectMap<List<StoneCuttingRecipeData>> unsortedStonecutterData = new Int2ObjectOpenHashMap<>();
-        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
-        craftingDataPacket.setCleanRecipes(true);
-
-        RecipeContext context = new RecipeContext(session, craftingDataPacket, recipeMap);
-
-        for (Recipe recipe : packet.getRecipes()) {
-            switch (recipe.getType()) {
-                case CRAFTING_SHAPELESS -> {
-                    ShapelessRecipeData shapelessRecipeData = (ShapelessRecipeData) recipe.getData();
-                    List<String> bedrockRecipeIDs = context.translateShapelessRecipe(new GeyserShapelessRecipe(shapelessRecipeData));
-                    if (bedrockRecipeIDs != null) {
-                        context.addRecipeIdentifier(session, recipe.getIdentifier().asString(), bedrockRecipeIDs);
-                    }
-                }
-                case CRAFTING_SHAPED -> {
-                    ShapedRecipeData shapedRecipeData = (ShapedRecipeData) recipe.getData();
-                    List<String> bedrockRecipeIDs = context.translateShapedRecipe(new GeyserShapedRecipe(shapedRecipeData));
-                    if (bedrockRecipeIDs != null) {
-                        context.addRecipeIdentifier(session, recipe.getIdentifier().asString(), bedrockRecipeIDs);
-                    }
-                }
-                case STONECUTTING -> {
-                    StoneCuttingRecipeData stoneCuttingData = (StoneCuttingRecipeData) recipe.getData();
-                    if (stoneCuttingData.getIngredient().getOptions().length == 0) {
-                        if (GeyserImpl.getInstance().getConfig().isDebugMode()) {
-                            GeyserImpl.getInstance().getLogger().debug("Received broken stone cutter recipe: " + stoneCuttingData + " " +
-                                    recipe.getIdentifier() + " " + Registries.JAVA_ITEMS.get().get(stoneCuttingData.getResult().getId()).javaIdentifier());
-                        }
-                        continue;
-                    }
-                    ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0];
-                    List<StoneCuttingRecipeData> data = unsortedStonecutterData.get(ingredient.getId());
-                    if (data == null) {
-                        data = new ArrayList<>();
-                        unsortedStonecutterData.put(ingredient.getId(), data);
-                    }
-                    // Save for processing after all recipes have been received
-                    data.add(stoneCuttingData);
-                }
-                case SMITHING_TRANSFORM -> {
-                    SmithingTransformRecipeData data = (SmithingTransformRecipeData) recipe.getData();
-                    ItemData output = ItemTranslator.translateToBedrock(session, data.getResult());
-
-                    for (ItemStack template : data.getTemplate().getOptions()) {
-                        ItemDescriptorWithCount bedrockTemplate = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, template));
-
-                        for (ItemStack base : data.getBase().getOptions()) {
-                            ItemDescriptorWithCount bedrockBase = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, base));
-
-                            for (ItemStack addition : data.getAddition().getOptions()) {
-                                ItemDescriptorWithCount bedrockAddition = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, addition));
-
-                                String id = recipe.getIdentifier().asString();
-                                // Note: vanilla inputs use aux value of Short.MAX_VALUE
-                                craftingDataPacket.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData.of(id,
-                                        bedrockTemplate, bedrockBase, bedrockAddition, output, "smithing_table", context.getAndIncrementNetId()));
-
-                                recipeIDs.put(id, new ArrayList<>(Collections.singletonList(id)));
-                            }
-                        }
-                    }
-                }
-                case SMITHING_TRIM -> {
-                    sendTrimRecipes = true;
-                    // ignored currently - see below
-                }
-                case CRAFTING_DECORATED_POT -> {
-                    // Paper 1.20 seems to send only one recipe, which seems to be hardcoded to include all recipes.
-                    // We can send the equivalent Bedrock MultiRecipe! :)
-                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("685a742a-c42e-4a4e-88ea-5eb83fc98e5b"), context.getAndIncrementNetId()));
-                }
-                case CRAFTING_SPECIAL_BOOKCLONING -> {
-                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("d1ca6b84-338e-4f2f-9c6b-76cc8b4bd98d"), context.getAndIncrementNetId()));
-                }
-                case CRAFTING_SPECIAL_REPAIRITEM -> {
-                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("00000000-0000-0000-0000-000000000001"), context.getAndIncrementNetId()));
-                }
-                case CRAFTING_SPECIAL_MAPEXTENDING -> {
-                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("d392b075-4ba1-40ae-8789-af868d56f6ce"), context.getAndIncrementNetId()));
-                }
-                case CRAFTING_SPECIAL_MAPCLONING -> {
-                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("85939755-ba10-4d9d-a4cc-efb7a8e943c4"), context.getAndIncrementNetId()));
-                }
-                case CRAFTING_SPECIAL_FIREWORK_ROCKET -> {
-                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("00000000-0000-0000-0000-000000000002"), context.getAndIncrementNetId()));
-                }
-                default -> {
-                    List<GeyserRecipe> recipes = Registries.RECIPES.get(recipe.getType());
-                    if (recipes != null) {
-                        List<String> bedrockRecipeIds = new ArrayList<>();
-                        if (recipe.getType() == RecipeType.CRAFTING_SPECIAL_TIPPEDARROW) {
-                            // Only shaped recipe at this moment
-                            for (GeyserRecipe builtInRecipe : recipes) {
-                                var recipeIds = context.translateShapedRecipe((GeyserShapedRecipe) builtInRecipe);
-                                if (recipeIds != null) {
-                                    bedrockRecipeIds.addAll(recipeIds);
-                                }
-                            }
-                        } else if (recipe.getType() == RecipeType.CRAFTING_SPECIAL_SHULKERBOXCOLORING) {
-                            for (GeyserRecipe builtInRecipe : recipes) {
-                                var recipeIds = context.translateShulkerBoxRecipe((GeyserShapelessRecipe) builtInRecipe);
-                                if (recipeIds != null) {
-                                    bedrockRecipeIds.addAll(recipeIds);
-                                }
-                            }
-                        } else {
-                            for (GeyserRecipe builtInRecipe : recipes) {
-                                var recipeIds = context.translateShapelessRecipe((GeyserShapelessRecipe) builtInRecipe);
-                                if (recipeIds != null) {
-                                    bedrockRecipeIds.addAll(recipeIds);
-                                }
-                            }
-                        }
-                        context.addSpecialRecipesIdentifiers(recipe, bedrockRecipeIds);
-                    }
-                }
-            }
-        }
-        craftingDataPacket.getCraftingData().addAll(CARTOGRAPHY_RECIPES);
-        craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
-
-        Int2ObjectMap<GeyserStonecutterData> stonecutterRecipeMap = new Int2ObjectOpenHashMap<>();
-        for (Int2ObjectMap.Entry<List<StoneCuttingRecipeData>> data : unsortedStonecutterData.int2ObjectEntrySet()) {
-            // Sort the list by each output item's Java identifier - this is how it's sorted on Java, and therefore
-            // We can get the correct order for button pressing
-            data.getValue().sort(Comparator.comparing((stoneCuttingRecipeData ->
-                    Registries.JAVA_ITEMS.get().get(stoneCuttingRecipeData.getResult().getId())
-                        // See RecipeManager#getRecipesFor as of 1.21
-                            .translationKey())));
-
-            // Now that it's sorted, let's translate these recipes
-            int buttonId = 0;
-            for (StoneCuttingRecipeData stoneCuttingData : data.getValue()) {
-                // As of 1.16.4, all stonecutter recipes have one ingredient option
-                ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0];
-                ItemData input = ItemTranslator.translateToBedrock(session, ingredient);
-                ItemDescriptorWithCount descriptor = ItemDescriptorWithCount.fromItem(input);
-                ItemStack javaOutput = stoneCuttingData.getResult();
-                ItemData output = ItemTranslator.translateToBedrock(session, javaOutput);
-                if (!input.isValid() || !output.isValid()) {
-                    // Probably modded items
-                    continue;
-                }
-                UUID uuid = UUID.randomUUID();
-                // We need to register stonecutting recipes, so they show up on Bedrock
-                craftingDataPacket.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shapeless(uuid.toString(),
-                        Collections.singletonList(descriptor), Collections.singletonList(output), uuid, "stonecutter", 0, context.netId, RecipeUnlockingRequirement.INVALID));
-
-                // Save the recipe list for reference when crafting
-                // Add the net ID as the key and the button required + output for the value
-                stonecutterRecipeMap.put(context.getAndIncrementNetId(), new GeyserStonecutterData(buttonId++, javaOutput));
-
-                // Currently, stone cutter recipes are not locked/unlocked on Bedrock; so no need to cache their identifiers.
-            }
-        }
-
-        session.getLastRecipeNetId().set(context.netId); // No increment
-
-        // Only send smithing trim recipes if Java/ViaVersion sends them.
-        if (sendTrimRecipes) {
-            // BDS sends armor trim templates and materials before the CraftingDataPacket
-            TrimDataPacket trimDataPacket = new TrimDataPacket();
-            trimDataPacket.getPatterns().addAll(session.getRegistryCache().trimPatterns().values());
-            trimDataPacket.getMaterials().addAll(session.getRegistryCache().trimMaterials().values());
-            session.sendUpstreamPacket(trimDataPacket);
-
-            // Identical smithing_trim recipe sent by BDS that uses tag-descriptors, as the client seems to ignore the
-            // approach of using many default-descriptors (which we do for smithing_transform)
-            craftingDataPacket.getCraftingData().add(SmithingTrimRecipeData.of(TrimRecipe.ID,
-                    TrimRecipe.BASE, TrimRecipe.ADDITION, TrimRecipe.TEMPLATE, "smithing_table", session.getLastRecipeNetId().getAndIncrement()));
-        } else {
-            // manually add recipes for the upgrade template (workaround), since Java pre-1.20 doesn't
-            craftingDataPacket.getCraftingData().addAll(getSmithingTransformRecipes(session));
-        }
-        session.setOldSmithingTable(!sendTrimRecipes);
-        session.sendUpstreamPacket(craftingDataPacket);
-        session.setCraftingRecipes(recipeMap);
-        session.setStonecutterRecipes(stonecutterRecipeMap);
-    }
-
-    //TODO: rewrite
-    /**
-     * The Java server sends an array of items for each ingredient you can use per slot in the crafting grid.
-     * Bedrock recipes take only one ingredient per crafting grid slot.
-     *
-     * @return the Java ingredient list as an array that Bedrock can understand
-     */
-    private static ItemDescriptorWithCount[][] combinations(GeyserSession session, Ingredient[] ingredients) {
-        boolean empty = true;
-        Map<Set<ItemDescriptorWithCount>, IntSet> squashedOptions = new HashMap<>();
-        for (int i = 0; i < ingredients.length; i++) {
-            if (ingredients[i].getOptions().length == 0) {
-                squashedOptions.computeIfAbsent(Collections.singleton(ItemDescriptorWithCount.EMPTY), k -> new IntOpenHashSet()).add(i);
-                continue;
-            }
-            empty = false;
-            Ingredient ingredient = ingredients[i];
-            Map<GroupedItem, List<ItemDescriptorWithCount>> groupedByIds = Arrays.stream(ingredient.getOptions())
-                    .map(item -> ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, item)))
-                    .collect(Collectors.groupingBy(item -> item == ItemDescriptorWithCount.EMPTY ? new GroupedItem(ItemDefinition.AIR, 0) : new GroupedItem(((DefaultDescriptor) item.getDescriptor()).getItemId(), item.getCount())));
-            Set<ItemDescriptorWithCount> optionSet = new HashSet<>(groupedByIds.size());
-            for (Map.Entry<GroupedItem, List<ItemDescriptorWithCount>> entry : groupedByIds.entrySet()) {
-                if (entry.getValue().size() > 1) {
-                    GroupedItem groupedItem = entry.getKey();
-
-                    String recipeTag = RECIPE_TAGS.get(groupedItem.id.getIdentifier());
-                    if (recipeTag != null && ingredients.length > 1) {
-                        optionSet.add(new ItemDescriptorWithCount(new ItemTagDescriptor(recipeTag), groupedItem.count));
-                        continue;
-                    }
-
-                    int idCount = 0;
-                    //not optimal
-                    for (ItemMapping mapping : session.getItemMappings().getItems()) {
-                        if (mapping.getBedrockDefinition() == groupedItem.id) {
-                            idCount++;
-                        }
-                    }
-                    if (entry.getValue().size() < idCount) {
-                        optionSet.addAll(entry.getValue());
-                    } else {
-                        optionSet.add(groupedItem.id == ItemDefinition.AIR ? ItemDescriptorWithCount.EMPTY : new ItemDescriptorWithCount(new DefaultDescriptor(groupedItem.id, Short.MAX_VALUE), groupedItem.count));
-                    }
-                } else {
-                    ItemDescriptorWithCount item = entry.getValue().get(0);
-                    optionSet.add(item);
-                }
-            }
-            squashedOptions.computeIfAbsent(optionSet, k -> new IntOpenHashSet()).add(i);
-        }
-        if (empty) {
-            // Crashes Bedrock 1.19.70 otherwise
-            // Fixes https://github.com/GeyserMC/Geyser/issues/3549
-            return null;
-        }
-        int totalCombinations = 1;
-        for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
-            totalCombinations *= optionSet.size();
-        }
-        if (totalCombinations > 500) {
-            ItemDescriptorWithCount[] translatedItems = new ItemDescriptorWithCount[ingredients.length];
-            for (int i = 0; i < ingredients.length; i++) {
-                if (ingredients[i].getOptions().length > 0) {
-                    translatedItems[i] = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, ingredients[i].getOptions()[0]));
-                } else {
-                    translatedItems[i] = ItemDescriptorWithCount.EMPTY;
-                }
-            }
-            return new ItemDescriptorWithCount[][]{translatedItems};
-        }
-        List<Set<ItemDescriptorWithCount>> sortedSets = new ArrayList<>(squashedOptions.keySet());
-        sortedSets.sort(Comparator.comparing(Set::size, Comparator.reverseOrder()));
-        ItemDescriptorWithCount[][] combinations = new ItemDescriptorWithCount[totalCombinations][ingredients.length];
-        int x = 1;
-        for (Set<ItemDescriptorWithCount> set : sortedSets) {
-            IntSet slotSet = squashedOptions.get(set);
-            int i = 0;
-            for (ItemDescriptorWithCount item : set) {
-                for (int j = 0; j < totalCombinations / set.size(); j++) {
-                    final int comboIndex = (i * x) + (j % x) + ((j / x) * set.size() * x);
-                    for (IntIterator it = slotSet.iterator(); it.hasNext(); ) {
-                        combinations[comboIndex][it.nextInt()] = item;
-                    }
-                }
-                i++;
-            }
-            x *= set.size();
-        }
-        return combinations;
-    }
-
-    private List<RecipeData> getSmithingTransformRecipes(GeyserSession session) {
-        List<RecipeData> recipes = new ArrayList<>();
-        ItemMapping template = session.getItemMappings().getStoredItems().upgradeTemplate();
-
-        for (String identifier : NETHERITE_UPGRADES) {
-            recipes.add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData.of(identifier + "_smithing",
-                    getDescriptorFromId(session, template.getBedrockIdentifier()),
-                    getDescriptorFromId(session, identifier.replace("netherite", "diamond")),
-                    getDescriptorFromId(session, "minecraft:netherite_ingot"),
-                    ItemData.builder().definition(Objects.requireNonNull(session.getItemMappings().getDefinition(identifier))).count(1).build(),
-                    "smithing_table",
-                    session.getLastRecipeNetId().getAndIncrement()));
-        }
-        return recipes;
-    }
-
-    private ItemDescriptorWithCount getDescriptorFromId(GeyserSession session, String bedrockId) {
-        ItemDefinition bedrockDefinition = session.getItemMappings().getDefinition(bedrockId);
-        if (bedrockDefinition != null) {
-            return ItemDescriptorWithCount.fromItem(ItemData.builder().definition(bedrockDefinition).count(1).build());
-        }
-        GeyserImpl.getInstance().getLogger().debug("Unable to find item with identifier " + bedrockId);
-        return ItemDescriptorWithCount.EMPTY;
-    }
-
-    @EqualsAndHashCode
-    @AllArgsConstructor
-    private static class GroupedItem {
-        ItemDefinition id;
-        int count;
-    }
-
-    private static final class RecipeContext {
-        private final GeyserSession session;
-        private final CraftingDataPacket packet;
-        private final Int2ObjectMap<GeyserRecipe> recipeMap;
-        // Get the last known network ID (first used for some pregenerated recipes) and increment from there.
-        private int netId = InventoryUtils.LAST_RECIPE_NET_ID + 1;
-
-        private RecipeContext(GeyserSession session, CraftingDataPacket packet, Int2ObjectMap<GeyserRecipe> recipeMap) {
-            this.session = session;
-            this.packet = packet;
-            this.recipeMap = recipeMap;
-        }
-
-        List<String> translateShulkerBoxRecipe(GeyserShapelessRecipe recipe) {
-            ItemStack result = recipe.result();
-            ItemData output = ItemTranslator.translateToBedrock(session, result);
-            if (!output.isValid()) {
-                // Likely modded item that Bedrock will complain about if it persists
-                return null;
-            }
-
-            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
-            if (!(javaItem instanceof BedrockRequiresTagItem)) {
-                // Strip NBT - tools won't appear in the recipe book otherwise
-                output = output.toBuilder().tag(null).build();
-            }
-            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
-            if (inputCombinations == null) {
-                return null;
-            }
-
-            List<String> bedrockRecipeIDs = new ArrayList<>();
-            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
-                UUID uuid = UUID.randomUUID();
-                bedrockRecipeIDs.add(uuid.toString());
-                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shulkerBox(uuid.toString(),
-                        Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, netId));
-                recipeMap.put(netId++, recipe);
-            }
-            return bedrockRecipeIDs;
-        }
-
-        List<String> translateShapelessRecipe(GeyserShapelessRecipe recipe) {
-            ItemStack result = recipe.result();
-            ItemData output = ItemTranslator.translateToBedrock(session, result);
-            if (!output.isValid()) {
-                // Likely modded item that Bedrock will complain about if it persists
-                return null;
-            }
-
-            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
-            if (!(javaItem instanceof BedrockRequiresTagItem)) {
-                // Strip NBT - tools won't appear in the recipe book otherwise
-                output = output.toBuilder().tag(null).build();
-            }
-            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
-            if (inputCombinations == null) {
-                return null;
-            }
-
-            List<String> bedrockRecipeIDs = new ArrayList<>();
-            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
-                UUID uuid = UUID.randomUUID();
-                bedrockRecipeIDs.add(uuid.toString());
-                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shapeless(uuid.toString(),
-                        Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, netId, RecipeUnlockingRequirement.INVALID));
-                recipeMap.put(netId++, recipe);
-            }
-            return bedrockRecipeIDs;
-        }
-
-        List<String> translateShapedRecipe(GeyserShapedRecipe recipe) {
-            ItemStack result = recipe.result();
-            ItemData output = ItemTranslator.translateToBedrock(session, result);
-            if (!output.isValid()) {
-                // Likely modded item that Bedrock will complain about if it persists
-                return null;
-            }
-
-            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
-            if (!(javaItem instanceof BedrockRequiresTagItem)) {
-                // Strip NBT - tools won't appear in the recipe book otherwise
-                output = output.toBuilder().tag(null).build();
-            }
-            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
-            if (inputCombinations == null) {
-                return null;
-            }
-
-            List<String> bedrockRecipeIDs = new ArrayList<>();
-            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
-                UUID uuid = UUID.randomUUID();
-                bedrockRecipeIDs.add(uuid.toString());
-                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData.shaped(uuid.toString(),
-                        recipe.width(), recipe.height(), Arrays.asList(inputs),
-                        Collections.singletonList(output), uuid, "crafting_table", 0, netId, false, RecipeUnlockingRequirement.INVALID));
-                recipeMap.put(netId++, recipe);
-            }
-            return bedrockRecipeIDs;
-        }
-
-        void addSpecialRecipesIdentifiers(Recipe recipe, List<String> identifiers) {
-            String javaRecipeID = switch (recipe.getType()) {
-                case CRAFTING_SPECIAL_SHULKERBOXCOLORING ->
-                    // BDS (un)locks the dyeing with the shulker box recipe, Java never - we want BDS behavior for ease of use
-                        "minecraft:shulker_box";
-                case CRAFTING_SPECIAL_TIPPEDARROW ->
-                    // similar as above
-                        "minecraft:arrow";
-                default -> recipe.getIdentifier().asString();
-            };
-
-            addRecipeIdentifier(session, javaRecipeID, identifiers);
-        }
-
-        void addRecipeIdentifier(GeyserSession session, String javaIdentifier, List<String> bedrockIdentifiers) {
-            session.getJavaToBedrockRecipeIds().computeIfAbsent(javaIdentifier, k -> new ArrayList<>()).addAll(bedrockIdentifiers);
-        }
-
-        int getAndIncrementNetId() {
-            return this.netId++;
-        }
+        // :(
     }
+//        boolean sendTrimRecipes = false;
+//        Map<String, List<String>> recipeIDs = session.getJavaToBedrockRecipeIds();
+//        recipeIDs.clear();
+//        Int2ObjectMap<GeyserRecipe> recipeMap = new Int2ObjectOpenHashMap<>();
+//        Int2ObjectMap<List<StoneCuttingRecipeData>> unsortedStonecutterData = new Int2ObjectOpenHashMap<>();
+//        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
+//        craftingDataPacket.setCleanRecipes(true);
+//
+//        RecipeContext context = new RecipeContext(session, craftingDataPacket, recipeMap);
+//
+//        for (Recipe recipe : packet.getRecipes()) {
+//            switch (recipe.getType()) {
+//                case CRAFTING_SHAPELESS -> {
+//                    ShapelessRecipeData shapelessRecipeData = (ShapelessRecipeData) recipe.getData();
+//                    List<String> bedrockRecipeIDs = context.translateShapelessRecipe(new GeyserShapelessRecipe(shapelessRecipeData));
+//                    if (bedrockRecipeIDs != null) {
+//                        context.addRecipeIdentifier(session, recipe.getIdentifier().asString(), bedrockRecipeIDs);
+//                    }
+//                }
+//                case CRAFTING_SHAPED -> {
+//                    ShapedRecipeData shapedRecipeData = (ShapedRecipeData) recipe.getData();
+//                    List<String> bedrockRecipeIDs = context.translateShapedRecipe(new GeyserShapedRecipe(shapedRecipeData));
+//                    if (bedrockRecipeIDs != null) {
+//                        context.addRecipeIdentifier(session, recipe.getIdentifier().asString(), bedrockRecipeIDs);
+//                    }
+//                }
+//                case STONECUTTING -> {
+//                    StoneCuttingRecipeData stoneCuttingData = (StoneCuttingRecipeData) recipe.getData();
+//                    if (stoneCuttingData.getIngredient().getOptions().length == 0) {
+//                        if (GeyserImpl.getInstance().getConfig().isDebugMode()) {
+//                            GeyserImpl.getInstance().getLogger().debug("Received broken stone cutter recipe: " + stoneCuttingData + " " +
+//                                    recipe.getIdentifier() + " " + Registries.JAVA_ITEMS.get().get(stoneCuttingData.getResult().getId()).javaIdentifier());
+//                        }
+//                        continue;
+//                    }
+//                    ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0];
+//                    List<StoneCuttingRecipeData> data = unsortedStonecutterData.get(ingredient.getId());
+//                    if (data == null) {
+//                        data = new ArrayList<>();
+//                        unsortedStonecutterData.put(ingredient.getId(), data);
+//                    }
+//                    // Save for processing after all recipes have been received
+//                    data.add(stoneCuttingData);
+//                }
+//                case SMITHING_TRANSFORM -> {
+//                    SmithingTransformRecipeData data = (SmithingTransformRecipeData) recipe.getData();
+//                    ItemData output = ItemTranslator.translateToBedrock(session, data.getResult());
+//
+//                    for (ItemStack template : data.getTemplate().getOptions()) {
+//                        ItemDescriptorWithCount bedrockTemplate = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, template));
+//
+//                        for (ItemStack base : data.getBase().getOptions()) {
+//                            ItemDescriptorWithCount bedrockBase = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, base));
+//
+//                            for (ItemStack addition : data.getAddition().getOptions()) {
+//                                ItemDescriptorWithCount bedrockAddition = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, addition));
+//
+//                                String id = recipe.getIdentifier().asString();
+//                                // Note: vanilla inputs use aux value of Short.MAX_VALUE
+//                                craftingDataPacket.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData.of(id,
+//                                        bedrockTemplate, bedrockBase, bedrockAddition, output, "smithing_table", context.getAndIncrementNetId()));
+//
+//                                recipeIDs.put(id, new ArrayList<>(Collections.singletonList(id)));
+//                            }
+//                        }
+//                    }
+//                }
+//                case SMITHING_TRIM -> {
+//                    sendTrimRecipes = true;
+//                    // ignored currently - see below
+//                }
+//                case CRAFTING_DECORATED_POT -> {
+//                    // Paper 1.20 seems to send only one recipe, which seems to be hardcoded to include all recipes.
+//                    // We can send the equivalent Bedrock MultiRecipe! :)
+//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("685a742a-c42e-4a4e-88ea-5eb83fc98e5b"), context.getAndIncrementNetId()));
+//                }
+//                case CRAFTING_SPECIAL_BOOKCLONING -> {
+//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("d1ca6b84-338e-4f2f-9c6b-76cc8b4bd98d"), context.getAndIncrementNetId()));
+//                }
+//                case CRAFTING_SPECIAL_REPAIRITEM -> {
+//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("00000000-0000-0000-0000-000000000001"), context.getAndIncrementNetId()));
+//                }
+//                case CRAFTING_SPECIAL_MAPEXTENDING -> {
+//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("d392b075-4ba1-40ae-8789-af868d56f6ce"), context.getAndIncrementNetId()));
+//                }
+//                case CRAFTING_SPECIAL_MAPCLONING -> {
+//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("85939755-ba10-4d9d-a4cc-efb7a8e943c4"), context.getAndIncrementNetId()));
+//                }
+//                case CRAFTING_SPECIAL_FIREWORK_ROCKET -> {
+//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("00000000-0000-0000-0000-000000000002"), context.getAndIncrementNetId()));
+//                }
+//                default -> {
+//                    List<GeyserRecipe> recipes = Registries.RECIPES.get(recipe.getType());
+//                    if (recipes != null) {
+//                        List<String> bedrockRecipeIds = new ArrayList<>();
+//                        if (recipe.getType() == RecipeType.CRAFTING_SPECIAL_TIPPEDARROW) {
+//                            // Only shaped recipe at this moment
+//                            for (GeyserRecipe builtInRecipe : recipes) {
+//                                var recipeIds = context.translateShapedRecipe((GeyserShapedRecipe) builtInRecipe);
+//                                if (recipeIds != null) {
+//                                    bedrockRecipeIds.addAll(recipeIds);
+//                                }
+//                            }
+//                        } else if (recipe.getType() == RecipeType.CRAFTING_SPECIAL_SHULKERBOXCOLORING) {
+//                            for (GeyserRecipe builtInRecipe : recipes) {
+//                                var recipeIds = context.translateShulkerBoxRecipe((GeyserShapelessRecipe) builtInRecipe);
+//                                if (recipeIds != null) {
+//                                    bedrockRecipeIds.addAll(recipeIds);
+//                                }
+//                            }
+//                        } else {
+//                            for (GeyserRecipe builtInRecipe : recipes) {
+//                                var recipeIds = context.translateShapelessRecipe((GeyserShapelessRecipe) builtInRecipe);
+//                                if (recipeIds != null) {
+//                                    bedrockRecipeIds.addAll(recipeIds);
+//                                }
+//                            }
+//                        }
+//                        context.addSpecialRecipesIdentifiers(recipe, bedrockRecipeIds);
+//                    }
+//                }
+//            }
+//        }
+//        craftingDataPacket.getCraftingData().addAll(CARTOGRAPHY_RECIPES);
+//        craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
+//
+//        Int2ObjectMap<GeyserStonecutterData> stonecutterRecipeMap = new Int2ObjectOpenHashMap<>();
+//        for (Int2ObjectMap.Entry<List<StoneCuttingRecipeData>> data : unsortedStonecutterData.int2ObjectEntrySet()) {
+//            // Sort the list by each output item's Java identifier - this is how it's sorted on Java, and therefore
+//            // We can get the correct order for button pressing
+//            data.getValue().sort(Comparator.comparing((stoneCuttingRecipeData ->
+//                    Registries.JAVA_ITEMS.get().get(stoneCuttingRecipeData.getResult().getId())
+//                        // See RecipeManager#getRecipesFor as of 1.21
+//                            .translationKey())));
+//
+//            // Now that it's sorted, let's translate these recipes
+//            int buttonId = 0;
+//            for (StoneCuttingRecipeData stoneCuttingData : data.getValue()) {
+//                // As of 1.16.4, all stonecutter recipes have one ingredient option
+//                ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0];
+//                ItemData input = ItemTranslator.translateToBedrock(session, ingredient);
+//                ItemDescriptorWithCount descriptor = ItemDescriptorWithCount.fromItem(input);
+//                ItemStack javaOutput = stoneCuttingData.getResult();
+//                ItemData output = ItemTranslator.translateToBedrock(session, javaOutput);
+//                if (!input.isValid() || !output.isValid()) {
+//                    // Probably modded items
+//                    continue;
+//                }
+//                UUID uuid = UUID.randomUUID();
+//                // We need to register stonecutting recipes, so they show up on Bedrock
+//                craftingDataPacket.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shapeless(uuid.toString(),
+//                        Collections.singletonList(descriptor), Collections.singletonList(output), uuid, "stonecutter", 0, context.netId, RecipeUnlockingRequirement.INVALID));
+//
+//                // Save the recipe list for reference when crafting
+//                // Add the net ID as the key and the button required + output for the value
+//                stonecutterRecipeMap.put(context.getAndIncrementNetId(), new GeyserStonecutterData(buttonId++, javaOutput));
+//
+//                // Currently, stone cutter recipes are not locked/unlocked on Bedrock; so no need to cache their identifiers.
+//            }
+//        }
+//
+//        session.getLastRecipeNetId().set(context.netId); // No increment
+//
+//        // Only send smithing trim recipes if Java/ViaVersion sends them.
+//        if (sendTrimRecipes) {
+//            // BDS sends armor trim templates and materials before the CraftingDataPacket
+//            TrimDataPacket trimDataPacket = new TrimDataPacket();
+//            trimDataPacket.getPatterns().addAll(session.getRegistryCache().trimPatterns().values());
+//            trimDataPacket.getMaterials().addAll(session.getRegistryCache().trimMaterials().values());
+//            session.sendUpstreamPacket(trimDataPacket);
+//
+//            // Identical smithing_trim recipe sent by BDS that uses tag-descriptors, as the client seems to ignore the
+//            // approach of using many default-descriptors (which we do for smithing_transform)
+//            craftingDataPacket.getCraftingData().add(SmithingTrimRecipeData.of(TrimRecipe.ID,
+//                    TrimRecipe.BASE, TrimRecipe.ADDITION, TrimRecipe.TEMPLATE, "smithing_table", session.getLastRecipeNetId().getAndIncrement()));
+//        } else {
+//            // manually add recipes for the upgrade template (workaround), since Java pre-1.20 doesn't
+//            craftingDataPacket.getCraftingData().addAll(getSmithingTransformRecipes(session));
+//        }
+//        session.setOldSmithingTable(!sendTrimRecipes);
+//        session.sendUpstreamPacket(craftingDataPacket);
+//        session.setCraftingRecipes(recipeMap);
+//        session.setStonecutterRecipes(stonecutterRecipeMap);
+//    }
+//
+//    //TODO: rewrite
+//    /**
+//     * The Java server sends an array of items for each ingredient you can use per slot in the crafting grid.
+//     * Bedrock recipes take only one ingredient per crafting grid slot.
+//     *
+//     * @return the Java ingredient list as an array that Bedrock can understand
+//     */
+//    private static ItemDescriptorWithCount[][] combinations(GeyserSession session, Ingredient[] ingredients) {
+//        boolean empty = true;
+//        Map<Set<ItemDescriptorWithCount>, IntSet> squashedOptions = new HashMap<>();
+//        for (int i = 0; i < ingredients.length; i++) {
+//            if (ingredients[i].getOptions().length == 0) {
+//                squashedOptions.computeIfAbsent(Collections.singleton(ItemDescriptorWithCount.EMPTY), k -> new IntOpenHashSet()).add(i);
+//                continue;
+//            }
+//            empty = false;
+//            Ingredient ingredient = ingredients[i];
+//            Map<GroupedItem, List<ItemDescriptorWithCount>> groupedByIds = Arrays.stream(ingredient.getOptions())
+//                    .map(item -> ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, item)))
+//                    .collect(Collectors.groupingBy(item -> item == ItemDescriptorWithCount.EMPTY ? new GroupedItem(ItemDefinition.AIR, 0) : new GroupedItem(((DefaultDescriptor) item.getDescriptor()).getItemId(), item.getCount())));
+//            Set<ItemDescriptorWithCount> optionSet = new HashSet<>(groupedByIds.size());
+//            for (Map.Entry<GroupedItem, List<ItemDescriptorWithCount>> entry : groupedByIds.entrySet()) {
+//                if (entry.getValue().size() > 1) {
+//                    GroupedItem groupedItem = entry.getKey();
+//
+//                    String recipeTag = RECIPE_TAGS.get(groupedItem.id.getIdentifier());
+//                    if (recipeTag != null && ingredients.length > 1) {
+//                        optionSet.add(new ItemDescriptorWithCount(new ItemTagDescriptor(recipeTag), groupedItem.count));
+//                        continue;
+//                    }
+//
+//                    int idCount = 0;
+//                    //not optimal
+//                    for (ItemMapping mapping : session.getItemMappings().getItems()) {
+//                        if (mapping.getBedrockDefinition() == groupedItem.id) {
+//                            idCount++;
+//                        }
+//                    }
+//                    if (entry.getValue().size() < idCount) {
+//                        optionSet.addAll(entry.getValue());
+//                    } else {
+//                        optionSet.add(groupedItem.id == ItemDefinition.AIR ? ItemDescriptorWithCount.EMPTY : new ItemDescriptorWithCount(new DefaultDescriptor(groupedItem.id, Short.MAX_VALUE), groupedItem.count));
+//                    }
+//                } else {
+//                    ItemDescriptorWithCount item = entry.getValue().get(0);
+//                    optionSet.add(item);
+//                }
+//            }
+//            squashedOptions.computeIfAbsent(optionSet, k -> new IntOpenHashSet()).add(i);
+//        }
+//        if (empty) {
+//            // Crashes Bedrock 1.19.70 otherwise
+//            // Fixes https://github.com/GeyserMC/Geyser/issues/3549
+//            return null;
+//        }
+//        int totalCombinations = 1;
+//        for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
+//            totalCombinations *= optionSet.size();
+//        }
+//        if (totalCombinations > 500) {
+//            ItemDescriptorWithCount[] translatedItems = new ItemDescriptorWithCount[ingredients.length];
+//            for (int i = 0; i < ingredients.length; i++) {
+//                if (ingredients[i].getOptions().length > 0) {
+//                    translatedItems[i] = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, ingredients[i].getOptions()[0]));
+//                } else {
+//                    translatedItems[i] = ItemDescriptorWithCount.EMPTY;
+//                }
+//            }
+//            return new ItemDescriptorWithCount[][]{translatedItems};
+//        }
+//        List<Set<ItemDescriptorWithCount>> sortedSets = new ArrayList<>(squashedOptions.keySet());
+//        sortedSets.sort(Comparator.comparing(Set::size, Comparator.reverseOrder()));
+//        ItemDescriptorWithCount[][] combinations = new ItemDescriptorWithCount[totalCombinations][ingredients.length];
+//        int x = 1;
+//        for (Set<ItemDescriptorWithCount> set : sortedSets) {
+//            IntSet slotSet = squashedOptions.get(set);
+//            int i = 0;
+//            for (ItemDescriptorWithCount item : set) {
+//                for (int j = 0; j < totalCombinations / set.size(); j++) {
+//                    final int comboIndex = (i * x) + (j % x) + ((j / x) * set.size() * x);
+//                    for (IntIterator it = slotSet.iterator(); it.hasNext(); ) {
+//                        combinations[comboIndex][it.nextInt()] = item;
+//                    }
+//                }
+//                i++;
+//            }
+//            x *= set.size();
+//        }
+//        return combinations;
+//    }
+//
+//    private List<RecipeData> getSmithingTransformRecipes(GeyserSession session) {
+//        List<RecipeData> recipes = new ArrayList<>();
+//        ItemMapping template = session.getItemMappings().getStoredItems().upgradeTemplate();
+//
+//        for (String identifier : NETHERITE_UPGRADES) {
+//            recipes.add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData.of(identifier + "_smithing",
+//                    getDescriptorFromId(session, template.getBedrockIdentifier()),
+//                    getDescriptorFromId(session, identifier.replace("netherite", "diamond")),
+//                    getDescriptorFromId(session, "minecraft:netherite_ingot"),
+//                    ItemData.builder().definition(Objects.requireNonNull(session.getItemMappings().getDefinition(identifier))).count(1).build(),
+//                    "smithing_table",
+//                    session.getLastRecipeNetId().getAndIncrement()));
+//        }
+//        return recipes;
+//    }
+//
+//    private ItemDescriptorWithCount getDescriptorFromId(GeyserSession session, String bedrockId) {
+//        ItemDefinition bedrockDefinition = session.getItemMappings().getDefinition(bedrockId);
+//        if (bedrockDefinition != null) {
+//            return ItemDescriptorWithCount.fromItem(ItemData.builder().definition(bedrockDefinition).count(1).build());
+//        }
+//        GeyserImpl.getInstance().getLogger().debug("Unable to find item with identifier " + bedrockId);
+//        return ItemDescriptorWithCount.EMPTY;
+//    }
+//
+//    @EqualsAndHashCode
+//    @AllArgsConstructor
+//    private static class GroupedItem {
+//        ItemDefinition id;
+//        int count;
+//    }
+//
+//    private static final class RecipeContext {
+//        private final GeyserSession session;
+//        private final CraftingDataPacket packet;
+//        private final Int2ObjectMap<GeyserRecipe> recipeMap;
+//        // Get the last known network ID (first used for some pregenerated recipes) and increment from there.
+//        private int netId = InventoryUtils.LAST_RECIPE_NET_ID + 1;
+//
+//        private RecipeContext(GeyserSession session, CraftingDataPacket packet, Int2ObjectMap<GeyserRecipe> recipeMap) {
+//            this.session = session;
+//            this.packet = packet;
+//            this.recipeMap = recipeMap;
+//        }
+//
+//        List<String> translateShulkerBoxRecipe(GeyserShapelessRecipe recipe) {
+//            ItemStack result = recipe.result();
+//            ItemData output = ItemTranslator.translateToBedrock(session, result);
+//            if (!output.isValid()) {
+//                // Likely modded item that Bedrock will complain about if it persists
+//                return null;
+//            }
+//
+//            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
+//            if (!(javaItem instanceof BedrockRequiresTagItem)) {
+//                // Strip NBT - tools won't appear in the recipe book otherwise
+//                output = output.toBuilder().tag(null).build();
+//            }
+//            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
+//            if (inputCombinations == null) {
+//                return null;
+//            }
+//
+//            List<String> bedrockRecipeIDs = new ArrayList<>();
+//            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
+//                UUID uuid = UUID.randomUUID();
+//                bedrockRecipeIDs.add(uuid.toString());
+//                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shulkerBox(uuid.toString(),
+//                        Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, netId));
+//                recipeMap.put(netId++, recipe);
+//            }
+//            return bedrockRecipeIDs;
+//        }
+//
+//        List<String> translateShapelessRecipe(GeyserShapelessRecipe recipe) {
+//            ItemStack result = recipe.result();
+//            ItemData output = ItemTranslator.translateToBedrock(session, result);
+//            if (!output.isValid()) {
+//                // Likely modded item that Bedrock will complain about if it persists
+//                return null;
+//            }
+//
+//            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
+//            if (!(javaItem instanceof BedrockRequiresTagItem)) {
+//                // Strip NBT - tools won't appear in the recipe book otherwise
+//                output = output.toBuilder().tag(null).build();
+//            }
+//            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
+//            if (inputCombinations == null) {
+//                return null;
+//            }
+//
+//            List<String> bedrockRecipeIDs = new ArrayList<>();
+//            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
+//                UUID uuid = UUID.randomUUID();
+//                bedrockRecipeIDs.add(uuid.toString());
+//                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shapeless(uuid.toString(),
+//                        Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, netId, RecipeUnlockingRequirement.INVALID));
+//                recipeMap.put(netId++, recipe);
+//            }
+//            return bedrockRecipeIDs;
+//        }
+//
+//        List<String> translateShapedRecipe(GeyserShapedRecipe recipe) {
+//            ItemStack result = recipe.result();
+//            ItemData output = ItemTranslator.translateToBedrock(session, result);
+//            if (!output.isValid()) {
+//                // Likely modded item that Bedrock will complain about if it persists
+//                return null;
+//            }
+//
+//            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
+//            if (!(javaItem instanceof BedrockRequiresTagItem)) {
+//                // Strip NBT - tools won't appear in the recipe book otherwise
+//                output = output.toBuilder().tag(null).build();
+//            }
+//            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
+//            if (inputCombinations == null) {
+//                return null;
+//            }
+//
+//            List<String> bedrockRecipeIDs = new ArrayList<>();
+//            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
+//                UUID uuid = UUID.randomUUID();
+//                bedrockRecipeIDs.add(uuid.toString());
+//                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData.shaped(uuid.toString(),
+//                        recipe.width(), recipe.height(), Arrays.asList(inputs),
+//                        Collections.singletonList(output), uuid, "crafting_table", 0, netId, false, RecipeUnlockingRequirement.INVALID));
+//                recipeMap.put(netId++, recipe);
+//            }
+//            return bedrockRecipeIDs;
+//        }
+//
+//        void addSpecialRecipesIdentifiers(Recipe recipe, List<String> identifiers) {
+//            String javaRecipeID = switch (recipe.getType()) {
+//                case CRAFTING_SPECIAL_SHULKERBOXCOLORING ->
+//                    // BDS (un)locks the dyeing with the shulker box recipe, Java never - we want BDS behavior for ease of use
+//                        "minecraft:shulker_box";
+//                case CRAFTING_SPECIAL_TIPPEDARROW ->
+//                    // similar as above
+//                        "minecraft:arrow";
+//                default -> recipe.getIdentifier().asString();
+//            };
+//
+//            addRecipeIdentifier(session, javaRecipeID, identifiers);
+//        }
+//
+//        void addRecipeIdentifier(GeyserSession session, String javaIdentifier, List<String> bedrockIdentifiers) {
+//            session.getJavaToBedrockRecipeIds().computeIfAbsent(javaIdentifier, k -> new ArrayList<>()).addAll(bedrockIdentifiers);
+//        }
+//
+//        int getAndIncrementNetId() {
+//            return this.netId++;
+//        }
+//    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaSetCarriedItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaSetHeldSlotTranslator.java
similarity index 86%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaSetCarriedItemTranslator.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaSetHeldSlotTranslator.java
index e590b5658..a02aa61ee 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaSetCarriedItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaSetHeldSlotTranslator.java
@@ -25,17 +25,17 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity.player;
 
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundSetCarriedItemPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerHotbarPacket;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundSetHeldSlotPacket;
 
-@Translator(packet = ClientboundSetCarriedItemPacket.class)
-public class JavaSetCarriedItemTranslator extends PacketTranslator<ClientboundSetCarriedItemPacket> {
+@Translator(packet = ClientboundSetHeldSlotPacket.class)
+public class JavaSetHeldSlotTranslator extends PacketTranslator<ClientboundSetHeldSlotPacket> {
 
     @Override
-    public void translate(GeyserSession session, ClientboundSetCarriedItemPacket packet) {
+    public void translate(GeyserSession session, ClientboundSetHeldSlotPacket packet) {
         PlayerHotbarPacket hotbarPacket = new PlayerHotbarPacket();
         hotbarPacket.setContainerId(0);
         hotbarPacket.setSelectedHotbarSlot(packet.getSlot());
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index 9b5d95afe..ed3abdfe4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -59,7 +59,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
 
     @Override
     public void translate(GeyserSession session, ClientboundContainerSetSlotPacket packet) {
-        if (packet.getContainerId() == 255) { //cursor
+        if (packet.getContainerId() == 255) { //cursor //TODO new packet
             GeyserItemStack newItem = GeyserItemStack.from(packet.getItem());
             session.getPlayerInventory().setCursor(newItem, session);
             InventoryUtils.updateCursor(session);
@@ -90,7 +90,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
             updateCraftingGrid(session, slot, packet.getItem(), inventory, translator);
 
             GeyserItemStack newItem = GeyserItemStack.from(packet.getItem());
-            if (packet.getContainerId() == 0 && !(translator instanceof PlayerInventoryTranslator)) {
+            if (packet.getContainerId() == 0 && !(translator instanceof PlayerInventoryTranslator)) { //TODO new packet
                 // In rare cases, the window ID can still be 0 but Java treats it as valid
                 session.getPlayerInventory().setItem(slot, newItem, session);
                 InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), slot);
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 3a3831044..1fc799d32 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20240916.181041-6"
 protocol-codec = "3.0.0.Beta5-20240916.181041-6"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21-20241010.155958-24"
+mcprotocollib = "1.21.2-SNAPSHOT"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From 0f184627f3aa392ae4750c6e9b223edaa6d61026 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Mon, 21 Oct 2024 00:36:02 +0800
Subject: [PATCH 003/165] Fix: Late Geyser response to
 ClientboundSelectKnownPacks packet (#5090)

---
 .../protocol/java/JavaSelectKnownPacksTranslator.java        | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
index 6b1c8c645..9192beacf 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
@@ -59,4 +59,9 @@ public class JavaSelectKnownPacksTranslator extends PacketTranslator<Clientbound
         }
         session.sendDownstreamPacket(new ServerboundSelectKnownPacks(knownPacks));
     }
+
+    @Override
+    public boolean shouldExecuteInEventLoop() {
+        return false;
+    }
 }

From 93d96ef5a458c447d2c6ed027fb0b05ef6a90ca3 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 20 Oct 2024 14:54:27 -0400
Subject: [PATCH 004/165] Boat changes applied

---
 .../geyser/entity/EntityDefinitions.java      | 92 +++++++++++++++----
 .../geyser/entity/type/BoatEntity.java        | 46 +++++++---
 .../geyser/entity/type/ChestBoatEntity.java   | 10 +-
 .../BedrockEntityPickRequestTranslator.java   | 25 +----
 ...BedrockInventoryTransactionTranslator.java |  5 +-
 .../BedrockMoveEntityAbsoluteTranslator.java  |  3 +-
 .../bedrock/BedrockPlayerInputTranslator.java | 16 ++--
 .../player/BedrockActionTranslator.java       |  1 +
 .../player/BedrockInteractTranslator.java     | 14 +--
 .../player/BedrockMovePlayerTranslator.java   |  5 +-
 .../BedrockLevelSoundEventTranslator.java     |  1 +
 .../java/level/JavaCooldownTranslator.java    |  2 +-
 .../org/geysermc/geyser/util/EntityUtils.java | 44 +++++----
 .../geysermc/geyser/util/InventoryUtils.java  | 13 +--
 14 files changed, 178 insertions(+), 99 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 39357eb60..1443a9443 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -152,29 +152,37 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.FloatE
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
 
 public final class EntityDefinitions {
+    public static final EntityDefinition<BoatEntity> ACACIA_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> ACACIA_CHEST_BOAT;
     public static final EntityDefinition<AllayEntity> ALLAY;
     public static final EntityDefinition<AreaEffectCloudEntity> AREA_EFFECT_CLOUD;
     public static final EntityDefinition<ArmadilloEntity> ARMADILLO;
     public static final EntityDefinition<ArmorStandEntity> ARMOR_STAND;
     public static final EntityDefinition<ArrowEntity> ARROW;
     public static final EntityDefinition<AxolotlEntity> AXOLOTL;
+    public static final EntityDefinition<BoatEntity> BAMBOO_RAFT;
+    public static final EntityDefinition<ChestBoatEntity> BAMBOO_CHEST_RAFT;
     public static final EntityDefinition<BatEntity> BAT;
     public static final EntityDefinition<BeeEntity> BEE;
+    public static final EntityDefinition<BoatEntity> BIRCH_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> BIRCH_CHEST_BOAT;
     public static final EntityDefinition<BlazeEntity> BLAZE;
-    public static final EntityDefinition<BoatEntity> BOAT;
     public static final EntityDefinition<BoggedEntity> BOGGED;
     public static final EntityDefinition<BreezeEntity> BREEZE;
     public static final EntityDefinition<AbstractWindChargeEntity> BREEZE_WIND_CHARGE;
     public static final EntityDefinition<CamelEntity> CAMEL;
     public static final EntityDefinition<CatEntity> CAT;
     public static final EntityDefinition<SpiderEntity> CAVE_SPIDER;
+    public static final EntityDefinition<BoatEntity> CHERRY_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> CHERRY_CHEST_BOAT;
     public static final EntityDefinition<MinecartEntity> CHEST_MINECART;
     public static final EntityDefinition<ChickenEntity> CHICKEN;
-    public static final EntityDefinition<ChestBoatEntity> CHEST_BOAT;
     public static final EntityDefinition<AbstractFishEntity> COD;
     public static final EntityDefinition<CommandBlockMinecartEntity> COMMAND_BLOCK_MINECART;
     public static final EntityDefinition<CowEntity> COW;
     public static final EntityDefinition<CreeperEntity> CREEPER;
+    public static final EntityDefinition<BoatEntity> DARK_OAK_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> DARK_OAK_CHEST_BOAT;
     public static final EntityDefinition<DolphinEntity> DOLPHIN;
     public static final EntityDefinition<ChestedHorseEntity> DONKEY;
     public static final EntityDefinition<FireballEntity> DRAGON_FIREBALL;
@@ -213,14 +221,20 @@ public final class EntityDefinitions {
     public static final EntityDefinition<IronGolemEntity> IRON_GOLEM;
     public static final EntityDefinition<ItemEntity> ITEM;
     public static final EntityDefinition<ItemFrameEntity> ITEM_FRAME;
+    public static final EntityDefinition<BoatEntity> JUNGLE_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> JUNGLE_CHEST_BOAT;
     public static final EntityDefinition<LeashKnotEntity> LEASH_KNOT;
     public static final EntityDefinition<LightningEntity> LIGHTNING_BOLT;
     public static final EntityDefinition<LlamaEntity> LLAMA;
     public static final EntityDefinition<ThrowableEntity> LLAMA_SPIT;
     public static final EntityDefinition<MagmaCubeEntity> MAGMA_CUBE;
+    public static final EntityDefinition<BoatEntity> MANGROVE_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> MANGROVE_CHEST_BOAT;
     public static final EntityDefinition<MinecartEntity> MINECART;
     public static final EntityDefinition<MooshroomEntity> MOOSHROOM;
     public static final EntityDefinition<ChestedHorseEntity> MULE;
+    public static final EntityDefinition<BoatEntity> OAK_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> OAK_CHEST_BOAT;
     public static final EntityDefinition<OcelotEntity> OCELOT;
     public static final EntityDefinition<PaintingEntity> PAINTING;
     public static final EntityDefinition<PandaEntity> PANDA;
@@ -251,6 +265,8 @@ public final class EntityDefinitions {
     public static final EntityDefinition<SpawnerMinecartEntity> SPAWNER_MINECART; // Not present on Bedrock
     public static final EntityDefinition<AbstractArrowEntity> SPECTRAL_ARROW;
     public static final EntityDefinition<SpiderEntity> SPIDER;
+    public static final EntityDefinition<BoatEntity> SPRUCE_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> SPRUCE_CHEST_BOAT;
     public static final EntityDefinition<SquidEntity> SQUID;
     public static final EntityDefinition<AbstractSkeletonEntity> STRAY;
     public static final EntityDefinition<StriderEntity> STRIDER;
@@ -309,23 +325,6 @@ public final class EntityDefinitions {
                     .addTranslator(null) // Waiting
                     .addTranslator(MetadataType.PARTICLE, AreaEffectCloudEntity::setParticle)
                     .build();
-            BOAT = EntityDefinition.inherited(BoatEntity::new, entityBase)
-                    .type(EntityType.BOAT)
-                    .height(0.6f).width(1.6f)
-                    .offset(0.35f)
-                    .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_TICKS, entityMetadata.getValue())) // Time since last hit
-                    .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_DIRECTION, entityMetadata.getValue())) // Rocking direction
-                    .addTranslator(MetadataType.FLOAT, (boatEntity, entityMetadata) ->
-                            // 'Health' in Bedrock, damage taken in Java - it makes motion in Bedrock
-                            boatEntity.getDirtyMetadata().put(EntityDataTypes.STRUCTURAL_INTEGRITY, 40 - ((int) ((FloatEntityMetadata) entityMetadata).getPrimitiveValue())))
-                    .addTranslator(MetadataType.INT, BoatEntity::setVariant)
-                    .addTranslator(MetadataType.BOOLEAN, BoatEntity::setPaddlingLeft)
-                    .addTranslator(MetadataType.BOOLEAN, BoatEntity::setPaddlingRight)
-                    .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.BOAT_BUBBLE_TIME, entityMetadata.getValue())) // May not actually do anything
-                    .build();
-            CHEST_BOAT = EntityDefinition.inherited(ChestBoatEntity::new, BOAT)
-                    .type(EntityType.CHEST_BOAT)
-                    .build();
             DRAGON_FIREBALL = EntityDefinition.inherited(FireballEntity::new, entityBase)
                     .type(EntityType.DRAGON_FIREBALL)
                     .heightAndWidth(1.0f)
@@ -568,6 +567,45 @@ public final class EntityDefinitions {
                     .build(false);
         }
 
+        // Boats
+        {
+            EntityDefinition<BoatEntity> boatBase = EntityDefinition.<BoatEntity>inherited(null, entityBase)
+                .height(0.6f).width(1.6f)
+                .offset(0.35f)
+                .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_TICKS, entityMetadata.getValue())) // Time since last hit
+                .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_DIRECTION, entityMetadata.getValue())) // Rocking direction
+                .addTranslator(MetadataType.FLOAT, (boatEntity, entityMetadata) ->
+                    // 'Health' in Bedrock, damage taken in Java - it makes motion in Bedrock
+                    boatEntity.getDirtyMetadata().put(EntityDataTypes.STRUCTURAL_INTEGRITY, 40 - ((int) ((FloatEntityMetadata) entityMetadata).getPrimitiveValue())))
+                .addTranslator(MetadataType.BOOLEAN, BoatEntity::setPaddlingLeft)
+                .addTranslator(MetadataType.BOOLEAN, BoatEntity::setPaddlingRight)
+                .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.BOAT_BUBBLE_TIME, entityMetadata.getValue())) // May not actually do anything
+                .build();
+
+            ACACIA_BOAT = buildBoat(boatBase, EntityType.ACACIA_BOAT, BoatEntity.BoatVariant.ACACIA);
+            BAMBOO_RAFT = buildBoat(boatBase, EntityType.BAMBOO_RAFT, BoatEntity.BoatVariant.BAMBOO);
+            BIRCH_BOAT = buildBoat(boatBase, EntityType.BIRCH_BOAT, BoatEntity.BoatVariant.BIRCH);
+            CHERRY_BOAT = buildBoat(boatBase, EntityType.CHERRY_BOAT, BoatEntity.BoatVariant.CHERRY);
+            DARK_OAK_BOAT = buildBoat(boatBase, EntityType.DARK_OAK_BOAT, BoatEntity.BoatVariant.DARK_OAK);
+            JUNGLE_BOAT = buildBoat(boatBase, EntityType.JUNGLE_BOAT, BoatEntity.BoatVariant.JUNGLE);
+            MANGROVE_BOAT = buildBoat(boatBase, EntityType.MANGROVE_BOAT, BoatEntity.BoatVariant.MANGROVE);
+            OAK_BOAT = buildBoat(boatBase, EntityType.OAK_BOAT, BoatEntity.BoatVariant.OAK);
+            SPRUCE_BOAT = buildBoat(boatBase, EntityType.SPRUCE_BOAT, BoatEntity.BoatVariant.SPRUCE);
+
+            EntityDefinition<ChestBoatEntity> chestBoatBase = EntityDefinition.<ChestBoatEntity>inherited(null, boatBase)
+                .build();
+
+            ACACIA_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.ACACIA_CHEST_BOAT, BoatEntity.BoatVariant.ACACIA);
+            BAMBOO_CHEST_RAFT = buildChestBoat(chestBoatBase, EntityType.BAMBOO_CHEST_RAFT, BoatEntity.BoatVariant.BAMBOO);
+            BIRCH_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.BIRCH_CHEST_BOAT, BoatEntity.BoatVariant.BIRCH);
+            CHERRY_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.CHERRY_CHEST_BOAT, BoatEntity.BoatVariant.CHERRY);
+            DARK_OAK_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.DARK_OAK_CHEST_BOAT, BoatEntity.BoatVariant.DARK_OAK);
+            JUNGLE_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.JUNGLE_CHEST_BOAT, BoatEntity.BoatVariant.JUNGLE);
+            MANGROVE_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.MANGROVE_CHEST_BOAT, BoatEntity.BoatVariant.MANGROVE);
+            OAK_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.OAK_CHEST_BOAT, BoatEntity.BoatVariant.OAK);
+            SPRUCE_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.SPRUCE_CHEST_BOAT, BoatEntity.BoatVariant.SPRUCE);
+        }
+
         EntityDefinition<LivingEntity> livingEntityBase = EntityDefinition.inherited(LivingEntity::new, entityBase)
                 .addTranslator(MetadataType.BYTE, LivingEntity::setLivingEntityFlags)
                 .addTranslator(MetadataType.FLOAT, LivingEntity::setHealth)
@@ -1128,6 +1166,22 @@ public final class EntityDefinitions {
         }
     }
 
+    private static EntityDefinition<BoatEntity> buildBoat(EntityDefinition<BoatEntity> base, EntityType entityType, BoatEntity.BoatVariant variant) {
+        return EntityDefinition.inherited((session, javaId, bedrockId, uuid, definition, position, motion, yaw, pitch, headYaw) ->
+            new BoatEntity(session, javaId, bedrockId, uuid, definition, position, motion, yaw, variant), base)
+            .type(entityType)
+            .identifier("minecraft:boat")
+            .build();
+    }
+
+    private static EntityDefinition<ChestBoatEntity> buildChestBoat(EntityDefinition<ChestBoatEntity> base, EntityType entityType, BoatEntity.BoatVariant variant) {
+        return EntityDefinition.inherited((session, javaId, bedrockId, uuid, definition, position, motion, yaw, pitch, headYaw) ->
+                new ChestBoatEntity(session, javaId, bedrockId, uuid, definition, position, motion, yaw, variant), base)
+            .type(entityType)
+            .identifier("minecraft:chest_boat")
+            .build();
+    }
+
     public static void init() {
         // no-op
     }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
index 47ae6777a..9312d83f5 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
@@ -32,11 +32,12 @@ import org.cloudburstmc.protocol.bedrock.packet.AnimatePacket;
 import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.EntityDefinitions;
+import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 
 import java.util.UUID;
@@ -63,16 +64,19 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
      * Saved for using the "pick" functionality on a boat.
      */
     @Getter
-    private int variant;
+    protected final BoatVariant variant;
 
     private long leashHolderBedrockId = -1;
 
     // Looks too fast and too choppy with 0.1f, which is how I believe the Microsoftian client handles it
     private final float ROWING_SPEED = 0.1f;
 
-    public BoatEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
+    public BoatEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, BoatVariant variant) {
         // Initial rotation is incorrect
         super(session, entityId, geyserId, uuid, definition, position.add(0d, definition.offset(), 0d), motion, yaw + 90, 0, yaw + 90);
+        this.variant = variant;
+
+        dirtyMetadata.put(EntityDataTypes.VARIANT, variant.ordinal());
 
         // Required to be able to move on land 1.16.200+ or apply gravity not in the water 1.16.100+
         dirtyMetadata.put(EntityDataTypes.IS_BUOYANT, true);
@@ -124,15 +128,6 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
         moveRelative(0, 0, 0, yaw + 90, 0, 0, isOnGround);
     }
 
-    public void setVariant(IntEntityMetadata entityMetadata) {
-        variant = entityMetadata.getPrimitiveValue();
-        dirtyMetadata.put(EntityDataTypes.VARIANT, switch (variant) {
-            case 6, 7, 8 -> variant - 1; // dark_oak, mangrove, bamboo
-            case 5 -> 8; // cherry
-            default -> variant;
-        });
-    }
-
     public void setPaddlingLeft(BooleanEntityMetadata entityMetadata) {
         isPaddlingLeft = entityMetadata.getPrimitiveValue();
         if (!isPaddlingLeft) {
@@ -212,6 +207,10 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
         return leashHolderBedrockId;
     }
 
+    public Item getPickItem() {
+        return variant.pickItem;
+    }
+
     private void sendAnimationPacket(GeyserSession session, Entity rower, AnimatePacket.Action action, float rowTime) {
         AnimatePacket packet = new AnimatePacket();
         packet.setRuntimeEntityId(rower.getGeyserId());
@@ -219,4 +218,27 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
         packet.setRowingTime(rowTime);
         session.sendUpstreamPacket(packet);
     }
+
+    /**
+     * Ordered by Bedrock ordinal
+     */
+    public enum BoatVariant {
+        OAK(Items.OAK_BOAT, Items.OAK_CHEST_BOAT),
+        SPRUCE(Items.SPRUCE_BOAT, Items.SPRUCE_CHEST_BOAT),
+        BIRCH(Items.BIRCH_BOAT, Items.BIRCH_CHEST_BOAT),
+        JUNGLE(Items.JUNGLE_BOAT, Items.JUNGLE_CHEST_BOAT),
+        ACACIA(Items.ACACIA_BOAT, Items.ACACIA_CHEST_BOAT),
+        DARK_OAK(Items.DARK_OAK_BOAT, Items.DARK_OAK_CHEST_BOAT),
+        MANGROVE(Items.MANGROVE_BOAT, Items.MANGROVE_CHEST_BOAT),
+        BAMBOO(Items.BAMBOO_RAFT, Items.BAMBOO_CHEST_RAFT),
+        CHERRY(Items.CHERRY_BOAT, Items.CHERRY_CHEST_BOAT);
+
+        private final Item pickItem;
+        final Item chestPickItem;
+
+        BoatVariant(Item pickItem, Item chestPickItem) {
+            this.pickItem = pickItem;
+            this.chestPickItem = chestPickItem;
+        }
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java
index 479b4d80d..967da41df 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.entity.type;
 
 import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
@@ -35,8 +36,8 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import java.util.UUID;
 
 public class ChestBoatEntity extends BoatEntity {
-    public ChestBoatEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
-        super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
+    public ChestBoatEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, BoatVariant variant) {
+        super(session, entityId, geyserId, uuid, definition, position, motion, yaw, variant);
     }
 
     @Override
@@ -48,4 +49,9 @@ public class ChestBoatEntity extends BoatEntity {
     public InteractionResult interact(Hand hand) {
         return passengers.isEmpty() && !session.isSneaking() ? super.interact(hand) : InteractionResult.SUCCESS;
     }
+
+    @Override
+    public Item getPickItem() {
+        return this.variant.chestPickItem;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java
index e85456c33..acb8573fb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java
@@ -51,29 +51,14 @@ public class BedrockEntityPickRequestTranslator extends PacketTranslator<EntityP
         Entity entity = session.getEntityCache().getEntityByGeyserId(packet.getRuntimeEntityId());
         if (entity == null) return;
 
+        if (entity instanceof BoatEntity boat) {
+            InventoryUtils.findOrCreateItem(session, boat.getPickItem());
+            return;
+        }
+
         // Get the corresponding item
         String itemName;
         switch (entity.getDefinition().entityType()) {
-            case BOAT, CHEST_BOAT -> {
-                // Include type of boat in the name
-                int variant = ((BoatEntity) entity).getVariant();
-                String typeOfBoat = switch (variant) {
-                    case 1 -> "spruce";
-                    case 2 -> "birch";
-                    case 3 -> "jungle";
-                    case 4 -> "acacia";
-                    case 5 -> "cherry";
-                    case 6 -> "dark_oak";
-                    case 7 -> "mangrove";
-                    case 8 -> "bamboo";
-                    default -> "oak";
-                };
-                itemName = typeOfBoat + "_" + entity.getDefinition().entityType().name().toLowerCase(Locale.ROOT);
-                // Bamboo boat is a raft
-                if (variant == 8) {
-                    itemName = itemName.replace("boat", "raft");
-                }
-            }
             case LEASH_KNOT -> itemName = "lead";
             case CHEST_MINECART, COMMAND_BLOCK_MINECART, FURNACE_MINECART, HOPPER_MINECART, TNT_MINECART ->
                     // The Bedrock identifier matches the item name which moves MINECART to the end of the name
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
index 6ae21067f..7ed4ac72c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
@@ -296,6 +296,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                                 Hand.MAIN_HAND,
                                 packet.getClickPosition().getX(), packet.getClickPosition().getY(), packet.getClickPosition().getZ(),
                                 false,
+                                false,
                                 sequence);
                         session.sendDownstreamGamePacket(blockPacket);
 
@@ -698,9 +699,9 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
         float pitch = (float) -Math.toDegrees(Math.atan2(yDiff, xzHypot));
 
         SessionPlayerEntity entity = session.getPlayerEntity();
-        ServerboundMovePlayerPosRotPacket returnPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), entity.getYaw(), entity.getPitch());
+        ServerboundMovePlayerPosRotPacket returnPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), false, playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), entity.getYaw(), entity.getPitch());
         // This matches Java edition behavior
-        ServerboundMovePlayerPosRotPacket movementPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), yaw, pitch);
+        ServerboundMovePlayerPosRotPacket movementPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), false, playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), yaw, pitch);
         session.sendDownstreamGamePacket(movementPacket);
 
         if (session.getLookBackScheduledFuture() != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
index f8f31d67f..f2d69d51c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
@@ -27,7 +27,6 @@ package org.geysermc.geyser.translator.protocol.bedrock;
 
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
-import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.BoatEntity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.session.GeyserSession;
@@ -66,7 +65,7 @@ public class BedrockMoveEntityAbsoluteTranslator extends PacketTranslator<MoveEn
         float y = packet.getPosition().getY();
         if (ridingEntity instanceof BoatEntity && !ridingEntity.isOnGround()) {
             // Remove the offset to prevents boats from looking like they're floating in water
-            y -= EntityDefinitions.BOAT.offset();
+            y -= ridingEntity.getDefinition().offset();
         }
         ServerboundMoveVehiclePacket ServerboundMoveVehiclePacket = new ServerboundMoveVehiclePacket(
                 packet.getPosition().getX(), y, packet.getPosition().getZ(),
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
index 1498c2184..81f65e1bd 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
@@ -25,11 +25,8 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock;
 
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundMoveVehiclePacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundPlayerInputPacket;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerInputPacket;
-import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.BoatEntity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.living.animal.horse.AbstractHorseEntity;
@@ -37,6 +34,7 @@ import org.geysermc.geyser.entity.type.living.animal.horse.LlamaEntity;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundMoveVehiclePacket;
 
 /**
  * Sent by the client for minecarts and boats.
@@ -46,11 +44,11 @@ public class BedrockPlayerInputTranslator extends PacketTranslator<PlayerInputPa
 
     @Override
     public void translate(GeyserSession session, PlayerInputPacket packet) {
-        ServerboundPlayerInputPacket playerInputPacket = new ServerboundPlayerInputPacket(
-                packet.getInputMotion().getX(), packet.getInputMotion().getY(), packet.isJumping(), packet.isSneaking()
-        );
-
-        session.sendDownstreamGamePacket(playerInputPacket);
+//        ServerboundPlayerInputPacket playerInputPacket = new ServerboundPlayerInputPacket(
+//                packet.getInputMotion().getX(), packet.getInputMotion().getY(), packet.isJumping(), packet.isSneaking()
+//        );
+//
+//        session.sendDownstreamGamePacket(playerInputPacket);
 
         session.getPlayerEntity().setVehicleInput(packet.getInputMotion());
 
@@ -78,7 +76,7 @@ public class BedrockPlayerInputTranslator extends PacketTranslator<PlayerInputPa
 
                 if (vehicle instanceof BoatEntity && !vehicle.isOnGround()) {
                     // Remove some Y position to prevents boats flying up
-                    vehiclePosition = vehiclePosition.down(EntityDefinitions.BOAT.offset());
+                    vehiclePosition = vehiclePosition.down(vehicle.getDefinition().offset());
                 }
 
                 ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java
index cd1300a13..669481747 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java
@@ -350,6 +350,7 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
                         Hand.MAIN_HAND,
                         0, 0, 0,
                         false,
+                        false,
                         session.getWorldCache().nextPredictionSequence());
                     session.sendDownstreamGamePacket(blockPacket);
                     break;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java
index 20c1b055d..2df77ad16 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java
@@ -25,16 +25,11 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
 
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerCommandPacket;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityLinkData;
 import org.cloudburstmc.protocol.bedrock.packet.InteractPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetEntityLinkPacket;
+import org.geysermc.geyser.entity.type.ChestBoatEntity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.living.animal.horse.AbstractHorseEntity;
 import org.geysermc.geyser.item.Items;
@@ -42,6 +37,11 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerCommandPacket;
 
 import java.util.concurrent.TimeUnit;
 
@@ -119,7 +119,7 @@ public class BedrockInteractTranslator extends PacketTranslator<InteractPacket>
             case OPEN_INVENTORY:
                 if (session.getOpenInventory() == null) {
                     Entity ridingEntity = session.getPlayerEntity().getVehicle();
-                    if (ridingEntity instanceof AbstractHorseEntity || (ridingEntity != null && ridingEntity.getDefinition().entityType() == EntityType.CHEST_BOAT)) {
+                    if (ridingEntity instanceof AbstractHorseEntity || ridingEntity instanceof ChestBoatEntity) {
                         // This mob has an inventory of its own that we should open instead.
                         ServerboundPlayerCommandPacket openVehicleWindowPacket = new ServerboundPlayerCommandPacket(session.getPlayerEntity().getEntityId(), PlayerState.OPEN_VEHICLE_INVENTORY);
                         session.sendDownstreamGamePacket(openVehicleWindowPacket);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
index ee80cac16..c4cb10127 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
@@ -84,7 +84,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
         // This isn't needed, but it makes the packets closer to vanilla
         // It also means you can't "lag back" while only looking, in theory
         if (!positionChanged && rotationChanged) {
-            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(packet.isOnGround(), yaw, pitch);
+            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(packet.isOnGround(), false, yaw, pitch);
 
             entity.setYaw(yaw);
             entity.setPitch(pitch);
@@ -138,6 +138,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
                         // Send rotation updates as well
                         movePacket = new ServerboundMovePlayerPosRotPacket(
                                 onGround,
+                                false,
                                 position.getX(), yPosition, position.getZ(),
                                 yaw, pitch
                         );
@@ -146,7 +147,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
                         entity.setHeadYaw(headYaw);
                     } else {
                         // Rotation did not change; don't send an update with rotation
-                        movePacket = new ServerboundMovePlayerPosPacket(onGround, position.getX(), yPosition, position.getZ());
+                        movePacket = new ServerboundMovePlayerPosPacket(onGround, false, position.getX(), yPosition, position.getZ());
                     }
 
                     entity.setPositionManual(packet.getPosition());
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/world/BedrockLevelSoundEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/world/BedrockLevelSoundEventTranslator.java
index 7e791ab2d..62b1b8b14 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/world/BedrockLevelSoundEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/world/BedrockLevelSoundEventTranslator.java
@@ -89,6 +89,7 @@ public class BedrockLevelSoundEventTranslator extends PacketTranslator<LevelSoun
                         Hand.MAIN_HAND,
                         0, 0, 0,
                         false,
+                        false,
                         session.getWorldCache().nextPredictionSequence());
                 session.sendDownstreamGamePacket(blockPacket);
             }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
index 636671651..168992dd4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
@@ -39,7 +39,7 @@ public class JavaCooldownTranslator extends PacketTranslator<ClientboundCooldown
 
     @Override
     public void translate(GeyserSession session, ClientboundCooldownPacket packet) {
-        Item item = Registries.JAVA_ITEMS.get().get(packet.getItemId());
+        Item item = Registries.JAVA_ITEMS.get().get(0); // FIXME
         // Not every item, as of 1.19, appears to be server-driven. Just these two.
         // Use a map here if it gets too big.
         String cooldownCategory;
diff --git a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
index 8e5a57fae..85f83822f 100644
--- a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.util;
 
-import java.util.Locale;
 import net.kyori.adventure.key.Key;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
@@ -35,6 +34,7 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.BoatEntity;
+import org.geysermc.geyser.entity.type.ChestBoatEntity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.TextDisplayEntity;
 import org.geysermc.geyser.entity.type.living.ArmorStandEntity;
@@ -49,6 +49,8 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
 
+import java.util.Locale;
+
 public final class EntityUtils {
     /**
      * A constant array of the two hands that a player can interact with an entity.
@@ -93,6 +95,10 @@ public final class EntityUtils {
     }
 
     private static float getMountedHeightOffset(Entity mount) {
+        if (mount instanceof BoatEntity boat && boat.getVariant() != BoatEntity.BoatVariant.BAMBOO) {
+            return -0.1f;
+        }
+
         float height = mount.getBoundingBoxHeight();
         float mountedHeightOffset = height * 0.75f;
         switch (mount.getDefinition().entityType()) {
@@ -105,10 +111,7 @@ public final class EntityUtils {
             case TRADER_LLAMA, LLAMA -> mountedHeightOffset = height * 0.6f;
             case MINECART, HOPPER_MINECART, TNT_MINECART, CHEST_MINECART, FURNACE_MINECART, SPAWNER_MINECART,
                     COMMAND_BLOCK_MINECART -> mountedHeightOffset = 0;
-            case BOAT, CHEST_BOAT -> {
-                boolean isBamboo = ((BoatEntity) mount).getVariant() == 8;
-                mountedHeightOffset = isBamboo ? 0.25f : -0.1f;
-            }
+            case BAMBOO_RAFT, BAMBOO_CHEST_RAFT -> mountedHeightOffset = 0.25f;
             case HOGLIN, ZOGLIN -> {
                 boolean isBaby = mount.getFlag(EntityFlag.BABY);
                 mountedHeightOffset = height - (isBaby ? 0.2f : 0.15f);
@@ -174,15 +177,6 @@ public final class EntityUtils {
             float yOffset = mountedHeightOffset + heightOffset;
             float zOffset = 0;
             switch (mount.getDefinition().entityType()) {
-                case BOAT -> {
-                    // Without the X offset, more than one entity on a boat is stacked on top of each other
-                    if (moreThanOneEntity) {
-                        xOffset = rider ? 0.2f : -0.6f;
-                        if (passenger instanceof AnimalEntity) {
-                            xOffset += 0.2f;
-                        }
-                    }
-                }
                 case CAMEL -> {
                     zOffset = 0.5f;
                     if (moreThanOneEntity) {
@@ -201,7 +195,6 @@ public final class EntityUtils {
                         }
                     }
                 }
-                case CHEST_BOAT -> xOffset = 0.15F;
                 case CHICKEN -> zOffset = -0.1f;
                 case TRADER_LLAMA, LLAMA -> zOffset = -0.3f;
                 case TEXT_DISPLAY -> {
@@ -217,6 +210,17 @@ public final class EntityUtils {
                     }
                 }
             }
+            if (mount instanceof ChestBoatEntity) {
+                xOffset = 0.15F;
+            } else if (mount instanceof BoatEntity) {
+                // Without the X offset, more than one entity on a boat is stacked on top of each other
+                if (moreThanOneEntity) {
+                    xOffset = rider ? 0.2f : -0.6f;
+                    if (passenger instanceof AnimalEntity) {
+                        xOffset += 0.2f;
+                    }
+                }
+            }
             /*
              * Bedrock Differences
              * Zoglin & Hoglin seem to be taller in Bedrock edition
@@ -231,13 +235,19 @@ public final class EntityUtils {
             }
             switch (mount.getDefinition().entityType()) {
                 case MINECART, HOPPER_MINECART, TNT_MINECART, CHEST_MINECART, FURNACE_MINECART, SPAWNER_MINECART,
-                        COMMAND_BLOCK_MINECART, BOAT, CHEST_BOAT -> yOffset -= mount.getDefinition().height() * 0.5f;
+                        COMMAND_BLOCK_MINECART -> yOffset -= mount.getDefinition().height() * 0.5f;
             }
             switch (passenger.getDefinition().entityType()) {
                 case MINECART, HOPPER_MINECART, TNT_MINECART, CHEST_MINECART, FURNACE_MINECART, SPAWNER_MINECART,
-                        COMMAND_BLOCK_MINECART, BOAT, CHEST_BOAT -> yOffset += passenger.getDefinition().height() * 0.5f;
+                        COMMAND_BLOCK_MINECART -> yOffset += passenger.getDefinition().height() * 0.5f;
                 case FALLING_BLOCK -> yOffset += 0.5f;
             }
+            if (mount instanceof BoatEntity) {
+                yOffset -= mount.getDefinition().height() * 0.5f;
+            }
+            if (passenger instanceof BoatEntity) {
+                yOffset += passenger.getDefinition().height() * 0.5f;
+            }
             if (mount instanceof ArmorStandEntity armorStand) {
                 yOffset -= armorStand.getYOffset();
             }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index a0bd5a4c7..11ed17872 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -485,7 +485,7 @@ public class InventoryUtils {
                 }
                 for (int i = 0; i < data.ingredients().length; i++) {
                     Ingredient ingredient = data.ingredients()[i];
-                    for (ItemStack itemStack : ingredient.getOptions()) {
+                    for (int item : ingredient.getValues().getHolders()) { // FIXME
                         boolean inventoryHasItem = false;
                         // Iterate only over the crafting table to find this item
                         crafting:
@@ -493,11 +493,11 @@ public class InventoryUtils {
                             for (int col = firstCol; col < width + firstCol; col++) {
                                 GeyserItemStack geyserItemStack = inventoryGetter.apply(col + (row * gridDimensions) + 1);
                                 if (geyserItemStack.isEmpty()) {
-                                    inventoryHasItem = itemStack == null || itemStack.getId() == 0;
+                                    inventoryHasItem = item == 0;
                                     if (inventoryHasItem) {
                                         break crafting;
                                     }
-                                } else if (itemStack.equals(geyserItemStack.getItemStack(1))) {
+                                } else if (item == geyserItemStack.getJavaId()) {
                                     inventoryHasItem = true;
                                     break crafting;
                                 }
@@ -522,14 +522,15 @@ public class InventoryUtils {
             for (int col = firstCol; col < width + firstCol; col++) {
                 GeyserItemStack geyserItemStack = inventoryGetter.apply(col + (row * gridDimensions) + 1);
                 Ingredient ingredient = ingredients[ingredientIndex++];
-                if (ingredient.getOptions().length == 0) {
+                int[] items = ingredient.getValues().getHolders(); // FIXME
+                if (items.length == 0) {
                     if (!geyserItemStack.isEmpty()) {
                         return false;
                     }
                 } else {
                     boolean inventoryHasItem = false;
-                    for (ItemStack item : ingredient.getOptions()) {
-                        if (Objects.equals(geyserItemStack.getItemStack(1), item)) {
+                    for (int item : items) {
+                        if (geyserItemStack.getJavaId() == item) {
                             inventoryHasItem = true;
                             break;
                         }

From 04128907b452af7880113878b5f98509af4353ae Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 21 Oct 2024 01:19:18 -0400
Subject: [PATCH 005/165] More progress

---
 .../player/JavaPlayerPositionTranslator.java  | 22 ++++----
 .../java/level/JavaExplodeTranslator.java     | 55 +++++--------------
 .../level/JavaLevelParticlesTranslator.java   |  9 +--
 .../java/level/JavaSetTimeTranslator.java     | 16 ++----
 4 files changed, 37 insertions(+), 65 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index 413833acf..5fc7f7200 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -53,7 +53,7 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
 
         if (!session.isSpawned()) {
             // The server sends an absolute teleport everytime the player is respawned
-            Vector3f pos = Vector3f.from(packet.getX(), packet.getY(), packet.getZ());
+            Vector3f pos = packet.getPosition().toFloat();
             entity.setPosition(pos);
             entity.setYaw(packet.getYaw());
             entity.setPitch(packet.getPitch());
@@ -76,9 +76,9 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             session.sendUpstreamPacket(movePlayerPacket);
             session.setSpawned(true);
             // Make sure the player moves away from (0, 32767, 0) before accepting movement packets
-            session.setUnconfirmedTeleport(new TeleportCache(packet.getX(), packet.getY(), packet.getZ(), packet.getPitch(), packet.getYaw(), packet.getTeleportId()));
+            session.setUnconfirmedTeleport(new TeleportCache(packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ(), packet.getYRot(), packet.getXRot(), packet.getId())); // TODO
 
-            acceptTeleport(session, packet.getX(), packet.getY(), packet.getZ(), packet.getYaw(), packet.getPitch(), packet.getTeleportId());
+            acceptTeleport(session, packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ(), packet.getYRot(), packet.getXRot(), packet.getId());
 
             if (session.getServerRenderDistance() > 32 && !session.isEmulatePost1_13Logic()) {
                 // See DimensionUtils for an explanation
@@ -92,23 +92,23 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             ChunkUtils.updateChunkPosition(session, pos.toInt());
 
             if (session.getGeyser().getConfig().isDebugMode()) {
-                session.getGeyser().getLogger().debug("Spawned player at " + packet.getX() + " " + packet.getY() + " " + packet.getZ());
+                session.getGeyser().getLogger().debug("Spawned player at " + packet.getPosition());
             }
             return;
         }
 
         // If coordinates are relative, then add to the existing coordinate
         double newX = packet.getX() +
-                (packet.getRelative().contains(PositionElement.X) ? entity.getPosition().getX() : 0);
+                (packet.getRelatives().contains(PositionElement.X) ? entity.getPosition().getX() : 0);
         double newY = packet.getY() +
-                (packet.getRelative().contains(PositionElement.Y) ? entity.getPosition().getY() - EntityDefinitions.PLAYER.offset() : 0);
+                (packet.getRelatives().contains(PositionElement.Y) ? entity.getPosition().getY() - EntityDefinitions.PLAYER.offset() : 0);
         double newZ = packet.getZ() +
-                (packet.getRelative().contains(PositionElement.Z) ? entity.getPosition().getZ() : 0);
+                (packet.getRelatives().contains(PositionElement.Z) ? entity.getPosition().getZ() : 0);
 
-        float newPitch = packet.getPitch() + (packet.getRelative().contains(PositionElement.PITCH) ? entity.getPitch() : 0);
-        float newYaw = packet.getYaw() + (packet.getRelative().contains(PositionElement.YAW) ? entity.getYaw() : 0);
+        float newPitch = packet.getPitch() + (packet.getRelatives().contains(PositionElement.X_ROT) ? entity.getPitch() : 0);
+        float newYaw = packet.getYaw() + (packet.getRelatives().contains(PositionElement.Y_ROT) ? entity.getYaw() : 0);
 
-        int id = packet.getTeleportId();
+        int id = packet.getId();
 
         session.getGeyser().getLogger().debug("Teleport (" + id + ") from " + entity.getPosition().getX() + " " + (entity.getPosition().getY() - EntityDefinitions.PLAYER.offset()) + " " + entity.getPosition().getZ());
 
@@ -135,7 +135,7 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
         ServerboundAcceptTeleportationPacket teleportConfirmPacket = new ServerboundAcceptTeleportationPacket(id);
         session.sendDownstreamGamePacket(teleportConfirmPacket);
         // Servers (especially ones like Hypixel) expect exact coordinates given back to them.
-        ServerboundMovePlayerPosRotPacket positionPacket = new ServerboundMovePlayerPosRotPacket(false, x, y, z, yaw, pitch);
+        ServerboundMovePlayerPosRotPacket positionPacket = new ServerboundMovePlayerPosRotPacket(false, false, x, y, z, yaw, pitch);
         session.sendDownstreamGamePacket(positionPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaExplodeTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaExplodeTranslator.java
index f840b8143..76ba803e1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaExplodeTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaExplodeTranslator.java
@@ -26,20 +26,15 @@
 package org.geysermc.geyser.translator.protocol.java.level;
 
 import org.cloudburstmc.math.vector.Vector3f;
-import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventGenericPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetEntityMotionPacket;
-import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.geyser.util.ChunkUtils;
 import org.geysermc.geyser.util.SoundUtils;
-import org.geysermc.mcprotocollib.protocol.data.game.level.block.ExplosionInteraction;
-import org.geysermc.mcprotocollib.protocol.data.game.level.particle.Particle;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.ClientboundExplodePacket;
 
 import java.util.concurrent.ThreadLocalRandom;
@@ -49,53 +44,33 @@ public class JavaExplodeTranslator extends PacketTranslator<ClientboundExplodePa
 
     @Override
     public void translate(GeyserSession session, ClientboundExplodePacket packet) {
-        // todo 1.20.3 handle the 4 new fields
+        Vector3f vector = packet.getCenter().toFloat();
         LevelEventGenericPacket levelEventPacket = new LevelEventGenericPacket();
         levelEventPacket.setType(LevelEvent.PARTICLE_BLOCK_EXPLOSION);
         NbtMapBuilder builder = NbtMap.builder();
-        builder.putFloat("originX", (float) packet.getX());
-        builder.putFloat("originY", (float) packet.getY());
-        builder.putFloat("originZ", (float) packet.getZ());
-        builder.putFloat("radius", packet.getRadius());
-        builder.putInt("size", packet.getExploded().size());
-        // As of 1.21, KEEP means no block actions are run. TRIGGER_BLOCK will run some actions, like buttons can be pressed
-        if (packet.getBlockInteraction() != ExplosionInteraction.KEEP && packet.getBlockInteraction() != ExplosionInteraction.TRIGGER_BLOCK) {
-            int i = 0;
-            for (Vector3i position : packet.getExploded()) {
-                Vector3i pos = Vector3i.from(packet.getX() + position.getX(), packet.getY() + position.getY(), packet.getZ() + position.getZ());
-                ChunkUtils.updateBlock(session, Block.JAVA_AIR_ID, pos);
-                builder.putFloat("pos" + i + "x", pos.getX());
-                builder.putFloat("pos" + i + "y", pos.getY());
-                builder.putFloat("pos" + i + "z", pos.getZ());
-                i++;
-            }
-        } else {
-            // As of Bedrock 1.21 - particles will only be created by the above packet if there are blocks to blow up?
-            // Not sure if the packet does anything - sending it just in case, because BDS still sends it.
-            // TODO move out of packet translator class
-            Particle particle;
-            if (!(packet.getRadius() < 2f) && packet.getBlockInteraction() != ExplosionInteraction.KEEP) {
-                particle = packet.getLargeExplosionParticles();
-            } else {
-                particle = packet.getSmallExplosionParticles();
-            }
-            var particleCreator = JavaLevelParticlesTranslator.createParticle(session, particle);
-            if (particleCreator != null) {
-                session.sendUpstreamPacket(particleCreator.apply(Vector3f.from(packet.getX(), packet.getY(), packet.getZ())));
-            }
+        builder.putFloat("originX", (float) packet.getCenter().getX());
+        builder.putFloat("originY", (float) packet.getCenter().getY());
+        builder.putFloat("originZ", (float) packet.getCenter().getZ());
+
+        // As of Bedrock 1.21 - particles will only be created by the above packet if there are blocks to blow up?
+        // Not sure if the packet does anything - sending it just in case, because BDS still sends it.
+        // TODO move out of packet translator class
+        var particleCreator = JavaLevelParticlesTranslator.createParticle(session, packet.getExplosionParticle());
+        if (particleCreator != null) {
+            session.sendUpstreamPacket(particleCreator.apply(vector));
         }
+
         levelEventPacket.setTag(builder.build());
         session.sendUpstreamPacket(levelEventPacket);
 
-        Vector3f pos = Vector3f.from(packet.getX(), packet.getY(), packet.getZ());
         ThreadLocalRandom random = ThreadLocalRandom.current();
         float pitch = (1.0f + (random.nextFloat() - random.nextFloat()) * 0.2f) * 0.7f; // As of 1.21, Explosion#finalizeExplosion
-        SoundUtils.playSound(session, packet.getExplosionSound(), pos, 4.0f, pitch);
+        SoundUtils.playSound(session, packet.getExplosionSound(), vector, 4.0f, pitch);
 
-        if (packet.getPushX() != 0f || packet.getPushY() != 0f || packet.getPushZ() != 0f) {
+        if (packet.getPlayerKnockback() != null) {
             SetEntityMotionPacket motionPacket = new SetEntityMotionPacket();
             motionPacket.setRuntimeEntityId(session.getPlayerEntity().getGeyserId());
-            motionPacket.setMotion(Vector3f.from(packet.getPushX(), packet.getPushY(), packet.getPushZ()));
+            motionPacket.setMotion(packet.getPlayerKnockback().toFloat());
             session.sendUpstreamPacket(motionPacket);
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java
index 65f84a595..3c73b1886 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java
@@ -132,10 +132,11 @@ public class JavaLevelParticlesTranslator extends PacketTranslator<ClientboundLe
             }
             case DUST, DUST_COLOR_TRANSITION -> { //TODO
                 DustParticleData data = (DustParticleData) particle.getData();
-                int r = (int) (data.getRed() * 255);
-                int g = (int) (data.getGreen() * 255);
-                int b = (int) (data.getBlue() * 255);
-                int rgbData = ((0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
+//                int r = (int) (data.getRed() * 255);
+//                int g = (int) (data.getGreen() * 255);
+//                int b = (int) (data.getBlue() * 255);
+//                int rgbData = ((0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
+                int rgbData = data.getColor(); // TEST
                 return (position) -> {
                     LevelEventPacket packet = new LevelEventPacket();
                     packet.setType(ParticleType.FALLING_DUST);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaSetTimeTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaSetTimeTranslator.java
index 43ef0870a..b7a92dbd4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaSetTimeTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaSetTimeTranslator.java
@@ -36,11 +36,9 @@ public class JavaSetTimeTranslator extends PacketTranslator<ClientboundSetTimePa
 
     @Override
     public void translate(GeyserSession session, ClientboundSetTimePacket packet) {
-        session.setWorldTicks(packet.getWorldAge());
+        session.setWorldTicks(packet.getGameTime());
 
-        // Bedrock sends a GameRulesChangedPacket if there is no daylight cycle
-        // Java just sends a negative long if there is no daylight cycle
-        long time = packet.getTime();
+        long time = packet.getDayTime();
 
         // https://minecraft.wiki/w/Day-night_cycle#24-hour_Minecraft_day
         SetTimePacket setTimePacket = new SetTimePacket();
@@ -49,12 +47,10 @@ public class JavaSetTimeTranslator extends PacketTranslator<ClientboundSetTimePa
         // (Last verified behavior: Bedrock 1.18.12 / Java 1.18.2)
         setTimePacket.setTime((int) (Math.abs(time) % (24000 * 8)));
         session.sendUpstreamPacket(setTimePacket);
-        if (!session.isDaylightCycle() && time >= 0) {
-            // Client thinks there is no daylight cycle but there is
-            session.setDaylightCycle(true);
-        } else if (session.isDaylightCycle() && time < 0) {
-            // Client thinks there is daylight cycle but there isn't
-            session.setDaylightCycle(false);
+
+        // We need to send a gamerule if this changed
+        if (session.isDaylightCycle() != packet.isTickDayTime()) {
+            session.setDaylightCycle(packet.isTickDayTime());
         }
     }
 }

From aaf95effc4b7c6ab3b8bdc9a29f4e4e7ae6b096e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 21 Oct 2024 13:50:41 -0400
Subject: [PATCH 006/165] IT BOOOOOOOOOTS

---
 .../registry/loader/RecipeRegistryLoader.java |  8 ++-
 .../populator/BlockRegistryPopulator.java     |  2 +-
 .../populator/ItemRegistryPopulator.java      |  3 +-
 .../geyser/session/GeyserSession.java         |  3 +-
 .../JavaEntityPositionSyncTranslator.java     | 52 +++++++++++++++++++
 .../entity/JavaTeleportEntityTranslator.java  | 14 +----
 .../player/JavaPlayerPositionTranslator.java  | 22 ++++----
 .../JavaContainerSetSlotTranslator.java       |  5 +-
 8 files changed, 80 insertions(+), 29 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
index f1d0c456f..1af6a8661 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
@@ -49,6 +49,7 @@ import java.io.DataInputStream;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Base64;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -60,6 +61,9 @@ public final class RecipeRegistryLoader implements RegistryLoader<String, Map<Re
 
     @Override
     public Map<RecipeType, List<GeyserRecipe>> load(String input) {
+        if (true) {
+            return Collections.emptyMap();
+        }
         Map<RecipeType, List<GeyserRecipe>> deserializedRecipes = new Object2ObjectOpenHashMap<>();
 
         List<NbtMap> recipes;
@@ -96,7 +100,7 @@ public final class RecipeRegistryLoader implements RegistryLoader<String, Map<Re
             List<NbtMap> rawInputs = recipe.getList("inputs", NbtType.COMPOUND);
             Ingredient[] javaInputs = new Ingredient[rawInputs.size()];
             for (int i = 0; i < rawInputs.size(); i++) {
-                javaInputs[i] = new Ingredient(new ItemStack[] {toItemStack(rawInputs.get(i), helper)});
+                //javaInputs[i] = new Ingredient(new ItemStack[] {toItemStack(rawInputs.get(i), helper)});
             }
             deserializedRecipes.add(new GeyserShapelessRecipe(javaInputs, output));
         }
@@ -121,7 +125,7 @@ public final class RecipeRegistryLoader implements RegistryLoader<String, Map<Re
             for (int j = 0; i < shape.size() * shape.get(0).length; j++) {
                 for (int index : shape.get(j)) {
                     ItemStack stack = letterToRecipe.get(index);
-                    inputs[i++] = new Ingredient(new ItemStack[] {stack});
+                    //inputs[i++] = new Ingredient(new ItemStack[] {stack});
                 }
             }
             deserializedRecipes.add(new GeyserShapedRecipe(shape.size(), shape.get(0).length, inputs, output));
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index bface58da..ce67d3462 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -262,7 +262,7 @@ public final class BlockRegistryPopulator {
                 NbtMap originalBedrockTag = buildBedrockState(blockState, entry);
                 NbtMap bedrockTag = stateMapper.remap(originalBedrockTag);
 
-                GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.get(bedrockTag);
+                GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.getOrDefault(bedrockTag, airDefinition); // FIXME EEE
 
                 GeyserBedrockBlock bedrockDefinition;
                 CustomBlockState blockStateOverride = BlockRegistries.CUSTOM_BLOCK_STATE_OVERRIDES.get(javaRuntimeId);
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index bea213aa4..20997186b 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -240,7 +240,8 @@ public class ItemRegistryPopulator {
                 String bedrockIdentifier = mappingItem.getBedrockIdentifier();
                 ItemDefinition definition = definitions.get(bedrockIdentifier);
                 if (definition == null) {
-                    throw new RuntimeException("Missing Bedrock ItemDefinition in version " + palette.version() + " for mapping: " + mappingItem);
+                    definition = definitions.get("minecraft:air");
+                    //throw new RuntimeException("Missing Bedrock ItemDefinition in version " + palette.version() + " for mapping: " + mappingItem);
                 }
 
                 BlockDefinition bedrockBlock = null;
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index db802439f..bf396a3c3 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -202,6 +202,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.HandPreference;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerAction;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.ChatVisibility;
+import org.geysermc.mcprotocollib.protocol.data.game.setting.ParticleStatus;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.SkinPart;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.CustomStatistic;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.Statistic;
@@ -1966,7 +1967,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     public void sendJavaClientSettings() {
         ServerboundClientInformationPacket clientSettingsPacket = new ServerboundClientInformationPacket(locale(),
                 getRenderDistance(), ChatVisibility.FULL, true, SKIN_PARTS,
-                HandPreference.RIGHT_HAND, false, true);
+                HandPreference.RIGHT_HAND, false, true, ParticleStatus.ALL); // TODO particle status
         sendDownstreamPacket(clientSettingsPacket);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java
new file mode 100644
index 000000000..ecc153ce0
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java.entity;
+
+import org.cloudburstmc.math.vector.Vector3d;
+import org.geysermc.geyser.entity.type.Entity;
+import org.geysermc.geyser.entity.vehicle.ClientVehicle;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundEntityPositionSyncPacket;
+
+@Translator(packet = ClientboundEntityPositionSyncPacket.class)
+public class JavaEntityPositionSyncTranslator extends PacketTranslator<ClientboundEntityPositionSyncPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundEntityPositionSyncPacket packet) {
+        Entity entity = session.getEntityCache().getEntityByJavaId(packet.getId());
+        if (entity == null) return;
+
+        Vector3d pos = packet.getPosition();
+
+        if (entity instanceof ClientVehicle clientVehicle) {
+            clientVehicle.getVehicleComponent().moveAbsolute(pos.getX(), pos.getY(), pos.getZ());
+        }
+
+        entity.teleport(pos.toFloat(), packet.getXRot(), packet.getYRot(), packet.isOnGround());
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java
index 47c61eb8e..eda195a8f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java
@@ -25,26 +25,16 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity;
 
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundTeleportEntityPacket;
-import org.cloudburstmc.math.vector.Vector3f;
-import org.geysermc.geyser.entity.type.Entity;
-import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundTeleportEntityPacket;
 
 @Translator(packet = ClientboundTeleportEntityPacket.class)
 public class JavaTeleportEntityTranslator extends PacketTranslator<ClientboundTeleportEntityPacket> {
 
     @Override
     public void translate(GeyserSession session, ClientboundTeleportEntityPacket packet) {
-        Entity entity = session.getEntityCache().getEntityByJavaId(packet.getEntityId());
-        if (entity == null) return;
-
-        if (entity instanceof ClientVehicle clientVehicle) {
-            clientVehicle.getVehicleComponent().moveAbsolute(packet.getX(), packet.getY(), packet.getZ());
-        }
-
-        entity.teleport(Vector3f.from(packet.getX(), packet.getY(), packet.getZ()), packet.getYaw(), packet.getPitch(), packet.isOnGround());
+        session.getGeyser().getLogger().info(packet.toString());
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index 5fc7f7200..e73e25a93 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity.player;
 
+import org.cloudburstmc.math.vector.Vector3d;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PositionElement;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundAcceptTeleportationPacket;
@@ -50,14 +51,15 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             return;
 
         SessionPlayerEntity entity = session.getPlayerEntity();
+        Vector3d pos = packet.getPosition();
 
         if (!session.isSpawned()) {
+            // TODO this behavior seems outdated (1.21.2).
             // The server sends an absolute teleport everytime the player is respawned
-            Vector3f pos = packet.getPosition().toFloat();
-            entity.setPosition(pos);
-            entity.setYaw(packet.getYaw());
-            entity.setPitch(packet.getPitch());
-            entity.setHeadYaw(packet.getYaw());
+            entity.setPosition(pos.toFloat());
+            entity.setYaw(packet.getXRot());
+            entity.setPitch(packet.getYRot());
+            entity.setHeadYaw(packet.getXRot());
 
             RespawnPacket respawnPacket = new RespawnPacket();
             respawnPacket.setRuntimeEntityId(0); // Bedrock server behavior
@@ -98,15 +100,15 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
         }
 
         // If coordinates are relative, then add to the existing coordinate
-        double newX = packet.getX() +
+        double newX = pos.getX() +
                 (packet.getRelatives().contains(PositionElement.X) ? entity.getPosition().getX() : 0);
-        double newY = packet.getY() +
+        double newY = pos.getY() +
                 (packet.getRelatives().contains(PositionElement.Y) ? entity.getPosition().getY() - EntityDefinitions.PLAYER.offset() : 0);
-        double newZ = packet.getZ() +
+        double newZ = pos.getZ() +
                 (packet.getRelatives().contains(PositionElement.Z) ? entity.getPosition().getZ() : 0);
 
-        float newPitch = packet.getPitch() + (packet.getRelatives().contains(PositionElement.X_ROT) ? entity.getPitch() : 0);
-        float newYaw = packet.getYaw() + (packet.getRelatives().contains(PositionElement.Y_ROT) ? entity.getYaw() : 0);
+        float newPitch = packet.getYRot() + (packet.getRelatives().contains(PositionElement.Y_ROT) ? entity.getPitch() : 0);
+        float newYaw = packet.getXRot() + (packet.getRelatives().contains(PositionElement.X_ROT) ? entity.getYaw() : 0);
 
         int id = packet.getId();
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index ed3abdfe4..1d8e74dfb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.translator.protocol.java.inventory;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetSlotPacket;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
@@ -175,8 +176,8 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                 for (int col = firstCol; col < width + firstCol; col++) {
                     GeyserItemStack geyserItemStack = inventory.getItem(col + (row * gridDimensions) + 1);
                     ingredients[index] = geyserItemStack.getItemData(session);
-                    ItemStack[] itemStacks = new ItemStack[] {geyserItemStack.isEmpty() ? null : geyserItemStack.getItemStack(1)};
-                    javaIngredients[index] = new Ingredient(itemStacks);
+                    int[] items = new int[] {geyserItemStack.isEmpty() ? 0 : geyserItemStack.getJavaId()};
+                    javaIngredients[index] = new Ingredient(new HolderSet(items));
 
                     InventorySlotPacket slotPacket = new InventorySlotPacket();
                     slotPacket.setContainerId(ContainerId.UI);

From fb868e41ed35dc079a63b5b6623c220f64c6c82b Mon Sep 17 00:00:00 2001
From: Roman Alexander <romanalexander@users.noreply.github.com>
Date: Tue, 22 Oct 2024 12:25:13 +0700
Subject: [PATCH 007/165] Protocol Update 1.21.40 (#5091)

Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
---
 .../standalone/src/main/resources/log4j2.xml  |    5 +-
 .../geyser/impl/camera/CameraDefinitions.java |   14 +-
 .../updater/AnvilInventoryUpdater.java        |    8 +-
 .../updater/ChestInventoryUpdater.java        |    2 +
 .../updater/ContainerInventoryUpdater.java    |    2 +
 .../updater/CrafterInventoryUpdater.java      |    3 +
 .../updater/HorseInventoryUpdater.java        |    2 +
 .../inventory/updater/InventoryUpdater.java   |    2 +
 .../inventory/updater/UIInventoryUpdater.java |    3 +
 .../geyser/level/block/type/BlockState.java   |    2 +-
 .../geyser/network/CodecProcessor.java        |   25 +-
 .../geysermc/geyser/network/GameProtocol.java |   14 +-
 .../geyser/network/UpstreamPacketHandler.java |    2 +-
 .../populator/BlockRegistryPopulator.java     |   21 +
 .../populator/ItemRegistryPopulator.java      |    2 +
 .../inventory/OldSmithingTableTranslator.java |    1 +
 .../inventory/PlayerInventoryTranslator.java  |    6 +
 .../ChestedHorseInventoryTranslator.java      |    2 +
 .../entity/SkullBlockEntityTranslator.java    |    5 +-
 .../entity/JavaEntityEventTranslator.java     |    2 +
 .../JavaContainerSetSlotTranslator.java       |    2 +
 .../geysermc/geyser/util/InventoryUtils.java  |    1 +
 .../resources/bedrock/biome_definitions.dat   |  Bin 41832 -> 37653 bytes
 .../bedrock/block_palette.1_21_40.nbt         |  Bin 0 -> 181156 bytes
 .../bedrock/creative_items.1_21_40.json       | 6262 +++++++++++++++
 .../bedrock/runtime_item_states.1_21_40.json  | 6994 +++++++++++++++++
 gradle/libs.versions.toml                     |    6 +-
 27 files changed, 13367 insertions(+), 21 deletions(-)
 create mode 100644 core/src/main/resources/bedrock/block_palette.1_21_40.nbt
 create mode 100644 core/src/main/resources/bedrock/creative_items.1_21_40.json
 create mode 100644 core/src/main/resources/bedrock/runtime_item_states.1_21_40.json

diff --git a/bootstrap/standalone/src/main/resources/log4j2.xml b/bootstrap/standalone/src/main/resources/log4j2.xml
index 54f6f9528..bf361a851 100644
--- a/bootstrap/standalone/src/main/resources/log4j2.xml
+++ b/bootstrap/standalone/src/main/resources/log4j2.xml
@@ -20,6 +20,9 @@
             <AppenderRef ref="TerminalConsole"/>
             <AppenderRef ref="Console"/>
             <AppenderRef ref="File"/>
+            <filters>
+                <MarkerFilter marker="packet_logging" onMatch="DENY" onMismatch="ACCEPT" />
+            </filters>
         </Root>
     </Loggers>
-</Configuration>
\ No newline at end of file
+</Configuration>
diff --git a/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java b/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java
index 1cf6a794e..ee20c14a2 100644
--- a/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java
@@ -43,13 +43,13 @@ public class CameraDefinitions {
 
     static {
         CAMERA_PRESETS = List.of(
-            new CameraPreset(CameraPerspective.FIRST_PERSON.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null),
-            new CameraPreset(CameraPerspective.FREE.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null),
-            new CameraPreset(CameraPerspective.THIRD_PERSON.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null),
-            new CameraPreset(CameraPerspective.THIRD_PERSON_FRONT.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null),
-            new CameraPreset("geyser:free_audio", "minecraft:free", null, null, null, null, null, CameraAudioListener.PLAYER, OptionalBoolean.empty(), null, OptionalBoolean.of(false), null),
-            new CameraPreset("geyser:free_effects", "minecraft:free", null, null, null, null, null, CameraAudioListener.CAMERA, OptionalBoolean.empty(), null, OptionalBoolean.of(true), null),
-            new CameraPreset("geyser:free_audio_effects", "minecraft:free", null, null, null, null, null,  CameraAudioListener.PLAYER, OptionalBoolean.empty(), null, OptionalBoolean.of(true), null));
+            new CameraPreset(CameraPerspective.FIRST_PERSON.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
+            new CameraPreset(CameraPerspective.FREE.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
+            new CameraPreset(CameraPerspective.THIRD_PERSON.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
+            new CameraPreset(CameraPerspective.THIRD_PERSON_FRONT.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
+            new CameraPreset("geyser:free_audio", "minecraft:free", null, null, null, null, null, CameraAudioListener.PLAYER, OptionalBoolean.empty(), null, OptionalBoolean.of(false), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
+            new CameraPreset("geyser:free_effects", "minecraft:free", null, null, null, null, null, CameraAudioListener.CAMERA, OptionalBoolean.empty(), null, OptionalBoolean.of(true), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
+            new CameraPreset("geyser:free_audio_effects", "minecraft:free", null, null, null, null, null,  CameraAudioListener.PLAYER, OptionalBoolean.empty(), null, OptionalBoolean.of(true), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()));
 
         SimpleDefinitionRegistry.Builder<NamedDefinition> builder = SimpleDefinitionRegistry.builder();
         for (int i = 0; i < CAMERA_PRESETS.size(); i++) {
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index 2e0c75708..cc98d0ae5 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -27,7 +27,6 @@ package org.geysermc.geyser.inventory.updater;
 
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
-import java.util.stream.IntStream;
 import net.kyori.adventure.text.Component;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
@@ -41,8 +40,8 @@ import org.geysermc.geyser.inventory.AnvilContainer;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
-import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.EnchantmentTag;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
@@ -57,6 +56,7 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S
 
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.IntStream;
 
 public class AnvilInventoryUpdater extends InventoryUpdater {
     public static final AnvilInventoryUpdater INSTANCE = new AnvilInventoryUpdater();
@@ -81,6 +81,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
                 slotPacket.setSlot(bedrockSlot);
                 slotPacket.setItem(inventory.getItem(i).getItemData(session));
                 slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+                slotPacket.setStorageItem(ItemData.AIR);
                 session.sendUpstreamPacket(slotPacket);
             }
         }
@@ -102,6 +103,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
             slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
             slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
             slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         } else if (lastTargetSlot != javaSlot) {
             // Update the previous target slot to remove repair cost changes
@@ -110,6 +112,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
             slotPacket.setSlot(translator.javaSlotToBedrock(lastTargetSlot));
             slotPacket.setItem(inventory.getItem(lastTargetSlot).getItemData(session));
             slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         }
 
@@ -174,6 +177,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         slotPacket.setSlot(translator.javaSlotToBedrock(slot));
         slotPacket.setItem(itemData);
         slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java
index 9f3d00c57..b28bd23d1 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java
@@ -64,6 +64,7 @@ public class ChestInventoryUpdater extends InventoryUpdater {
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(bedrockItems);
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -77,6 +78,7 @@ public class ChestInventoryUpdater extends InventoryUpdater {
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
         slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java
index 3d372c083..224b7d4c9 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java
@@ -52,6 +52,7 @@ public class ContainerInventoryUpdater extends InventoryUpdater {
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(Arrays.asList(bedrockItems));
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -65,6 +66,7 @@ public class ContainerInventoryUpdater extends InventoryUpdater {
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
         slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java
index 315b84c6d..d3135c97e 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java
@@ -59,6 +59,7 @@ public class CrafterInventoryUpdater extends InventoryUpdater {
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(Arrays.asList(bedrockItems));
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
 
         // inventory and hotbar
@@ -71,6 +72,7 @@ public class CrafterInventoryUpdater extends InventoryUpdater {
         contentPacket.setContainerId(ContainerId.INVENTORY);
         contentPacket.setContents(Arrays.asList(bedrockItems));
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
 
         // Crafter result - it doesn't come after the grid, as explained elsewhere.
@@ -93,6 +95,7 @@ public class CrafterInventoryUpdater extends InventoryUpdater {
         packet.setSlot(translator.javaSlotToBedrock(javaSlot));
         packet.setItem(inventory.getItem(javaSlot).getItemData(session));
         packet.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        packet.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(packet);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java
index 1a46fc02a..657c91604 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java
@@ -52,6 +52,7 @@ public class HorseInventoryUpdater extends InventoryUpdater {
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(Arrays.asList(bedrockItems));
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -65,6 +66,7 @@ public class HorseInventoryUpdater extends InventoryUpdater {
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
         slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java
index b7ef4720f..c57f59bfd 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java
@@ -48,6 +48,7 @@ public class InventoryUpdater {
         contentPacket.setContainerId(ContainerId.INVENTORY);
         contentPacket.setContents(Arrays.asList(bedrockItems));
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -58,6 +59,7 @@ public class InventoryUpdater {
             slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
             slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
             slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
             return true;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java
index f4f40d6ce..23cfc79f5 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.inventory.updater;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.session.GeyserSession;
@@ -49,6 +50,7 @@ public class UIInventoryUpdater extends InventoryUpdater {
             slotPacket.setSlot(bedrockSlot);
             slotPacket.setItem(inventory.getItem(i).getItemData(session));
             slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         }
     }
@@ -63,6 +65,7 @@ public class UIInventoryUpdater extends InventoryUpdater {
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
         slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/type/BlockState.java b/core/src/main/java/org/geysermc/geyser/level/block/type/BlockState.java
index 2513e3ceb..32aa2fd3f 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/type/BlockState.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/type/BlockState.java
@@ -63,7 +63,7 @@ public final class BlockState {
             return null;
         }
         //noinspection unchecked
-        return (T) get(property);
+        return (T) value;
     }
 
     public <T extends Comparable<T>> T getValue(Property<T> property, T def) {
diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
index 741369c46..cdbeef143 100644
--- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
+++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
@@ -44,6 +44,8 @@ import org.cloudburstmc.protocol.bedrock.codec.v712.serializer.InventorySlotSeri
 import org.cloudburstmc.protocol.bedrock.codec.v712.serializer.MobArmorEquipmentSerializer_v712;
 import org.cloudburstmc.protocol.bedrock.codec.v729.serializer.InventoryContentSerializer_v729;
 import org.cloudburstmc.protocol.bedrock.codec.v729.serializer.InventorySlotSerializer_v729;
+import org.cloudburstmc.protocol.bedrock.codec.v748.serializer.InventoryContentSerializer_v748;
+import org.cloudburstmc.protocol.bedrock.codec.v748.serializer.InventorySlotSerializer_v748;
 import org.cloudburstmc.protocol.bedrock.packet.AnvilDamagePacket;
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.cloudburstmc.protocol.bedrock.packet.BossEventPacket;
@@ -140,6 +142,13 @@ class CodecProcessor {
         }
     };
 
+    private static final BedrockPacketSerializer<InventoryContentPacket> INVENTORY_CONTENT_SERIALIZER_V748 = new InventoryContentSerializer_v748() {
+        @Override
+        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventoryContentPacket packet) {
+            throw new IllegalArgumentException("Client cannot send InventoryContentPacket in server-auth inventory environment!");
+        }
+    };
+
     private static final BedrockPacketSerializer<InventoryContentPacket> INVENTORY_CONTENT_SERIALIZER_V729 = new InventoryContentSerializer_v729() {
         @Override
         public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventoryContentPacket packet) {
@@ -174,6 +183,13 @@ class CodecProcessor {
         }
     };
 
+    private static final BedrockPacketSerializer<InventorySlotPacket> INVENTORY_SLOT_SERIALIZER_V748 = new InventorySlotSerializer_v748() {
+        @Override
+        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventorySlotPacket packet) {
+            throw new IllegalArgumentException("Client cannot send InventorySlotPacket in server-auth inventory environment!");
+        }
+    };
+
     /**
      * Serializer that does nothing when trying to deserialize BossEventPacket since it is not used from the client.
      */
@@ -262,11 +278,14 @@ class CodecProcessor {
 
     @SuppressWarnings("unchecked")
     static BedrockCodec processCodec(BedrockCodec codec) {
+        boolean is748OrAbove = codec.getProtocolVersion() >= 748;
         boolean is729OrAbove = codec.getProtocolVersion() >= 729;
         boolean is712OrAbove = codec.getProtocolVersion() >= 712;
 
         BedrockPacketSerializer<InventoryContentPacket> inventoryContentSerializer;
-        if (is729OrAbove) {
+        if (is748OrAbove) {
+            inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V748;
+        } else if (is729OrAbove) {
             inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V729;
         } else if (is712OrAbove) {
             inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V712;
@@ -275,7 +294,9 @@ class CodecProcessor {
         }
 
         BedrockPacketSerializer<InventorySlotPacket> inventorySlotSerializer;
-        if (is729OrAbove) {
+        if (is748OrAbove) {
+            inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V748;
+        } else if (is729OrAbove) {
             inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V729;
         } else if (is712OrAbove) {
             inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V712;
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index c188e92bb..c76958777 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -32,6 +32,7 @@ import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
 import org.cloudburstmc.protocol.bedrock.codec.v686.Bedrock_v686;
 import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
 import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
+import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodec;
@@ -50,8 +51,8 @@ public final class GameProtocol {
      * Default Bedrock codec that should act as a fallback. Should represent the latest available
      * release of the game that Geyser supports.
      */
-    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v729.CODEC.toBuilder()
-        .minecraftVersion("1.21.31")
+    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
+        .minecraftVersion("1.21.40")
         .build());
 
     /**
@@ -78,8 +79,11 @@ public final class GameProtocol {
         SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v712.CODEC.toBuilder()
             .minecraftVersion("1.21.20 - 1.21.23")
             .build()));
+        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v729.CODEC.toBuilder()
+                .minecraftVersion("1.21.30/1.21.31")
+                .build()));
         SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
-            .minecraftVersion("1.21.30/1.21.31")
+            .minecraftVersion("1.21.40")
             .build());
     }
 
@@ -107,6 +111,10 @@ public final class GameProtocol {
         return session.getUpstream().getProtocolVersion() < Bedrock_v686.CODEC.getProtocolVersion();
     }
 
+    public static boolean isPre1_21_40(GeyserSession session) {
+        return session.getUpstream().getProtocolVersion() < Bedrock_v748.CODEC.getProtocolVersion();
+    }
+
     /**
      * Gets the {@link PacketCodec} for Minecraft: Java Edition.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index 5c48df1f9..48f1dee5f 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -209,7 +209,7 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
             ResourcePackManifest.Header header = pack.manifest().header();
             resourcePacksInfo.getResourcePackInfos().add(new ResourcePacksInfoPacket.Entry(
                     header.uuid().toString(), header.version().toString(), codec.size(), pack.contentKey(),
-                    "", header.uuid().toString(), false, false, false));
+                    "", header.uuid().toString(), false, false, false, ""));
         }
         resourcePacksInfo.setForcedToAccept(GeyserImpl.getInstance().getConfig().isForceResourcePacks());
         session.sendUpstreamPacket(resourcePacksInfo);
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index bface58da..b95da4f8f 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -48,6 +48,7 @@ import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
 import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
 import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
 import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
+import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.data.BlockPropertyData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.geysermc.geyser.GeyserImpl;
@@ -60,6 +61,7 @@ import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.level.block.type.FlowerPotBlock;
+import org.geysermc.geyser.level.block.type.SkullBlock;
 import org.geysermc.geyser.level.physics.PistonBehavior;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
@@ -129,6 +131,16 @@ public final class BlockRegistryPopulator {
                 .put(ObjectIntPair.of("1_21_0", Bedrock_v685.CODEC.getProtocolVersion()), Conversion712_685::remapBlock)
                 .put(ObjectIntPair.of("1_21_20", Bedrock_v712.CODEC.getProtocolVersion()), Conversion729_712::remapBlock)
                 .put(ObjectIntPair.of("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()), tag -> tag)
+                .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), tag -> {
+                    final String name = tag.getString("name");
+                    if (name.endsWith("_wood") && tag.getCompound("states").containsKey("stripped_bit")) {
+                        NbtMapBuilder builder = tag.getCompound("states").toBuilder();
+                        builder.remove("stripped_bit");
+                        NbtMap states = builder.build();
+                        return tag.toBuilder().putCompound("states", states).build();
+                    }
+                    return tag;
+                })
                 .build();
 
         // We can keep this strong as nothing should be garbage collected
@@ -262,6 +274,15 @@ public final class BlockRegistryPopulator {
                 NbtMap originalBedrockTag = buildBedrockState(blockState, entry);
                 NbtMap bedrockTag = stateMapper.remap(originalBedrockTag);
 
+                // FIXME TEMPORARY
+                if (blockState.block() instanceof SkullBlock && palette.valueInt() >= Bedrock_v748.CODEC.getProtocolVersion()) {
+                    // The flattening must be a very interesting process.
+                    String skullName = blockState.block().javaIdentifier().asString().replace("_wall", "");
+                    bedrockTag = bedrockTag.toBuilder()
+                        .putString("name", skullName)
+                        .build();
+                }
+
                 GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.get(bedrockTag);
 
                 GeyserBedrockBlock bedrockDefinition;
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index bea213aa4..12b5ebb0e 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -43,6 +43,7 @@ import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
 import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
 import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
 import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
+import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
@@ -95,6 +96,7 @@ public class ItemRegistryPopulator {
         paletteVersions.add(new PaletteVersion("1_21_0", Bedrock_v685.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion712_685::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_20", Bedrock_v712.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion729_712::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()));
+        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
index 685d51fc0..125614e77 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
@@ -141,6 +141,7 @@ public class OldSmithingTableTranslator extends AbstractBlockInventoryTranslator
         slotPacket.setSlot(53);
         slotPacket.setItem(UPGRADE_TEMPLATE.apply(session.getUpstream().getProtocolVersion()));
         slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index a276e4750..65fd87c83 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -85,6 +85,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
         }
         inventoryContentPacket.setContents(Arrays.asList(contents));
         inventoryContentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        inventoryContentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(inventoryContentPacket);
 
         // Armor
@@ -102,6 +103,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
         }
         armorContentPacket.setContents(Arrays.asList(contents));
         armorContentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        armorContentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(armorContentPacket);
 
         // Offhand
@@ -109,6 +111,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
         offhandPacket.setContainerId(ContainerId.OFFHAND);
         offhandPacket.setContents(Collections.singletonList(inventory.getItem(45).getItemData(session)));
         offhandPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        offhandPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(offhandPacket);
     }
 
@@ -131,6 +134,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             }
 
             slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         }
     }
@@ -168,12 +172,14 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             }
             slotPacket.setItem(bedrockItem);
             slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         } else if (slot == 45) {
             InventoryContentPacket offhandPacket = new InventoryContentPacket();
             offhandPacket.setContainerId(ContainerId.OFFHAND);
             offhandPacket.setContents(Collections.singletonList(bedrockItem));
             offhandPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+            offhandPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(offhandPacket);
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
index ba3b7285e..363761e47 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
@@ -96,6 +96,7 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
         contentPacket.setContainerId(ContainerId.INVENTORY);
         contentPacket.setContents(Arrays.asList(bedrockItems));
         contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
 
         ItemData[] horseItems = new ItemData[chestSize + 1];
@@ -110,6 +111,7 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
         horseContentsPacket.setContainerId(inventory.getBedrockId());
         horseContentsPacket.setContents(Arrays.asList(horseItems));
         horseContentsPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        horseContentsPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(horseContentsPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
index c2d457202..77f58f5d6 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
@@ -36,6 +36,7 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.level.block.type.SkullBlock;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.SkullCache;
 import org.geysermc.geyser.skin.SkinProvider;
@@ -57,7 +58,9 @@ public class SkullBlockEntityTranslator extends BlockEntityTranslator implements
             // Could be a wall skull block otherwise, which has rotation in its Bedrock state
             bedrockNbt.putFloat("Rotation", rotation * 22.5f);
         }
-        bedrockNbt.putByte("SkullType", (byte) (blockState.block() instanceof SkullBlock skull ? skull.skullType().bedrockId() : 0));
+        if (GameProtocol.isPre1_21_40(session)) {
+            bedrockNbt.putByte("SkullType", (byte) (blockState.block() instanceof SkullBlock skull ? skull.skullType().bedrockId() : 0));
+        }
         if (blockState.getValue(Properties.POWERED)) {
             bedrockNbt.putBoolean("MouthMoving", true);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
index 3195a6536..a37ba88b3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
@@ -32,6 +32,7 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityEventType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
@@ -170,6 +171,7 @@ public class JavaEntityEventTranslator extends PacketTranslator<ClientboundEntit
                     offhandPacket.setContainerId(ContainerId.OFFHAND);
                     offhandPacket.setContents(Collections.singletonList(InventoryUtils.getTotemOfUndying().apply(session.getUpstream().getProtocolVersion())));
                     offhandPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+                    offhandPacket.setStorageItem(ItemData.AIR);
                     session.sendUpstreamPacket(offhandPacket);
                 }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index 9b5d95afe..732eb6be5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -183,6 +183,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                     slotPacket.setSlot(col + (row * gridDimensions) + offset);
                     slotPacket.setItem(ItemData.AIR);
                     slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+                    slotPacket.setStorageItem(ItemData.AIR);
                     session.sendUpstreamPacket(slotPacket);
                     index++;
                 }
@@ -216,6 +217,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                     slotPacket.setSlot(col + (row * gridDimensions) + offset);
                     slotPacket.setItem(ingredients[index]);
                     slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+                    slotPacket.setStorageItem(ItemData.AIR);
                     session.sendUpstreamPacket(slotPacket);
                     index++;
                 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index a0bd5a4c7..4011cc1bd 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -183,6 +183,7 @@ public class InventoryUtils {
         cursorPacket.setSlot(0);
         cursorPacket.setItem(session.getPlayerInventory().getCursor().getItemData(session));
         cursorPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
+        cursorPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(cursorPacket);
     }
 
diff --git a/core/src/main/resources/bedrock/biome_definitions.dat b/core/src/main/resources/bedrock/biome_definitions.dat
index 3ae94a5c85c6f13d4de2feb8a5d24d2ab2f11efe..2bd58d0a33a9ea50e55361a77e3832a66cdc771a 100644
GIT binary patch
delta 1462
zcmY*Ze@s(X6rRAw1G~~%E0&Iyb+kx_5ymP~9S+>UX6guI5KC#H(D7rSWviu#&Q`35
z1*&{uNfm~e#VtBE^|H9=9C1HPmf#Y%WZC|i%ZAC8DT~>b?2j4u-o5X=vHo?>cfWJK
z^PPKMf4QDCekSRBT{4>c3}eL{#*>4@lu|%rgoimGbssETBO-nSE^~1-rM)b0v5*!Z
zyVKV#qrn}e7S$>a*_r8huT+6lg&(7euf)42aKkR(I{fgc17*ri5q}ejjMgRjgIH9#
zXdG78CcksWf@y;de(frhu9%{@LK6^TGNVah!naojh+o?%b-`g#x03H7jM>a9Vr2nS
z;OgoCw(7h~un~-9xp`Y!81)yRGOr@{^%_>lk==*yvv=a&J|kW+Y>-+ZcMYQ7`ka39
zYmSYv8%+Dj?<Ow`qPYRS*56d8+|oyGT1u1X?Ckk|T+4US^GntsezXeW1_YlRfU3Yl
z6W%STlC{d#ewai-YvCK1EBu6>g$KD-bO^4ed_p`{e3(oYXE0^qjw@Co#TEi=ewi;|
zE$e%6Z+#=hq9rksx8Z4;B)m9E`(d_=bLVT!*(0QWV-71ivndGsGnZ&$wZn{UWmc&}
zd{K6ZPKa#oM#;11nV@<(9xvZ0bIz65QkQEhKE)$jKBAnNO&soT=_Zlq;*to5ZI!$6
zb>+vD@MYBta)FkulK6`fMiw1&|Ly1P?W5%A4zIkx`85GDTeD<=&2@w1vpTa(usHXS
zi_Sbb*0~Roi*A0OgxCJlW0Pe<O%~SQx6L8=yiVHNAKnUyfI}^A9y3DUS|Vf9t#y=F
z?J(eZU!jDP&wanKV)K#5@SrV<lkGPs@s5(i*^V$N@4U5)j%r8OE_~DF<j+PJovG;P
z-b4QC4hUP6Kv7RCCA9^WxYDb~KRpd(*K1dkMKFQ~!A|~Mz+d`FMTmYS$MADh4c*?$
z)S;%omrVC>7VM6Y@%?SID`5{Du@$I1(1Gg*UZsuAM=}r%4`WS)?i%JJZ)5P_Ini-C
zx&~b2)_|G05|%H1I0H4&y}TMrVAv2@H)vwcauZpYIO2wSh_1UJdSqCS`6073CjLr?
zoku_5Eim(rSP0+6+Gs=J;cA&@9ARq_RvTa)Et2uGqaHeniue$IiZ{@_g)|*v$6S1@
zh30rAokIM$UCvoO)+E+9@dJ=+ky=bXOfPa1L0m{Q3uo4|3ceFP<nD>A|C`@F5yrv<
z6BW$Q*^M|k>4Net_T{mGWa3nK4c?zLVfj=Z98>kQ;hR$)Qguo!I6fUf&T00aJ9~OW
SmDbzd5%77MUvGbi{{98b;aB?r

delta 5474
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

diff --git a/core/src/main/resources/bedrock/block_palette.1_21_40.nbt b/core/src/main/resources/bedrock/block_palette.1_21_40.nbt
new file mode 100644
index 0000000000000000000000000000000000000000..f7d3ace9aca01fe633ec7c90f358245bfde4af75
GIT binary patch
literal 181156
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%0DkWAHZt1YNzSM($+M93nyVnUHCn#
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
Ik{MwB5BVQ@8UO$Q

literal 0
HcmV?d00001

diff --git a/core/src/main/resources/bedrock/creative_items.1_21_40.json b/core/src/main/resources/bedrock/creative_items.1_21_40.json
new file mode 100644
index 000000000..e4a15d9c6
--- /dev/null
+++ b/core/src/main/resources/bedrock/creative_items.1_21_40.json
@@ -0,0 +1,6262 @@
+{
+    "items": [
+        {
+            "id": "minecraft:oak_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jungle_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mangrove_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cherry_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_mosaic",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cobblestone_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSLY2XwCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2gHUQMwwFQeNQMKAG5ldHdvcmtfaWRzPhG8CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:granite_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLBAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfd2FsbAQJAG5hbWVfaGFzaE1GmM5AU0qUAwoAbmV0d29ya19pZE/UoPUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:diorite_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMBAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfd2FsbAQJAG5hbWVfaGFzaF27l0QvdM8xAwoAbmV0d29ya19pZJe7jOwKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:andesite_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNBAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3dhbGwECQBuYW1lX2hhc2gAL1Vay0kZjQMKAG5ldHdvcmtfaWRJGxdvCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:sandstone_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV93YWxsBAkAbmFtZV9oYXNoYL2gu8a6HfgDCgBuZXR3b3JrX2lkHrhRjgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVBAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfd2FsbAQJAG5hbWVfaGFzaLAUUdOlo24MAwoAbmV0d29ya19pZI66BqAKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stone_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2hQegufuP6vjAMKAG5ldHdvcmtfaWS4AsOKCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2i680zzUekp+wMKAG5ldHdvcmtfaWTQTaHPCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3dhbGwECQBuYW1lX2hhc2gGJFLNjfgSCAMKAG5ldHdvcmtfaWSc5iUZCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:nether_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja193YWxsBAkAbmFtZV9oYXNoAxb5f2yQ5MYDCgBuZXR3b3JrX2lkAECPDAoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_nether_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWBAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBOtwkokUt3cAwoAbmV0d29ya19pZJykmZUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:end_stone_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTBAAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja193YWxsBAkAbmFtZV9oYXNoOsr1L9kJIAMDCgBuZXR3b3JrX2lkjuYlYgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUBAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfd2FsbAQJAG5hbWVfaGFzaDO5IGrYZu1/AwoAbmV0d29ya19pZB4nLYYKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blackstone_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:polished_deepslate_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfd2FsbAQJAG5hbWVfaGFzaMyeeu1IRf03AwoAbmV0d29ya19pZDkIrosKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tuff_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaIL0IyNCOsonAwoAbmV0d29ya19pZJW4T5UKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_tuff_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfd2FsbAQJAG5hbWVfaGFzaJVZj6QYWXUrAwoAbmV0d29ya19pZLU7dooKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mud_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oak_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:spruce_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:birch_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:jungle_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:acacia_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cherry_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bamboo_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:nether_brick_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWR+T9kTCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:spruce_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkEnw5egoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:birch_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWQL77/BCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:jungle_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkA1zgtgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:acacia_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkHg/kTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWTwjOCeCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWSfweCSCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cherry_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lk/9bTZQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bamboo_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkzIpPywoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZDQzVbEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQsAaW5fd2FsbF9iaXQAAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkkf+/3QoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:normal_stone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:oak_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jungle_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mangrove_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cherry_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_mosaic_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stone_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:sandstone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:red_sandstone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:granite_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_granite_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:diorite_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_diorite_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:andesite_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:polished_andesite_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:nether_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_nether_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:end_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:quartz_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_quartz_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purpur_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dark_prismarine_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_bricks_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:blackstone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:polished_deepslate_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfc3RhaXJzBAkAbmFtZV9oYXNoKjyNUBjcfZsDCgBuZXR3b3JrX2lk+LsycgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_tuff_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc3RhaXJzBAkAbmFtZV9oYXNo8yuah8QI1dcDCgBuZXR3b3JrX2lkjLoU4AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tuff_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0AwAACAQAbmFtZRsAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNoWJpkAurUfKwDCgBuZXR3b3JrX2lkUMcjiwoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mud_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:weathered_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:wooden_door"
+        },
+        {
+            "id": "minecraft:spruce_door"
+        },
+        {
+            "id": "minecraft:birch_door"
+        },
+        {
+            "id": "minecraft:jungle_door"
+        },
+        {
+            "id": "minecraft:acacia_door"
+        },
+        {
+            "id": "minecraft:dark_oak_door"
+        },
+        {
+            "id": "minecraft:mangrove_door"
+        },
+        {
+            "id": "minecraft:cherry_door"
+        },
+        {
+            "id": "minecraft:bamboo_door"
+        },
+        {
+            "id": "minecraft:iron_door"
+        },
+        {
+            "id": "minecraft:crimson_door"
+        },
+        {
+            "id": "minecraft:warped_door"
+        },
+        {
+            "id": "minecraft:copper_door"
+        },
+        {
+            "id": "minecraft:exposed_copper_door"
+        },
+        {
+            "id": "minecraft:weathered_copper_door"
+        },
+        {
+            "id": "minecraft:oxidized_copper_door"
+        },
+        {
+            "id": "minecraft:waxed_copper_door"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_door"
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_door"
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_door"
+        },
+        {
+            "id": "minecraft:trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:birch_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:jungle_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:acacia_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dark_oak_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mangrove_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cherry_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:bamboo_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:iron_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:warped_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXBAAACAQAbmFtZRkAbWluZWNyYWZ0OmNvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO9fXio+svKVAwoAbmV0d29ya19pZMCoRjEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:exposed_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYBAAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoYhDFUysN7qUDCgBuZXR3b3JrX2lkMzwGJgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:weathered_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZBAAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2hFnEC282a1tgMKAG5ldHdvcmtfaWTk70oiCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:oxidized_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaBAAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaOJpG/XFexVwAwoAbmV0d29ya19pZPhi0J4KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbBAAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO0JUKUHqNU6AwoAbmV0d29ya19pZJC3ZuMKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcBAAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoBHHxCpkUzpgDCgBuZXR3b3JrX2lkw2XBGQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdBAAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2gH9Fi3JCF4egMKAG5ldHdvcmtfaWRkGU6TCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeBAAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaNA/q9qAy6Z9AwoAbmV0d29ya19pZDgExS8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:iron_bars",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:white_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:gray_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:black_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:orange_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:yellow_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lime_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:green_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_blue_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blue_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:purple_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:magenta_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pink_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tinted_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:white_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_gray_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gray_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:black_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brown_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:green_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cyan_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blue_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purple_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:ladder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:scaffolding",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brick_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_stone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:normal_stone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNoIvsjJLQdolcDCgBuZXR3b3JrX2lkC1zqRQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cobblestone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoBAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2h5CXtW7vlQVgMKAG5ldHdvcmtfaWRDGyj2CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3BAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2ijm1BCwB82VgMKAG5ldHdvcmtfaWR7ByMGCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oak_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:spruce_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:birch_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:jungle_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:acacia_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cherry_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bamboo_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bamboo_mosaic_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2js6EexuKuzrQMKAG5ldHdvcmtfaWRSsMxaCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hiA4kFUl4tHAMKAG5ldHdvcmtfaWS6joSOCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV9zbGFiBAkAbmFtZV9oYXNo/GMI0MZnrhsDCgBuZXR3b3JrX2lkFP8WmwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDBAAACAQAbmFtZRwAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaE+zxVQweViJAwoAbmV0d29ya19pZHsu74YKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4BAAACAQAbmFtZR8AbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaIkmsO1gw3gnAwoAbmV0d29ya19pZFSiwP0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaEyDjeWlUHItAwoAbmV0d29ya19pZIT4rmwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_red_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEBAAACAQAbmFtZSAAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2hTVRS++snU3wMKAG5ldHdvcmtfaWSvIAviCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6BAAACAQAbmFtZSMAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2i9iN2UK272tgMKAG5ldHdvcmtfaWRUZrwJCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:granite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/BAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaL0HprlAhhZwAwoAbmV0d29ya19pZIcIdc8KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_granite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSABAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaP6bXk5w2dGrAwoAbmV0d29ya19pZCsRy1cKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:diorite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9BAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaM3ppS8v55sNAwoAbmV0d29ya19pZB+Pv9oKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_diorite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+BAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaLZlyJLkMPhyAwoAbmV0d29ya19pZFM0HYwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:andesite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8BAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2icIrtuy/aosAMKAG5ldHdvcmtfaWTtXTtYCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_andesite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7BAAACAQAbmFtZSAAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2j56zJOfCF+3wMKAG5ldHdvcmtfaWRBs69FCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3NsYWIECQBuYW1lX2hhc2hO/Da4jU2v4wMKAG5ldHdvcmtfaWRG/qphCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:nether_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja19zbGFiBAkAbmFtZV9oYXNonymoa2zbbqMDCgBuZXR3b3JrX2lkquvR1QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_nether_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5BAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaG89ujUk3Y64AwoAbmV0d29ya19pZEZIunAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:end_stone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja19zbGFiBAkAbmFtZV9oYXNo4tkxQtl+IyQDCgBuZXR3b3JrX2lkhByH/woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:quartz_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrBAAACAQAbmFtZRUAbWluZWNyYWZ0OnF1YXJ0el9zbGFiBAkAbmFtZV9oYXNo9JMj3upfsbwDCgBuZXR3b3JrX2lkn2g2VAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:smooth_quartz_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBBAAACAQAbmFtZRwAbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc2xhYgQJAG5hbWVfaGFzaHOSJv8ve0nmAwoAbmV0d29ya19pZFMk/JsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:purpur_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzBAAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnB1cl9zbGFiBAkAbmFtZV9oYXNo4XeWbKpx2ScDCgBuZXR3b3JrX2lkRkga5goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:prismarine_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0BAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfc2xhYgQJAG5hbWVfaGFzaI9x+1fY8QRfAwoAbmV0d29ya19pZBTUZhwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_prismarine_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1BAAACAQAbmFtZR4AbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zbGFiBAkAbmFtZV9oYXNoSsZGDkEL5ZUDCgBuZXR3b3JrX2lkNLQ8VwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:prismarine_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2BAAACAQAbmFtZR8AbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaB1FSbVi97xJAwoAbmV0d29ya19pZEBwwFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blackstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_deepslate_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tuff_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfc2xhYgQJAG5hbWVfaGFzaIhCGdlIsnMUAwoAbmV0d29ya19pZN1dUL4KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_tuff_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc2xhYgQJAG5hbWVfaGFzaLXdb48YvAsHAwoAbmV0d29ya19pZAnJ7W0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaLqPMjVCv5dIAwoAbmV0d29ya19pZOmeRhcKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mud_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:weathered_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2JyaWNrcwQJAG5hbWVfaGFzaGAiQu8VWVJRAwoAbmV0d29ya19pZH2DjXUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjBAAACAQAbmFtZRwAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaIZBO00MONRIAwoAbmV0d29ya19pZL2WDrAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cracked_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkBAAACAQAbmFtZR4AbWluZWNyYWZ0OmNyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNocIkAp6riMz4DCgBuZXR3b3JrX2lkTWGeCwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:chiseled_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlBAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaMB2FPLLADkEAwoAbmV0d29ya19pZOIPn0IKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:smooth_stone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:end_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cracked_polished_blackstone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gilded_blackstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:chiseled_polished_blackstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_tiles",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cracked_deepslate_tiles",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo/hbQ+mXSK7wDCgBuZXR3b3JrX2lk6gmIwQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cracked_deepslate_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_tuff",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmYECQBuYW1lX2hhc2iVliOT8OTQ9AMKAG5ldHdvcmtfaWTLNKOiCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_tuff_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AwAACAQAbmFtZR4AbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo3oQw6gmxYuADCgBuZXR3b3JrX2lkm3D8AgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cobblestone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mossy_cobblestone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPsXMaQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvBAAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX3NhbmRzdG9uZQQJAG5hbWVfaGFzaPEkxMvZmemgAwoAbmV0d29ya19pZGI5NB4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwBAAACAQAbmFtZRcAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmUECQBuYW1lX2hhc2ichLQc71njnQMKAG5ldHdvcmtfaWSmBLkRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmUECQBuYW1lX2hhc2huR7XTwISyCAMKAG5ldHdvcmtfaWSzWj3UCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRXRYxZCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7BAAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX3JlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2gh5sX+ON054wMKAG5ldHdvcmtfaWT6Pw1PCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS8BAAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoaOtka4NrQ1EDCgBuZXR3b3JrX2lk3r/JPAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9BAAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoqsNl8x36ju4DCgBuZXR3b3JrX2lk7x5DTwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:coal_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dried_kelp_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:copper_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:weathered_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AwAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaC/JEFOWnmEcAwoAbmV0d29ya19pZC6YiiMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:exposed_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQABAAACAQAbmFtZR4AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNolFIBYLYU0IcDCgBuZXR3b3JrX2lk4UqptAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:weathered_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBBAAACAQAbmFtZSAAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2jB3o8enlv1RgMKAG5ldHdvcmtfaWRih2pOCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCBAAACAQAbmFtZR8AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaBRfNhyndve7AwoAbmV0d29ya19pZKY2cnEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDBAAACAQAbmFtZRwAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaDmC92M2RO+HAwoAbmV0d29ya19pZH4og2AKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNoWmd6B+hWwiEDCgBuZXR3b3JrX2lk8d4ZQwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFBAAACAQAbmFtZSYAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2hXfilVFDAiYQMKAG5ldHdvcmtfaWQqTGC1CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaEbeMT605GP4AwoAbmV0d29ya19pZOZjpkkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:weathered_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3AwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaIsW5pmpJEuQAwoAbmV0d29ya19pZHetwrkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:exposed_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4AwAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoOvrLJ0UowbgDCgBuZXR3b3JrX2lkZj7cPwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:weathered_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5AwAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hh+42XlsWvGAMKAG5ldHdvcmtfaWS7Cy59CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6AwAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaLpTIsnfluiCAwoAbmV0d29ya19pZB9/jS8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AwAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaFnXvXY5OinzAwoAbmV0d29ya19pZAcKtHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AwAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoHJdq+Pph6hMDCgBuZXR3b3JrX2lkdge7IAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AwAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaMj49OvlTpgCAwoAbmV0d29ya19pZN/r+roKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_chiseled_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AwAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hzuO+Sg9LYQwMKAG5ldHdvcmtfaWQ7AN7iCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcHBlcl9idWxiBAkAbmFtZV9oYXNo41TimHOsMWcDCgBuZXR3b3JrX2lkJnZvAgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:exposed_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIBAAACAQAbmFtZR0AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2g++f1wYLLCrAMKAG5ldHdvcmtfaWRLdMmGCgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:weathered_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJBAAACAQAbmFtZR8AbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMEtsYfwRTXlAwoAbmV0d29ya19pZAp51LQKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKBAAACAQAbmFtZR4AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNovnrBQZs8nDIDCgBuZXR3b3JrX2lkPsj0AAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLBAAACAQAbmFtZRsAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoGTg6TYllMiIDCgBuZXR3b3JrX2lk9m0WhgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMBAAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2gI6xkPcvBDVwMKAG5ldHdvcmtfaWR7BRcACgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMsUnmp3/VqVAwoAbmV0d29ya19pZEoworoKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_bulb",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoBFKxY3fjVq4DCgBuZXR3b3JrX2lkzrJ6aAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:iron_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gold_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:emerald_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:diamond_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lapis_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:raw_copper_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:raw_iron_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:raw_gold_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:quartz_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZE2axGsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:quartz_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:quartz_pillar",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5BAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9waWxsYXIECQBuYW1lX2hhc2igp62HI+PuSwMKAG5ldHdvcmtfaWS9SGXLCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_quartz_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3F1YXJ0el9ibG9jawQJAG5hbWVfaGFzaAftJM9mCAvaAwoAbmV0d29ya19pZFwy0s0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_quartz",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6BAAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9xdWFydHoECQBuYW1lX2hhc2hIVzzgiItGagMKAG5ldHdvcmtfaWTVWgU2CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:prismarine",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWQnuuW1CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzBAAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzBAkAbmFtZV9oYXNozeGe3/7s5fcDCgBuZXR3b3JrX2lkj/iBnAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dark_prismarine",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZQQJAG5hbWVfaGFzaK+rhxsgkzplAwoAbmV0d29ya19pZIdA0I0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:slime",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:honey_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:honeycomb_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:hay_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bone_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:nether_brick",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_nether_brick",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_nether_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cracked_nether_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:netherite_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:lodestone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:white_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:gray_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:black_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:orange_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:yellow_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lime_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:green_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_blue_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blue_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:purple_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:magenta_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pink_wool",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:white_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_gray_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gray_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:black_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brown_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:green_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cyan_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blue_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purple_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:white_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_gray_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gray_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:black_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brown_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:green_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cyan_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blue_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purple_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_concrete_powder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:white_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_gray_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gray_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:black_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:brown_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:red_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:orange_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:yellow_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:lime_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:green_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cyan_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:light_blue_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:purple_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:magenta_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pink_concrete",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:hardened_clay",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:white_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:gray_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:black_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:orange_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:yellow_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lime_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:green_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_blue_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blue_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:purple_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:magenta_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pink_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:white_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:silver_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gray_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:black_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:orange_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:yellow_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lime_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:green_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_blue_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blue_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:purple_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:magenta_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pink_glazed_terracotta",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:purpur_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZGCZ+4UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purpur_pillar",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2BAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9waWxsYXIECQBuYW1lX2hhc2iFcSsdykO+jgMKAG5ldHdvcmtfaWQe0+geCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:packed_mud",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mud_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:nether_wart_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_wart_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:shroomlight",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:crimson_nylium",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_nylium",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:netherrack",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:soul_soil",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:grass_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:podzol",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mycelium",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:grass_path",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dirt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWSG706CCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:coarse_dirt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYXJzZV9kaXJ0BAkAbmFtZV9oYXNosd+cah7WSmoDCgBuZXR3b3JrX2lkgS5RcAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dirt_with_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:farmland",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mud",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:clay",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:iron_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gold_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:diamond_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lapis_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:redstone_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:coal_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:copper_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:emerald_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:quartz_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:nether_gold_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:ancient_debris",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_iron_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_gold_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_diamond_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_lapis_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_redstone_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_emerald_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_coal_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_copper_ore",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:granite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:diorite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:andesite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blackstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tuff",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:basalt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_granite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_diorite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_andesite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:polished_tuff",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmYECQBuYW1lX2hhc2hyaLe/KEVZ0gMKAG5ldHdvcmtfaWTcX3NrCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_basalt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_basalt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gravel",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:sand",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWRjeUMICgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sand",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0BAAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF9zYW5kBAkAbmFtZV9oYXNoCiarI69JQCkDCgBuZXR3b3JrX2lkU8UD/AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cactus",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oak_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_oak_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:spruce_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_spruce_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:birch_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stripped_birch_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:jungle_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_jungle_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:acacia_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_acacia_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stripped_dark_oak_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stripped_mangrove_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cherry_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_cherry_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_stem",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stripped_crimson_stem",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_stem",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_warped_stem",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oak_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_oak_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_spruce_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_birch_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jungle_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_jungle_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_acacia_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_dark_oak_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mangrove_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWSkqJ4cCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_mangrove_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cherry_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkLPsAwgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_cherry_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_hyphae",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_crimson_hyphae",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_hyphae",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_warped_hyphae",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bamboo_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stripped_bamboo_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oak_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:spruce_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:birch_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:jungle_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:acacia_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cherry_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:azalea_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:azalea_leaves_flowered",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:oak_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jungle_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mangrove_propagule",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cherry_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bee_nest",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:wheat_seeds"
+        },
+        {
+            "id": "minecraft:pumpkin_seeds"
+        },
+        {
+            "id": "minecraft:melon_seeds"
+        },
+        {
+            "id": "minecraft:beetroot_seeds"
+        },
+        {
+            "id": "minecraft:torchflower_seeds"
+        },
+        {
+            "id": "minecraft:pitcher_pod"
+        },
+        {
+            "id": "minecraft:wheat"
+        },
+        {
+            "id": "minecraft:beetroot"
+        },
+        {
+            "id": "minecraft:potato"
+        },
+        {
+            "id": "minecraft:poisonous_potato"
+        },
+        {
+            "id": "minecraft:carrot"
+        },
+        {
+            "id": "minecraft:golden_carrot"
+        },
+        {
+            "id": "minecraft:apple"
+        },
+        {
+            "id": "minecraft:golden_apple"
+        },
+        {
+            "id": "minecraft:enchanted_golden_apple"
+        },
+        {
+            "id": "minecraft:melon_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:melon_slice"
+        },
+        {
+            "id": "minecraft:glistering_melon_slice"
+        },
+        {
+            "id": "minecraft:sweet_berries"
+        },
+        {
+            "id": "minecraft:glow_berries"
+        },
+        {
+            "id": "minecraft:pumpkin",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:carved_pumpkin",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lit_pumpkin",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:honeycomb"
+        },
+        {
+            "id": "minecraft:fern",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:large_fern",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgBAAACAQAbmFtZRQAbWluZWNyYWZ0OmxhcmdlX2Zlcm4ECQBuYW1lX2hhc2gnE9sd0LzHtQMKAG5ldHdvcmtfaWTS9hG4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:short_grass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNob3J0X2dyYXNzBAkAbmFtZV9oYXNobWQghLH0bLcDCgBuZXR3b3JrX2lkJWOOqAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tall_grass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfBAAACAQAbmFtZRQAbWluZWNyYWZ0OnRhbGxfZ3Jhc3MECQBuYW1lX2hhc2ii5MyZJpv4sgMKAG5ldHdvcmtfaWRRfeH4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:nether_sprouts"
+        },
+        {
+            "id": "minecraft:fire_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brain_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:bubble_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tube_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:horn_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_fire_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dead_brain_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_bubble_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dead_tube_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dead_horn_coral",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:fire_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brain_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:bubble_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tube_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:horn_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_fire_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dead_brain_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_bubble_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dead_tube_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dead_horn_coral_fan",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dandelion",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRhbmRlbGlvbgQJAG5hbWVfaGFzaBJ3bEUi+Nn/AwoAbmV0d29ya19pZBjjC44KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:poppy",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blue_orchid",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:allium",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:azure_bluet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:red_tulip",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:orange_tulip",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:white_tulip",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_tulip",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oxeye_daisy",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cornflower",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lily_of_the_valley",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:sunflower",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRMAbWluZWNyYWZ0OnN1bmZsb3dlcgQJAG5hbWVfaGFzaAMxYQLoqlZ0AwoAbmV0d29ya19pZA10iSoKBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lilac",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReBAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxpbGFjBAkAbmFtZV9oYXNoD3nrQJuo7NkDCgBuZXR3b3JrX2lk5W+uFAoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:rose_bush",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhBAAACAQAbmFtZRMAbWluZWNyYWZ0OnJvc2VfYnVzaAQJAG5hbWVfaGFzaLoiFk8LVpGKAwoAbmV0d29ya19pZMZPv48KBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:peony",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiBAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBlb255BAkAbmFtZV9oYXNoR4dYc4QquPADCgBuZXR3b3JrX2lkrTe7RwoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pitcher_plant",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_petals",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:wither_rose",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:torchflower",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:white_dye"
+        },
+        {
+            "id": "minecraft:light_gray_dye"
+        },
+        {
+            "id": "minecraft:gray_dye"
+        },
+        {
+            "id": "minecraft:black_dye"
+        },
+        {
+            "id": "minecraft:brown_dye"
+        },
+        {
+            "id": "minecraft:red_dye"
+        },
+        {
+            "id": "minecraft:orange_dye"
+        },
+        {
+            "id": "minecraft:yellow_dye"
+        },
+        {
+            "id": "minecraft:lime_dye"
+        },
+        {
+            "id": "minecraft:green_dye"
+        },
+        {
+            "id": "minecraft:cyan_dye"
+        },
+        {
+            "id": "minecraft:light_blue_dye"
+        },
+        {
+            "id": "minecraft:blue_dye"
+        },
+        {
+            "id": "minecraft:purple_dye"
+        },
+        {
+            "id": "minecraft:magenta_dye"
+        },
+        {
+            "id": "minecraft:pink_dye"
+        },
+        {
+            "id": "minecraft:ink_sac"
+        },
+        {
+            "id": "minecraft:glow_ink_sac"
+        },
+        {
+            "id": "minecraft:cocoa_beans"
+        },
+        {
+            "id": "minecraft:lapis_lazuli"
+        },
+        {
+            "id": "minecraft:bone_meal"
+        },
+        {
+            "id": "minecraft:vine",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:weeping_vines",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:twisting_vines",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waterlily",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:seagrass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:kelp"
+        },
+        {
+            "id": "minecraft:deadbush",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:bamboo",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:snow",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:ice",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:packed_ice",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_ice",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:snow_layer",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pointed_dripstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dripstone_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:moss_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:moss_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:hanging_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mangrove_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:muddy_mangrove_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:big_dripleaf",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:small_dripleaf_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spore_blossom",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:azalea",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:flowering_azalea",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:glow_lichen",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkCh8lSAoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHM/AAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:amethyst_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:budding_amethyst",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:amethyst_cluster",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:large_amethyst_bud",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:medium_amethyst_bud",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:small_amethyst_bud",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:calcite",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chicken"
+        },
+        {
+            "id": "minecraft:porkchop"
+        },
+        {
+            "id": "minecraft:beef"
+        },
+        {
+            "id": "minecraft:mutton"
+        },
+        {
+            "id": "minecraft:rabbit"
+        },
+        {
+            "id": "minecraft:cod"
+        },
+        {
+            "id": "minecraft:salmon"
+        },
+        {
+            "id": "minecraft:tropical_fish"
+        },
+        {
+            "id": "minecraft:pufferfish"
+        },
+        {
+            "id": "minecraft:brown_mushroom",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:red_mushroom",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_fungus",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_fungus",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_mushroom_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_mushroom_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mushroom_stem",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvBAAACAQAbmFtZRcAbWluZWNyYWZ0Om11c2hyb29tX3N0ZW0ECQBuYW1lX2hhc2i2SozhK9NLpgMKAG5ldHdvcmtfaWTTVND+CgYAc3RhdGVzAxIAaHVnZV9tdXNocm9vbV9iaXRzDwAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:egg"
+        },
+        {
+            "id": "minecraft:sugar_cane"
+        },
+        {
+            "id": "minecraft:sugar"
+        },
+        {
+            "id": "minecraft:rotten_flesh"
+        },
+        {
+            "id": "minecraft:bone"
+        },
+        {
+            "id": "minecraft:web",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:spider_eye"
+        },
+        {
+            "id": "minecraft:mob_spawner",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:trial_spawner",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AgAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaWFsX3NwYXduZXIECQBuYW1lX2hhc2iNLRPB4ACz+QMKAG5ldHdvcmtfaWTWFYHGCgYAc3RhdGVzAQcAb21pbm91cwADEwB0cmlhbF9zcGF3bmVyX3N0YXRlAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:vault",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AgAACAQAbmFtZQ8AbWluZWNyYWZ0OnZhdWx0BAkAbmFtZV9oYXNoCAp9n3IAyqcDCgBuZXR3b3JrX2lk6/P+vwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQcAb21pbm91cwAICwB2YXVsdF9zdGF0ZQgAaW5hY3RpdmUAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:end_portal_frame",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:infested_stone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRgAbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lBAkAbmFtZV9oYXNoxnRcHDu4zqQDCgBuZXR3b3JrX2lkpfcnsgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:infested_cobblestone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZBAAACAQAbmFtZR4AbWluZWNyYWZ0OmluZmVzdGVkX2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoy+LVCKG2kVMDCgBuZXR3b3JrX2lkpn+icAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:infested_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaBAAACAQAbmFtZR8AbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaBMnals7a32CAwoAbmV0d29ya19pZNHi2UYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:infested_mossy_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbBAAACAQAbmFtZSUAbWluZWNyYWZ0OmluZmVzdGVkX21vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaAmJk+HmVq0rAwoAbmV0d29ya19pZAVH8/sKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:infested_cracked_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcBAAACAQAbmFtZScAbWluZWNyYWZ0OmluZmVzdGVkX2NyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoMyc60XcfcyoDCgBuZXR3b3JrX2lkaW+kbQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:infested_chiseled_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdBAAACAQAbmFtZSgAbWluZWNyYWZ0OmluZmVzdGVkX2NoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaNUvNIIg9dZbAwoAbmV0d29ya19pZCajGicKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:infested_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dragon_egg",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:turtle_egg",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sniffer_egg",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:frog_spawn",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pearlescent_froglight",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:verdant_froglight",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:ochre_froglight",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:chicken_spawn_egg"
+        },
+        {
+            "id": "minecraft:bee_spawn_egg"
+        },
+        {
+            "id": "minecraft:cow_spawn_egg"
+        },
+        {
+            "id": "minecraft:pig_spawn_egg"
+        },
+        {
+            "id": "minecraft:sheep_spawn_egg"
+        },
+        {
+            "id": "minecraft:wolf_spawn_egg"
+        },
+        {
+            "id": "minecraft:polar_bear_spawn_egg"
+        },
+        {
+            "id": "minecraft:ocelot_spawn_egg"
+        },
+        {
+            "id": "minecraft:cat_spawn_egg"
+        },
+        {
+            "id": "minecraft:mooshroom_spawn_egg"
+        },
+        {
+            "id": "minecraft:bat_spawn_egg"
+        },
+        {
+            "id": "minecraft:parrot_spawn_egg"
+        },
+        {
+            "id": "minecraft:rabbit_spawn_egg"
+        },
+        {
+            "id": "minecraft:llama_spawn_egg"
+        },
+        {
+            "id": "minecraft:horse_spawn_egg"
+        },
+        {
+            "id": "minecraft:donkey_spawn_egg"
+        },
+        {
+            "id": "minecraft:mule_spawn_egg"
+        },
+        {
+            "id": "minecraft:skeleton_horse_spawn_egg"
+        },
+        {
+            "id": "minecraft:zombie_horse_spawn_egg"
+        },
+        {
+            "id": "minecraft:tropical_fish_spawn_egg"
+        },
+        {
+            "id": "minecraft:cod_spawn_egg"
+        },
+        {
+            "id": "minecraft:pufferfish_spawn_egg"
+        },
+        {
+            "id": "minecraft:salmon_spawn_egg"
+        },
+        {
+            "id": "minecraft:dolphin_spawn_egg"
+        },
+        {
+            "id": "minecraft:turtle_spawn_egg"
+        },
+        {
+            "id": "minecraft:panda_spawn_egg"
+        },
+        {
+            "id": "minecraft:fox_spawn_egg"
+        },
+        {
+            "id": "minecraft:creeper_spawn_egg"
+        },
+        {
+            "id": "minecraft:enderman_spawn_egg"
+        },
+        {
+            "id": "minecraft:silverfish_spawn_egg"
+        },
+        {
+            "id": "minecraft:skeleton_spawn_egg"
+        },
+        {
+            "id": "minecraft:wither_skeleton_spawn_egg"
+        },
+        {
+            "id": "minecraft:stray_spawn_egg"
+        },
+        {
+            "id": "minecraft:slime_spawn_egg"
+        },
+        {
+            "id": "minecraft:spider_spawn_egg"
+        },
+        {
+            "id": "minecraft:zombie_spawn_egg"
+        },
+        {
+            "id": "minecraft:zombie_pigman_spawn_egg"
+        },
+        {
+            "id": "minecraft:husk_spawn_egg"
+        },
+        {
+            "id": "minecraft:drowned_spawn_egg"
+        },
+        {
+            "id": "minecraft:squid_spawn_egg"
+        },
+        {
+            "id": "minecraft:glow_squid_spawn_egg"
+        },
+        {
+            "id": "minecraft:cave_spider_spawn_egg"
+        },
+        {
+            "id": "minecraft:witch_spawn_egg"
+        },
+        {
+            "id": "minecraft:guardian_spawn_egg"
+        },
+        {
+            "id": "minecraft:elder_guardian_spawn_egg"
+        },
+        {
+            "id": "minecraft:endermite_spawn_egg"
+        },
+        {
+            "id": "minecraft:magma_cube_spawn_egg"
+        },
+        {
+            "id": "minecraft:strider_spawn_egg"
+        },
+        {
+            "id": "minecraft:hoglin_spawn_egg"
+        },
+        {
+            "id": "minecraft:piglin_spawn_egg"
+        },
+        {
+            "id": "minecraft:zoglin_spawn_egg"
+        },
+        {
+            "id": "minecraft:piglin_brute_spawn_egg"
+        },
+        {
+            "id": "minecraft:goat_spawn_egg"
+        },
+        {
+            "id": "minecraft:axolotl_spawn_egg"
+        },
+        {
+            "id": "minecraft:warden_spawn_egg"
+        },
+        {
+            "id": "minecraft:allay_spawn_egg"
+        },
+        {
+            "id": "minecraft:frog_spawn_egg"
+        },
+        {
+            "id": "minecraft:tadpole_spawn_egg"
+        },
+        {
+            "id": "minecraft:trader_llama_spawn_egg"
+        },
+        {
+            "id": "minecraft:camel_spawn_egg"
+        },
+        {
+            "id": "minecraft:ghast_spawn_egg"
+        },
+        {
+            "id": "minecraft:blaze_spawn_egg"
+        },
+        {
+            "id": "minecraft:shulker_spawn_egg"
+        },
+        {
+            "id": "minecraft:vindicator_spawn_egg"
+        },
+        {
+            "id": "minecraft:evoker_spawn_egg"
+        },
+        {
+            "id": "minecraft:vex_spawn_egg"
+        },
+        {
+            "id": "minecraft:villager_spawn_egg"
+        },
+        {
+            "id": "minecraft:wandering_trader_spawn_egg"
+        },
+        {
+            "id": "minecraft:zombie_villager_spawn_egg"
+        },
+        {
+            "id": "minecraft:phantom_spawn_egg"
+        },
+        {
+            "id": "minecraft:pillager_spawn_egg"
+        },
+        {
+            "id": "minecraft:ravager_spawn_egg"
+        },
+        {
+            "id": "minecraft:iron_golem_spawn_egg"
+        },
+        {
+            "id": "minecraft:snow_golem_spawn_egg"
+        },
+        {
+            "id": "minecraft:sniffer_spawn_egg"
+        },
+        {
+            "id": "minecraft:breeze_spawn_egg"
+        },
+        {
+            "id": "minecraft:armadillo_spawn_egg"
+        },
+        {
+            "id": "minecraft:bogged_spawn_egg"
+        },
+        {
+            "id": "minecraft:obsidian",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:crying_obsidian",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bedrock",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:soul_sand",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:magma",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:nether_wart"
+        },
+        {
+            "id": "minecraft:end_stone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chorus_flower",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:chorus_plant",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chorus_fruit"
+        },
+        {
+            "id": "minecraft:popped_chorus_fruit"
+        },
+        {
+            "id": "minecraft:sponge",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZNmQW/oKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:wet_sponge",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXBAAACAQAbmFtZRQAbWluZWNyYWZ0OndldF9zcG9uZ2UECQBuYW1lX2hhc2htp6nKpSHcAgMKAG5ldHdvcmtfaWQaW+fCCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tube_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brain_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQBAAACAQAbmFtZRsAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoeDNAK18yUo4DCgBuZXR3b3JrX2lkloN1vgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:bubble_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRBAAACAQAbmFtZRwAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaAI2mwMlvcNbAwoAbmV0d29ya19pZBlkxKIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:fire_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSBAAACAQAbmFtZRoAbWluZWNyYWZ0OmZpcmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2gg1gLeXLmKaAMKAG5ldHdvcmtfaWSp3W57CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:horn_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTBAAACAQAbmFtZRoAbWluZWNyYWZ0Omhvcm5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2hnZSLRWUwGhAMKAG5ldHdvcmtfaWRSK6ccCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_tube_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaB9+lY3hAkNNAwoAbmV0d29ya19pZF0hKKYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dead_brain_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVBAAACAQAbmFtZSAAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2iHyDn52AO8uwMKAG5ldHdvcmtfaWQw7yCaCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_bubble_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWBAAACAQAbmFtZSEAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNotwkk/ITrsjADCgBuZXR3b3JrX2lk56mXUgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dead_fire_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaG0qHxbIrBEyAwoAbmV0d29ya19pZFvnH88KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dead_horn_coral_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaL7D8bu4Fm+0AwoAbmV0d29ya19pZEALRLoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:sculk",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sculk_vein",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:sculk_catalyst",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sculk_shrieker",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sculk_sensor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:calibrated_sculk_sensor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:reinforced_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:leather_helmet"
+        },
+        {
+            "id": "minecraft:chainmail_helmet"
+        },
+        {
+            "id": "minecraft:iron_helmet"
+        },
+        {
+            "id": "minecraft:golden_helmet"
+        },
+        {
+            "id": "minecraft:diamond_helmet"
+        },
+        {
+            "id": "minecraft:netherite_helmet"
+        },
+        {
+            "id": "minecraft:leather_chestplate"
+        },
+        {
+            "id": "minecraft:chainmail_chestplate"
+        },
+        {
+            "id": "minecraft:iron_chestplate"
+        },
+        {
+            "id": "minecraft:golden_chestplate"
+        },
+        {
+            "id": "minecraft:diamond_chestplate"
+        },
+        {
+            "id": "minecraft:netherite_chestplate"
+        },
+        {
+            "id": "minecraft:leather_leggings"
+        },
+        {
+            "id": "minecraft:chainmail_leggings"
+        },
+        {
+            "id": "minecraft:iron_leggings"
+        },
+        {
+            "id": "minecraft:golden_leggings"
+        },
+        {
+            "id": "minecraft:diamond_leggings"
+        },
+        {
+            "id": "minecraft:netherite_leggings"
+        },
+        {
+            "id": "minecraft:leather_boots"
+        },
+        {
+            "id": "minecraft:chainmail_boots"
+        },
+        {
+            "id": "minecraft:iron_boots"
+        },
+        {
+            "id": "minecraft:golden_boots"
+        },
+        {
+            "id": "minecraft:diamond_boots"
+        },
+        {
+            "id": "minecraft:netherite_boots"
+        },
+        {
+            "id": "minecraft:wooden_sword"
+        },
+        {
+            "id": "minecraft:stone_sword"
+        },
+        {
+            "id": "minecraft:iron_sword"
+        },
+        {
+            "id": "minecraft:golden_sword"
+        },
+        {
+            "id": "minecraft:diamond_sword"
+        },
+        {
+            "id": "minecraft:netherite_sword"
+        },
+        {
+            "id": "minecraft:wooden_axe"
+        },
+        {
+            "id": "minecraft:stone_axe"
+        },
+        {
+            "id": "minecraft:iron_axe"
+        },
+        {
+            "id": "minecraft:golden_axe"
+        },
+        {
+            "id": "minecraft:diamond_axe"
+        },
+        {
+            "id": "minecraft:netherite_axe"
+        },
+        {
+            "id": "minecraft:wooden_pickaxe"
+        },
+        {
+            "id": "minecraft:stone_pickaxe"
+        },
+        {
+            "id": "minecraft:iron_pickaxe"
+        },
+        {
+            "id": "minecraft:golden_pickaxe"
+        },
+        {
+            "id": "minecraft:diamond_pickaxe"
+        },
+        {
+            "id": "minecraft:netherite_pickaxe"
+        },
+        {
+            "id": "minecraft:wooden_shovel"
+        },
+        {
+            "id": "minecraft:stone_shovel"
+        },
+        {
+            "id": "minecraft:iron_shovel"
+        },
+        {
+            "id": "minecraft:golden_shovel"
+        },
+        {
+            "id": "minecraft:diamond_shovel"
+        },
+        {
+            "id": "minecraft:netherite_shovel"
+        },
+        {
+            "id": "minecraft:wooden_hoe"
+        },
+        {
+            "id": "minecraft:stone_hoe"
+        },
+        {
+            "id": "minecraft:iron_hoe"
+        },
+        {
+            "id": "minecraft:golden_hoe"
+        },
+        {
+            "id": "minecraft:diamond_hoe"
+        },
+        {
+            "id": "minecraft:netherite_hoe"
+        },
+        {
+            "id": "minecraft:bow"
+        },
+        {
+            "id": "minecraft:crossbow"
+        },
+        {
+            "id": "minecraft:mace"
+        },
+        {
+            "id": "minecraft:arrow"
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 6
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 7
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 8
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 9
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 10
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 11
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 12
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 13
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 14
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 15
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 16
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 17
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 18
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 19
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 20
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 21
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 22
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 23
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 24
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 25
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 26
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 27
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 28
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 29
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 30
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 31
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 32
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 33
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 34
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 35
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 36
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 37
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 38
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 39
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 40
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 41
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 42
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 43
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 44
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 45
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 46
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 47
+        },
+        {
+            "id": "minecraft:shield"
+        },
+        {
+            "id": "minecraft:cooked_chicken"
+        },
+        {
+            "id": "minecraft:cooked_porkchop"
+        },
+        {
+            "id": "minecraft:cooked_beef"
+        },
+        {
+            "id": "minecraft:cooked_mutton"
+        },
+        {
+            "id": "minecraft:cooked_rabbit"
+        },
+        {
+            "id": "minecraft:cooked_cod"
+        },
+        {
+            "id": "minecraft:cooked_salmon"
+        },
+        {
+            "id": "minecraft:bread"
+        },
+        {
+            "id": "minecraft:mushroom_stew"
+        },
+        {
+            "id": "minecraft:beetroot_soup"
+        },
+        {
+            "id": "minecraft:rabbit_stew"
+        },
+        {
+            "id": "minecraft:baked_potato"
+        },
+        {
+            "id": "minecraft:cookie"
+        },
+        {
+            "id": "minecraft:pumpkin_pie"
+        },
+        {
+            "id": "minecraft:cake"
+        },
+        {
+            "id": "minecraft:dried_kelp"
+        },
+        {
+            "id": "minecraft:fishing_rod"
+        },
+        {
+            "id": "minecraft:carrot_on_a_stick"
+        },
+        {
+            "id": "minecraft:warped_fungus_on_a_stick"
+        },
+        {
+            "id": "minecraft:snowball"
+        },
+        {
+            "id": "minecraft:wind_charge"
+        },
+        {
+            "id": "minecraft:shears"
+        },
+        {
+            "id": "minecraft:flint_and_steel"
+        },
+        {
+            "id": "minecraft:lead"
+        },
+        {
+            "id": "minecraft:clock"
+        },
+        {
+            "id": "minecraft:compass"
+        },
+        {
+            "id": "minecraft:recovery_compass"
+        },
+        {
+            "id": "minecraft:goat_horn"
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 4
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 5
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 6
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 7
+        },
+        {
+            "id": "minecraft:empty_map"
+        },
+        {
+            "id": "minecraft:empty_map",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:saddle"
+        },
+        {
+            "id": "minecraft:bundle"
+        },
+        {
+            "id": "minecraft:white_bundle"
+        },
+        {
+            "id": "minecraft:light_gray_bundle"
+        },
+        {
+            "id": "minecraft:gray_bundle"
+        },
+        {
+            "id": "minecraft:black_bundle"
+        },
+        {
+            "id": "minecraft:brown_bundle"
+        },
+        {
+            "id": "minecraft:red_bundle"
+        },
+        {
+            "id": "minecraft:orange_bundle"
+        },
+        {
+            "id": "minecraft:yellow_bundle"
+        },
+        {
+            "id": "minecraft:lime_bundle"
+        },
+        {
+            "id": "minecraft:green_bundle"
+        },
+        {
+            "id": "minecraft:cyan_bundle"
+        },
+        {
+            "id": "minecraft:light_blue_bundle"
+        },
+        {
+            "id": "minecraft:blue_bundle"
+        },
+        {
+            "id": "minecraft:purple_bundle"
+        },
+        {
+            "id": "minecraft:magenta_bundle"
+        },
+        {
+            "id": "minecraft:pink_bundle"
+        },
+        {
+            "id": "minecraft:leather_horse_armor"
+        },
+        {
+            "id": "minecraft:iron_horse_armor"
+        },
+        {
+            "id": "minecraft:golden_horse_armor"
+        },
+        {
+            "id": "minecraft:diamond_horse_armor"
+        },
+        {
+            "id": "minecraft:wolf_armor"
+        },
+        {
+            "id": "minecraft:trident"
+        },
+        {
+            "id": "minecraft:turtle_helmet"
+        },
+        {
+            "id": "minecraft:elytra"
+        },
+        {
+            "id": "minecraft:totem_of_undying"
+        },
+        {
+            "id": "minecraft:glass_bottle"
+        },
+        {
+            "id": "minecraft:experience_bottle"
+        },
+        {
+            "id": "minecraft:potion"
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 4
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 5
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 6
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 7
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 8
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 9
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 10
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 11
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 12
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 13
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 14
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 15
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 16
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 17
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 18
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 19
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 20
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 21
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 22
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 23
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 24
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 25
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 26
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 27
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 28
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 29
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 30
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 31
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 32
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 33
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 34
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 35
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 36
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 37
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 38
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 39
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 40
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 41
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 42
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 43
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 44
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 45
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 46
+        },
+        {
+            "id": "minecraft:splash_potion"
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 4
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 5
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 6
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 7
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 8
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 9
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 10
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 11
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 12
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 13
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 14
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 15
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 16
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 17
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 18
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 19
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 20
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 21
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 22
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 23
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 24
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 25
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 26
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 27
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 28
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 29
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 30
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 31
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 32
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 33
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 34
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 35
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 36
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 37
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 38
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 39
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 40
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 41
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 42
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 43
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 44
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 45
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 46
+        },
+        {
+            "id": "minecraft:lingering_potion"
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 4
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 5
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 6
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 7
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 8
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 9
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 10
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 11
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 12
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 13
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 14
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 15
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 16
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 17
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 18
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 19
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 20
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 21
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 22
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 23
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 24
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 25
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 26
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 27
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 28
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 29
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 30
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 31
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 32
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 33
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 34
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 35
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 36
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 37
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 38
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 39
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 40
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 41
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 42
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 43
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 44
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 45
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 46
+        },
+        {
+            "id": "minecraft:ominous_bottle"
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 4
+        },
+        {
+            "id": "minecraft:spyglass"
+        },
+        {
+            "id": "minecraft:brush"
+        },
+        {
+            "id": "minecraft:stick"
+        },
+        {
+            "id": "minecraft:bed"
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 8
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 7
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 15
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 12
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 14
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 4
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 5
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 13
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 9
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 11
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 10
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 6
+        },
+        {
+            "id": "minecraft:torch",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:soul_torch",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sea_pickle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:lantern",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:soul_lantern",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:white_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:orange_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:yellow_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gray_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_gray_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cyan_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purple_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:brown_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:green_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:black_candle",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crafting_table",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cartography_table",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:fletching_table",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:smithing_table",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:beehive",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:suspicious_sand",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:suspicious_gravel",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:campfire"
+        },
+        {
+            "id": "minecraft:soul_campfire"
+        },
+        {
+            "id": "minecraft:furnace",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blast_furnace",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:smoker",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:respawn_anchor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brewing_stand"
+        },
+        {
+            "id": "minecraft:anvil",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkqXzNjwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chipped_anvil",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+BAAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXBwZWRfYW52aWwECQBuYW1lX2hhc2ge+QY3vlS/eQMKAG5ldHdvcmtfaWRJ15iUCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:damaged_anvil",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/BAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhbWFnZWRfYW52aWwECQBuYW1lX2hhc2imJ12Be2V8+AMKAG5ldHdvcmtfaWRh5SHkCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:grindstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:enchanting_table",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bookshelf",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_bookshelf",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lectern",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cauldron"
+        },
+        {
+            "id": "minecraft:composter",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chest",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:trapped_chest",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:ender_chest",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:barrel",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:undyed_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:white_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_gray_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gray_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:black_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:brown_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:red_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:orange_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:yellow_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:lime_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:green_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cyan_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:light_blue_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:purple_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:magenta_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pink_shulker_box",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:armor_stand"
+        },
+        {
+            "id": "minecraft:noteblock",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jukebox",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:music_disc_13"
+        },
+        {
+            "id": "minecraft:music_disc_cat"
+        },
+        {
+            "id": "minecraft:music_disc_blocks"
+        },
+        {
+            "id": "minecraft:music_disc_chirp"
+        },
+        {
+            "id": "minecraft:music_disc_far"
+        },
+        {
+            "id": "minecraft:music_disc_mall"
+        },
+        {
+            "id": "minecraft:music_disc_mellohi"
+        },
+        {
+            "id": "minecraft:music_disc_stal"
+        },
+        {
+            "id": "minecraft:music_disc_strad"
+        },
+        {
+            "id": "minecraft:music_disc_ward"
+        },
+        {
+            "id": "minecraft:music_disc_11"
+        },
+        {
+            "id": "minecraft:music_disc_wait"
+        },
+        {
+            "id": "minecraft:music_disc_otherside"
+        },
+        {
+            "id": "minecraft:music_disc_5"
+        },
+        {
+            "id": "minecraft:music_disc_pigstep"
+        },
+        {
+            "id": "minecraft:music_disc_relic"
+        },
+        {
+            "id": "minecraft:music_disc_creator"
+        },
+        {
+            "id": "minecraft:music_disc_creator_music_box"
+        },
+        {
+            "id": "minecraft:music_disc_precipice"
+        },
+        {
+            "id": "minecraft:disc_fragment_5"
+        },
+        {
+            "id": "minecraft:glowstone_dust"
+        },
+        {
+            "id": "minecraft:glowstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:redstone_lamp",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:sea_lantern",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oak_sign"
+        },
+        {
+            "id": "minecraft:spruce_sign"
+        },
+        {
+            "id": "minecraft:birch_sign"
+        },
+        {
+            "id": "minecraft:jungle_sign"
+        },
+        {
+            "id": "minecraft:acacia_sign"
+        },
+        {
+            "id": "minecraft:dark_oak_sign"
+        },
+        {
+            "id": "minecraft:mangrove_sign"
+        },
+        {
+            "id": "minecraft:cherry_sign"
+        },
+        {
+            "id": "minecraft:bamboo_sign"
+        },
+        {
+            "id": "minecraft:crimson_sign"
+        },
+        {
+            "id": "minecraft:warped_sign"
+        },
+        {
+            "id": "minecraft:oak_hanging_sign"
+        },
+        {
+            "id": "minecraft:spruce_hanging_sign"
+        },
+        {
+            "id": "minecraft:birch_hanging_sign"
+        },
+        {
+            "id": "minecraft:jungle_hanging_sign"
+        },
+        {
+            "id": "minecraft:acacia_hanging_sign"
+        },
+        {
+            "id": "minecraft:dark_oak_hanging_sign"
+        },
+        {
+            "id": "minecraft:mangrove_hanging_sign"
+        },
+        {
+            "id": "minecraft:cherry_hanging_sign"
+        },
+        {
+            "id": "minecraft:bamboo_hanging_sign"
+        },
+        {
+            "id": "minecraft:crimson_hanging_sign"
+        },
+        {
+            "id": "minecraft:warped_hanging_sign"
+        },
+        {
+            "id": "minecraft:painting"
+        },
+        {
+            "id": "minecraft:frame"
+        },
+        {
+            "id": "minecraft:glow_frame"
+        },
+        {
+            "id": "minecraft:honey_bottle"
+        },
+        {
+            "id": "minecraft:flower_pot"
+        },
+        {
+            "id": "minecraft:bowl"
+        },
+        {
+            "id": "minecraft:bucket"
+        },
+        {
+            "id": "minecraft:milk_bucket"
+        },
+        {
+            "id": "minecraft:water_bucket"
+        },
+        {
+            "id": "minecraft:lava_bucket"
+        },
+        {
+            "id": "minecraft:cod_bucket"
+        },
+        {
+            "id": "minecraft:salmon_bucket"
+        },
+        {
+            "id": "minecraft:tropical_fish_bucket"
+        },
+        {
+            "id": "minecraft:pufferfish_bucket"
+        },
+        {
+            "id": "minecraft:powder_snow_bucket"
+        },
+        {
+            "id": "minecraft:axolotl_bucket"
+        },
+        {
+            "id": "minecraft:tadpole_bucket"
+        },
+        {
+            "id": "minecraft:player_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGBAAACAQAbmFtZRUAbWluZWNyYWZ0OnBsYXllcl9oZWFkBAkAbmFtZV9oYXNonFwZb7CL8EYDCgBuZXR3b3JrX2lkZeAXqAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:zombie_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFBAAACAQAbmFtZRUAbWluZWNyYWZ0OnpvbWJpZV9oZWFkBAkAbmFtZV9oYXNoixuENYuaGgEDCgBuZXR3b3JrX2lk0NsHDgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:creeper_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHBAAACAQAbmFtZRYAbWluZWNyYWZ0OmNyZWVwZXJfaGVhZAQJAG5hbWVfaGFzaCvAGFMS/RqVAwoAbmV0d29ya19pZEfskXYKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dragon_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIBAAACAQAbmFtZRUAbWluZWNyYWZ0OmRyYWdvbl9oZWFkBAkAbmFtZV9oYXNozjh6bGRaa5UDCgBuZXR3b3JrX2lk/zjetgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:skeleton_skull",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAAAACAQAbmFtZRgAbWluZWNyYWZ0OnNrZWxldG9uX3NrdWxsBAkAbmFtZV9oYXNo3+kbzeMgg4kDCgBuZXR3b3JrX2lk/RqWbwoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:wither_skeleton_skull",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEBAAACAQAbmFtZR8AbWluZWNyYWZ0OndpdGhlcl9za2VsZXRvbl9za3VsbAQJAG5hbWVfaGFzaEcZrUyy9cfRAwoAbmV0d29ya19pZJZ2G/oKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:piglin_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJBAAACAQAbmFtZRUAbWluZWNyYWZ0OnBpZ2xpbl9oZWFkBAkAbmFtZV9oYXNo+jUCKgb5DskDCgBuZXR3b3JrX2lkQ1ETVwoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:beacon",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bell",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:conduit",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stonecutter_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:coal"
+        },
+        {
+            "id": "minecraft:charcoal"
+        },
+        {
+            "id": "minecraft:diamond"
+        },
+        {
+            "id": "minecraft:iron_nugget"
+        },
+        {
+            "id": "minecraft:raw_iron"
+        },
+        {
+            "id": "minecraft:raw_gold"
+        },
+        {
+            "id": "minecraft:raw_copper"
+        },
+        {
+            "id": "minecraft:copper_ingot"
+        },
+        {
+            "id": "minecraft:iron_ingot"
+        },
+        {
+            "id": "minecraft:netherite_scrap"
+        },
+        {
+            "id": "minecraft:netherite_ingot"
+        },
+        {
+            "id": "minecraft:gold_nugget"
+        },
+        {
+            "id": "minecraft:gold_ingot"
+        },
+        {
+            "id": "minecraft:emerald"
+        },
+        {
+            "id": "minecraft:quartz"
+        },
+        {
+            "id": "minecraft:clay_ball"
+        },
+        {
+            "id": "minecraft:brick"
+        },
+        {
+            "id": "minecraft:netherbrick"
+        },
+        {
+            "id": "minecraft:prismarine_shard"
+        },
+        {
+            "id": "minecraft:amethyst_shard"
+        },
+        {
+            "id": "minecraft:prismarine_crystals"
+        },
+        {
+            "id": "minecraft:nautilus_shell"
+        },
+        {
+            "id": "minecraft:heart_of_the_sea"
+        },
+        {
+            "id": "minecraft:turtle_scute"
+        },
+        {
+            "id": "minecraft:armadillo_scute"
+        },
+        {
+            "id": "minecraft:phantom_membrane"
+        },
+        {
+            "id": "minecraft:string"
+        },
+        {
+            "id": "minecraft:feather"
+        },
+        {
+            "id": "minecraft:flint"
+        },
+        {
+            "id": "minecraft:gunpowder"
+        },
+        {
+            "id": "minecraft:leather"
+        },
+        {
+            "id": "minecraft:rabbit_hide"
+        },
+        {
+            "id": "minecraft:rabbit_foot"
+        },
+        {
+            "id": "minecraft:fire_charge"
+        },
+        {
+            "id": "minecraft:blaze_rod"
+        },
+        {
+            "id": "minecraft:breeze_rod"
+        },
+        {
+            "id": "minecraft:heavy_core",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AgAACAQAbmFtZRQAbWluZWNyYWZ0OmhlYXZ5X2NvcmUECQBuYW1lX2hhc2hhz/uNCtrC2QMKAG5ldHdvcmtfaWRaFu+8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:blaze_powder"
+        },
+        {
+            "id": "minecraft:magma_cream"
+        },
+        {
+            "id": "minecraft:fermented_spider_eye"
+        },
+        {
+            "id": "minecraft:echo_shard"
+        },
+        {
+            "id": "minecraft:dragon_breath"
+        },
+        {
+            "id": "minecraft:shulker_shell"
+        },
+        {
+            "id": "minecraft:ghast_tear"
+        },
+        {
+            "id": "minecraft:slime_ball"
+        },
+        {
+            "id": "minecraft:ender_pearl"
+        },
+        {
+            "id": "minecraft:ender_eye"
+        },
+        {
+            "id": "minecraft:nether_star"
+        },
+        {
+            "id": "minecraft:end_rod",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:lightning_rod",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:end_crystal"
+        },
+        {
+            "id": "minecraft:paper"
+        },
+        {
+            "id": "minecraft:book"
+        },
+        {
+            "id": "minecraft:writable_book"
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQIAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQQAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQVAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQWAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQaAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQbAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQcAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQgAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQhAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:oak_boat"
+        },
+        {
+            "id": "minecraft:spruce_boat"
+        },
+        {
+            "id": "minecraft:birch_boat"
+        },
+        {
+            "id": "minecraft:jungle_boat"
+        },
+        {
+            "id": "minecraft:acacia_boat"
+        },
+        {
+            "id": "minecraft:dark_oak_boat"
+        },
+        {
+            "id": "minecraft:mangrove_boat"
+        },
+        {
+            "id": "minecraft:cherry_boat"
+        },
+        {
+            "id": "minecraft:bamboo_raft"
+        },
+        {
+            "id": "minecraft:oak_chest_boat"
+        },
+        {
+            "id": "minecraft:spruce_chest_boat"
+        },
+        {
+            "id": "minecraft:birch_chest_boat"
+        },
+        {
+            "id": "minecraft:jungle_chest_boat"
+        },
+        {
+            "id": "minecraft:acacia_chest_boat"
+        },
+        {
+            "id": "minecraft:dark_oak_chest_boat"
+        },
+        {
+            "id": "minecraft:mangrove_chest_boat"
+        },
+        {
+            "id": "minecraft:cherry_chest_boat"
+        },
+        {
+            "id": "minecraft:bamboo_chest_raft"
+        },
+        {
+            "id": "minecraft:rail",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:golden_rail",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:detector_rail",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:activator_rail",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:minecart"
+        },
+        {
+            "id": "minecraft:chest_minecart"
+        },
+        {
+            "id": "minecraft:hopper_minecart"
+        },
+        {
+            "id": "minecraft:tnt_minecart"
+        },
+        {
+            "id": "minecraft:redstone"
+        },
+        {
+            "id": "minecraft:redstone_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:redstone_torch",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:lever",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:wooden_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jungle_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mangrove_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cherry_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tripwire_hook",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:wooden_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:jungle_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mangrove_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cherry_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:warped_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_weighted_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:heavy_weighted_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:polished_blackstone_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:observer",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:daylight_detector",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:repeater"
+        },
+        {
+            "id": "minecraft:comparator"
+        },
+        {
+            "id": "minecraft:hopper"
+        },
+        {
+            "id": "minecraft:dropper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dispenser",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:crafter",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AgAACAQAbmFtZREAbWluZWNyYWZ0OmNyYWZ0ZXIECQBuYW1lX2hhc2iLCT/rJmRN8QMKAG5ldHdvcmtfaWTPTbvrCgYAc3RhdGVzAQgAY3JhZnRpbmcACAsAb3JpZW50YXRpb24JAGRvd25fZWFzdAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:piston",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sticky_piston",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tnt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZAXzHyUKBgBzdGF0ZXMBCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:name_tag"
+        },
+        {
+            "id": "minecraft:loom",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:banner",
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 8,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 7,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 15,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 12,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 14,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 1,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 4,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 5,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 13,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 9,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 3,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 11,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 10,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 2,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 6,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 15,
+            "nbt_b64": "CgAAAwQAVHlwZQEAAAAA"
+        },
+        {
+            "id": "minecraft:creeper_banner_pattern"
+        },
+        {
+            "id": "minecraft:skull_banner_pattern"
+        },
+        {
+            "id": "minecraft:flower_banner_pattern"
+        },
+        {
+            "id": "minecraft:mojang_banner_pattern"
+        },
+        {
+            "id": "minecraft:field_masoned_banner_pattern"
+        },
+        {
+            "id": "minecraft:bordure_indented_banner_pattern"
+        },
+        {
+            "id": "minecraft:piglin_banner_pattern"
+        },
+        {
+            "id": "minecraft:globe_banner_pattern"
+        },
+        {
+            "id": "minecraft:flow_banner_pattern"
+        },
+        {
+            "id": "minecraft:guster_banner_pattern"
+        },
+        {
+            "id": "minecraft:angler_pottery_sherd"
+        },
+        {
+            "id": "minecraft:archer_pottery_sherd"
+        },
+        {
+            "id": "minecraft:arms_up_pottery_sherd"
+        },
+        {
+            "id": "minecraft:blade_pottery_sherd"
+        },
+        {
+            "id": "minecraft:brewer_pottery_sherd"
+        },
+        {
+            "id": "minecraft:burn_pottery_sherd"
+        },
+        {
+            "id": "minecraft:danger_pottery_sherd"
+        },
+        {
+            "id": "minecraft:explorer_pottery_sherd"
+        },
+        {
+            "id": "minecraft:flow_pottery_sherd"
+        },
+        {
+            "id": "minecraft:friend_pottery_sherd"
+        },
+        {
+            "id": "minecraft:guster_pottery_sherd"
+        },
+        {
+            "id": "minecraft:heart_pottery_sherd"
+        },
+        {
+            "id": "minecraft:heartbreak_pottery_sherd"
+        },
+        {
+            "id": "minecraft:howl_pottery_sherd"
+        },
+        {
+            "id": "minecraft:miner_pottery_sherd"
+        },
+        {
+            "id": "minecraft:mourner_pottery_sherd"
+        },
+        {
+            "id": "minecraft:plenty_pottery_sherd"
+        },
+        {
+            "id": "minecraft:prize_pottery_sherd"
+        },
+        {
+            "id": "minecraft:scrape_pottery_sherd"
+        },
+        {
+            "id": "minecraft:sheaf_pottery_sherd"
+        },
+        {
+            "id": "minecraft:shelter_pottery_sherd"
+        },
+        {
+            "id": "minecraft:skull_pottery_sherd"
+        },
+        {
+            "id": "minecraft:snort_pottery_sherd"
+        },
+        {
+            "id": "minecraft:netherite_upgrade_smithing_template"
+        },
+        {
+            "id": "minecraft:sentry_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:vex_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:wild_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:coast_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:dune_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:wayfinder_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:shaper_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:raiser_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:host_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:ward_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:silence_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:tide_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:snout_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:rib_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:eye_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:spire_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:flow_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:bolt_armor_trim_smithing_template"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwAAAAAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAABwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAIBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAHBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAPBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAMBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAOBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAABBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAEBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAFBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAANBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAJBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAADBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAALBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAKBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAACBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAGBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_star",
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yIR0d/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 8,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yUk9H/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 7,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yl52d/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 15,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y8PDw/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 12,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y2rM6/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 14,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yHYD5/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 1,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yJi6w/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 4,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqkQ8/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 5,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yuDKJ/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 13,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yvU7H/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 9,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqovz/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 3,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yMlSD/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 11,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yPdj+/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 10,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yH8eA/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 2,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yFnxe/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 6,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9ynJwW/wA="
+        },
+        {
+            "id": "minecraft:chain"
+        },
+        {
+            "id": "minecraft:target",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:decorated_pot",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:trial_key"
+        },
+        {
+            "id": "minecraft:ominous_trial_key"
+        },
+        {
+            "id": "minecraft:lodestone_compass"
+        },
+        {
+            "id": "minecraft:wither_spawn_egg"
+        },
+        {
+            "id": "minecraft:ender_dragon_spawn_egg"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/runtime_item_states.1_21_40.json b/core/src/main/resources/bedrock/runtime_item_states.1_21_40.json
new file mode 100644
index 000000000..9ad93dd09
--- /dev/null
+++ b/core/src/main/resources/bedrock/runtime_item_states.1_21_40.json
@@ -0,0 +1,6994 @@
+[
+    {
+        "name": "minecraft:acacia_boat",
+        "id": 405
+    },
+    {
+        "name": "minecraft:acacia_button",
+        "id": -140
+    },
+    {
+        "name": "minecraft:acacia_chest_boat",
+        "id": 678
+    },
+    {
+        "name": "minecraft:acacia_door",
+        "id": 589
+    },
+    {
+        "name": "minecraft:acacia_double_slab",
+        "id": -812
+    },
+    {
+        "name": "minecraft:acacia_fence",
+        "id": -575
+    },
+    {
+        "name": "minecraft:acacia_fence_gate",
+        "id": 187
+    },
+    {
+        "name": "minecraft:acacia_hanging_sign",
+        "id": -504
+    },
+    {
+        "name": "minecraft:acacia_leaves",
+        "id": 161
+    },
+    {
+        "name": "minecraft:acacia_log",
+        "id": 162
+    },
+    {
+        "name": "minecraft:acacia_planks",
+        "id": -742
+    },
+    {
+        "name": "minecraft:acacia_pressure_plate",
+        "id": -150
+    },
+    {
+        "name": "minecraft:acacia_sapling",
+        "id": -828
+    },
+    {
+        "name": "minecraft:acacia_sign",
+        "id": 612
+    },
+    {
+        "name": "minecraft:acacia_slab",
+        "id": -807
+    },
+    {
+        "name": "minecraft:acacia_stairs",
+        "id": 163
+    },
+    {
+        "name": "minecraft:acacia_standing_sign",
+        "id": -190
+    },
+    {
+        "name": "minecraft:acacia_trapdoor",
+        "id": -145
+    },
+    {
+        "name": "minecraft:acacia_wall_sign",
+        "id": -191
+    },
+    {
+        "name": "minecraft:acacia_wood",
+        "id": -817
+    },
+    {
+        "name": "minecraft:activator_rail",
+        "id": 126
+    },
+    {
+        "name": "minecraft:agent_spawn_egg",
+        "id": 515
+    },
+    {
+        "name": "minecraft:air",
+        "id": -158
+    },
+    {
+        "name": "minecraft:allay_spawn_egg",
+        "id": 667
+    },
+    {
+        "name": "minecraft:allium",
+        "id": -831
+    },
+    {
+        "name": "minecraft:allow",
+        "id": 210
+    },
+    {
+        "name": "minecraft:amethyst_block",
+        "id": -327
+    },
+    {
+        "name": "minecraft:amethyst_cluster",
+        "id": -329
+    },
+    {
+        "name": "minecraft:amethyst_shard",
+        "id": 660
+    },
+    {
+        "name": "minecraft:ancient_debris",
+        "id": -271
+    },
+    {
+        "name": "minecraft:andesite",
+        "id": -594
+    },
+    {
+        "name": "minecraft:andesite_double_slab",
+        "id": -920
+    },
+    {
+        "name": "minecraft:andesite_slab",
+        "id": -893
+    },
+    {
+        "name": "minecraft:andesite_stairs",
+        "id": -171
+    },
+    {
+        "name": "minecraft:andesite_wall",
+        "id": -974
+    },
+    {
+        "name": "minecraft:angler_pottery_sherd",
+        "id": 692
+    },
+    {
+        "name": "minecraft:anvil",
+        "id": 145
+    },
+    {
+        "name": "minecraft:apple",
+        "id": 278
+    },
+    {
+        "name": "minecraft:archer_pottery_sherd",
+        "id": 693
+    },
+    {
+        "name": "minecraft:armadillo_scute",
+        "id": 739
+    },
+    {
+        "name": "minecraft:armadillo_spawn_egg",
+        "id": 738
+    },
+    {
+        "name": "minecraft:armor_stand",
+        "id": 585
+    },
+    {
+        "name": "minecraft:arms_up_pottery_sherd",
+        "id": 694
+    },
+    {
+        "name": "minecraft:arrow",
+        "id": 325
+    },
+    {
+        "name": "minecraft:axolotl_bucket",
+        "id": 394
+    },
+    {
+        "name": "minecraft:axolotl_spawn_egg",
+        "id": 530
+    },
+    {
+        "name": "minecraft:azalea",
+        "id": -337
+    },
+    {
+        "name": "minecraft:azalea_leaves",
+        "id": -324
+    },
+    {
+        "name": "minecraft:azalea_leaves_flowered",
+        "id": -325
+    },
+    {
+        "name": "minecraft:azure_bluet",
+        "id": -832
+    },
+    {
+        "name": "minecraft:baked_potato",
+        "id": 303
+    },
+    {
+        "name": "minecraft:balloon",
+        "id": 634
+    },
+    {
+        "name": "minecraft:bamboo",
+        "id": -163
+    },
+    {
+        "name": "minecraft:bamboo_block",
+        "id": -527
+    },
+    {
+        "name": "minecraft:bamboo_button",
+        "id": -511
+    },
+    {
+        "name": "minecraft:bamboo_chest_raft",
+        "id": 690
+    },
+    {
+        "name": "minecraft:bamboo_door",
+        "id": -517
+    },
+    {
+        "name": "minecraft:bamboo_double_slab",
+        "id": -521
+    },
+    {
+        "name": "minecraft:bamboo_fence",
+        "id": -515
+    },
+    {
+        "name": "minecraft:bamboo_fence_gate",
+        "id": -516
+    },
+    {
+        "name": "minecraft:bamboo_hanging_sign",
+        "id": -522
+    },
+    {
+        "name": "minecraft:bamboo_mosaic",
+        "id": -509
+    },
+    {
+        "name": "minecraft:bamboo_mosaic_double_slab",
+        "id": -525
+    },
+    {
+        "name": "minecraft:bamboo_mosaic_slab",
+        "id": -524
+    },
+    {
+        "name": "minecraft:bamboo_mosaic_stairs",
+        "id": -523
+    },
+    {
+        "name": "minecraft:bamboo_planks",
+        "id": -510
+    },
+    {
+        "name": "minecraft:bamboo_pressure_plate",
+        "id": -514
+    },
+    {
+        "name": "minecraft:bamboo_raft",
+        "id": 689
+    },
+    {
+        "name": "minecraft:bamboo_sapling",
+        "id": -164
+    },
+    {
+        "name": "minecraft:bamboo_sign",
+        "id": 688
+    },
+    {
+        "name": "minecraft:bamboo_slab",
+        "id": -513
+    },
+    {
+        "name": "minecraft:bamboo_stairs",
+        "id": -512
+    },
+    {
+        "name": "minecraft:bamboo_standing_sign",
+        "id": -518
+    },
+    {
+        "name": "minecraft:bamboo_trapdoor",
+        "id": -520
+    },
+    {
+        "name": "minecraft:bamboo_wall_sign",
+        "id": -519
+    },
+    {
+        "name": "minecraft:banner",
+        "id": 600
+    },
+    {
+        "name": "minecraft:banner_pattern",
+        "id": 787
+    },
+    {
+        "name": "minecraft:barrel",
+        "id": -203
+    },
+    {
+        "name": "minecraft:barrier",
+        "id": -161
+    },
+    {
+        "name": "minecraft:basalt",
+        "id": -234
+    },
+    {
+        "name": "minecraft:bat_spawn_egg",
+        "id": 480
+    },
+    {
+        "name": "minecraft:beacon",
+        "id": 138
+    },
+    {
+        "name": "minecraft:bed",
+        "id": 444
+    },
+    {
+        "name": "minecraft:bedrock",
+        "id": 7
+    },
+    {
+        "name": "minecraft:bee_nest",
+        "id": -218
+    },
+    {
+        "name": "minecraft:bee_spawn_egg",
+        "id": 522
+    },
+    {
+        "name": "minecraft:beef",
+        "id": 295
+    },
+    {
+        "name": "minecraft:beehive",
+        "id": -219
+    },
+    {
+        "name": "minecraft:beetroot",
+        "id": 307
+    },
+    {
+        "name": "minecraft:beetroot_seeds",
+        "id": 317
+    },
+    {
+        "name": "minecraft:beetroot_soup",
+        "id": 308
+    },
+    {
+        "name": "minecraft:bell",
+        "id": -206
+    },
+    {
+        "name": "minecraft:big_dripleaf",
+        "id": -323
+    },
+    {
+        "name": "minecraft:birch_boat",
+        "id": 402
+    },
+    {
+        "name": "minecraft:birch_button",
+        "id": -141
+    },
+    {
+        "name": "minecraft:birch_chest_boat",
+        "id": 675
+    },
+    {
+        "name": "minecraft:birch_door",
+        "id": 587
+    },
+    {
+        "name": "minecraft:birch_double_slab",
+        "id": -810
+    },
+    {
+        "name": "minecraft:birch_fence",
+        "id": -576
+    },
+    {
+        "name": "minecraft:birch_fence_gate",
+        "id": 184
+    },
+    {
+        "name": "minecraft:birch_hanging_sign",
+        "id": -502
+    },
+    {
+        "name": "minecraft:birch_leaves",
+        "id": -801
+    },
+    {
+        "name": "minecraft:birch_log",
+        "id": -570
+    },
+    {
+        "name": "minecraft:birch_planks",
+        "id": -740
+    },
+    {
+        "name": "minecraft:birch_pressure_plate",
+        "id": -151
+    },
+    {
+        "name": "minecraft:birch_sapling",
+        "id": -826
+    },
+    {
+        "name": "minecraft:birch_sign",
+        "id": 610
+    },
+    {
+        "name": "minecraft:birch_slab",
+        "id": -805
+    },
+    {
+        "name": "minecraft:birch_stairs",
+        "id": 135
+    },
+    {
+        "name": "minecraft:birch_standing_sign",
+        "id": -186
+    },
+    {
+        "name": "minecraft:birch_trapdoor",
+        "id": -146
+    },
+    {
+        "name": "minecraft:birch_wall_sign",
+        "id": -187
+    },
+    {
+        "name": "minecraft:birch_wood",
+        "id": -815
+    },
+    {
+        "name": "minecraft:black_bundle",
+        "id": 257
+    },
+    {
+        "name": "minecraft:black_candle",
+        "id": -428
+    },
+    {
+        "name": "minecraft:black_candle_cake",
+        "id": -445
+    },
+    {
+        "name": "minecraft:black_carpet",
+        "id": -611
+    },
+    {
+        "name": "minecraft:black_concrete",
+        "id": -642
+    },
+    {
+        "name": "minecraft:black_concrete_powder",
+        "id": -723
+    },
+    {
+        "name": "minecraft:black_dye",
+        "id": 421
+    },
+    {
+        "name": "minecraft:black_glazed_terracotta",
+        "id": 235
+    },
+    {
+        "name": "minecraft:black_shulker_box",
+        "id": -627
+    },
+    {
+        "name": "minecraft:black_stained_glass",
+        "id": -687
+    },
+    {
+        "name": "minecraft:black_stained_glass_pane",
+        "id": -657
+    },
+    {
+        "name": "minecraft:black_terracotta",
+        "id": -738
+    },
+    {
+        "name": "minecraft:black_wool",
+        "id": -554
+    },
+    {
+        "name": "minecraft:blackstone",
+        "id": -273
+    },
+    {
+        "name": "minecraft:blackstone_double_slab",
+        "id": -283
+    },
+    {
+        "name": "minecraft:blackstone_slab",
+        "id": -282
+    },
+    {
+        "name": "minecraft:blackstone_stairs",
+        "id": -276
+    },
+    {
+        "name": "minecraft:blackstone_wall",
+        "id": -277
+    },
+    {
+        "name": "minecraft:blade_pottery_sherd",
+        "id": 695
+    },
+    {
+        "name": "minecraft:blast_furnace",
+        "id": -196
+    },
+    {
+        "name": "minecraft:blaze_powder",
+        "id": 456
+    },
+    {
+        "name": "minecraft:blaze_rod",
+        "id": 449
+    },
+    {
+        "name": "minecraft:blaze_spawn_egg",
+        "id": 483
+    },
+    {
+        "name": "minecraft:bleach",
+        "id": 632
+    },
+    {
+        "name": "minecraft:blue_bundle",
+        "id": 258
+    },
+    {
+        "name": "minecraft:blue_candle",
+        "id": -424
+    },
+    {
+        "name": "minecraft:blue_candle_cake",
+        "id": -441
+    },
+    {
+        "name": "minecraft:blue_carpet",
+        "id": -607
+    },
+    {
+        "name": "minecraft:blue_concrete",
+        "id": -638
+    },
+    {
+        "name": "minecraft:blue_concrete_powder",
+        "id": -719
+    },
+    {
+        "name": "minecraft:blue_dye",
+        "id": 425
+    },
+    {
+        "name": "minecraft:blue_glazed_terracotta",
+        "id": 231
+    },
+    {
+        "name": "minecraft:blue_ice",
+        "id": -11
+    },
+    {
+        "name": "minecraft:blue_orchid",
+        "id": -830
+    },
+    {
+        "name": "minecraft:blue_shulker_box",
+        "id": -623
+    },
+    {
+        "name": "minecraft:blue_stained_glass",
+        "id": -683
+    },
+    {
+        "name": "minecraft:blue_stained_glass_pane",
+        "id": -653
+    },
+    {
+        "name": "minecraft:blue_terracotta",
+        "id": -734
+    },
+    {
+        "name": "minecraft:blue_wool",
+        "id": -563
+    },
+    {
+        "name": "minecraft:boat",
+        "id": 785
+    },
+    {
+        "name": "minecraft:bogged_spawn_egg",
+        "id": 490
+    },
+    {
+        "name": "minecraft:bolt_armor_trim_smithing_template",
+        "id": 734
+    },
+    {
+        "name": "minecraft:bone",
+        "id": 441
+    },
+    {
+        "name": "minecraft:bone_block",
+        "id": 216
+    },
+    {
+        "name": "minecraft:bone_meal",
+        "id": 437
+    },
+    {
+        "name": "minecraft:book",
+        "id": 413
+    },
+    {
+        "name": "minecraft:bookshelf",
+        "id": 47
+    },
+    {
+        "name": "minecraft:border_block",
+        "id": 212
+    },
+    {
+        "name": "minecraft:bordure_indented_banner_pattern",
+        "id": 619
+    },
+    {
+        "name": "minecraft:bow",
+        "id": 324
+    },
+    {
+        "name": "minecraft:bowl",
+        "id": 346
+    },
+    {
+        "name": "minecraft:brain_coral",
+        "id": -581
+    },
+    {
+        "name": "minecraft:brain_coral_block",
+        "id": -849
+    },
+    {
+        "name": "minecraft:brain_coral_fan",
+        "id": -840
+    },
+    {
+        "name": "minecraft:brain_coral_wall_fan",
+        "id": -904
+    },
+    {
+        "name": "minecraft:bread",
+        "id": 283
+    },
+    {
+        "name": "minecraft:breeze_rod",
+        "id": 274
+    },
+    {
+        "name": "minecraft:breeze_spawn_egg",
+        "id": 529
+    },
+    {
+        "name": "minecraft:brewer_pottery_sherd",
+        "id": 696
+    },
+    {
+        "name": "minecraft:brewing_stand",
+        "id": 458
+    },
+    {
+        "name": "minecraft:brick",
+        "id": 409
+    },
+    {
+        "name": "minecraft:brick_block",
+        "id": 45
+    },
+    {
+        "name": "minecraft:brick_double_slab",
+        "id": -880
+    },
+    {
+        "name": "minecraft:brick_slab",
+        "id": -874
+    },
+    {
+        "name": "minecraft:brick_stairs",
+        "id": 108
+    },
+    {
+        "name": "minecraft:brick_wall",
+        "id": -976
+    },
+    {
+        "name": "minecraft:brown_bundle",
+        "id": 259
+    },
+    {
+        "name": "minecraft:brown_candle",
+        "id": -425
+    },
+    {
+        "name": "minecraft:brown_candle_cake",
+        "id": -442
+    },
+    {
+        "name": "minecraft:brown_carpet",
+        "id": -608
+    },
+    {
+        "name": "minecraft:brown_concrete",
+        "id": -639
+    },
+    {
+        "name": "minecraft:brown_concrete_powder",
+        "id": -720
+    },
+    {
+        "name": "minecraft:brown_dye",
+        "id": 424
+    },
+    {
+        "name": "minecraft:brown_glazed_terracotta",
+        "id": 232
+    },
+    {
+        "name": "minecraft:brown_mushroom",
+        "id": 39
+    },
+    {
+        "name": "minecraft:brown_mushroom_block",
+        "id": 99
+    },
+    {
+        "name": "minecraft:brown_shulker_box",
+        "id": -624
+    },
+    {
+        "name": "minecraft:brown_stained_glass",
+        "id": -684
+    },
+    {
+        "name": "minecraft:brown_stained_glass_pane",
+        "id": -654
+    },
+    {
+        "name": "minecraft:brown_terracotta",
+        "id": -735
+    },
+    {
+        "name": "minecraft:brown_wool",
+        "id": -555
+    },
+    {
+        "name": "minecraft:brush",
+        "id": 715
+    },
+    {
+        "name": "minecraft:bubble_column",
+        "id": -160
+    },
+    {
+        "name": "minecraft:bubble_coral",
+        "id": -582
+    },
+    {
+        "name": "minecraft:bubble_coral_block",
+        "id": -850
+    },
+    {
+        "name": "minecraft:bubble_coral_fan",
+        "id": -841
+    },
+    {
+        "name": "minecraft:bubble_coral_wall_fan",
+        "id": -136
+    },
+    {
+        "name": "minecraft:bucket",
+        "id": 385
+    },
+    {
+        "name": "minecraft:budding_amethyst",
+        "id": -328
+    },
+    {
+        "name": "minecraft:bundle",
+        "id": 260
+    },
+    {
+        "name": "minecraft:burn_pottery_sherd",
+        "id": 697
+    },
+    {
+        "name": "minecraft:cactus",
+        "id": 81
+    },
+    {
+        "name": "minecraft:cake",
+        "id": 443
+    },
+    {
+        "name": "minecraft:calcite",
+        "id": -326
+    },
+    {
+        "name": "minecraft:calibrated_sculk_sensor",
+        "id": -580
+    },
+    {
+        "name": "minecraft:camel_spawn_egg",
+        "id": 691
+    },
+    {
+        "name": "minecraft:camera",
+        "id": 629
+    },
+    {
+        "name": "minecraft:campfire",
+        "id": 624
+    },
+    {
+        "name": "minecraft:candle",
+        "id": -412
+    },
+    {
+        "name": "minecraft:candle_cake",
+        "id": -429
+    },
+    {
+        "name": "minecraft:carpet",
+        "id": 744
+    },
+    {
+        "name": "minecraft:carrot",
+        "id": 301
+    },
+    {
+        "name": "minecraft:carrot_on_a_stick",
+        "id": 550
+    },
+    {
+        "name": "minecraft:carrots",
+        "id": 141
+    },
+    {
+        "name": "minecraft:cartography_table",
+        "id": -200
+    },
+    {
+        "name": "minecraft:carved_pumpkin",
+        "id": -155
+    },
+    {
+        "name": "minecraft:cat_spawn_egg",
+        "id": 516
+    },
+    {
+        "name": "minecraft:cauldron",
+        "id": 459
+    },
+    {
+        "name": "minecraft:cave_spider_spawn_egg",
+        "id": 484
+    },
+    {
+        "name": "minecraft:cave_vines",
+        "id": -322
+    },
+    {
+        "name": "minecraft:cave_vines_body_with_berries",
+        "id": -375
+    },
+    {
+        "name": "minecraft:cave_vines_head_with_berries",
+        "id": -376
+    },
+    {
+        "name": "minecraft:chain",
+        "id": 655
+    },
+    {
+        "name": "minecraft:chain_command_block",
+        "id": 189
+    },
+    {
+        "name": "minecraft:chainmail_boots",
+        "id": 367
+    },
+    {
+        "name": "minecraft:chainmail_chestplate",
+        "id": 365
+    },
+    {
+        "name": "minecraft:chainmail_helmet",
+        "id": 364
+    },
+    {
+        "name": "minecraft:chainmail_leggings",
+        "id": 366
+    },
+    {
+        "name": "minecraft:charcoal",
+        "id": 327
+    },
+    {
+        "name": "minecraft:chemical_heat",
+        "id": 192
+    },
+    {
+        "name": "minecraft:chemistry_table",
+        "id": 779
+    },
+    {
+        "name": "minecraft:cherry_boat",
+        "id": 685
+    },
+    {
+        "name": "minecraft:cherry_button",
+        "id": -530
+    },
+    {
+        "name": "minecraft:cherry_chest_boat",
+        "id": 686
+    },
+    {
+        "name": "minecraft:cherry_door",
+        "id": -531
+    },
+    {
+        "name": "minecraft:cherry_double_slab",
+        "id": -540
+    },
+    {
+        "name": "minecraft:cherry_fence",
+        "id": -532
+    },
+    {
+        "name": "minecraft:cherry_fence_gate",
+        "id": -533
+    },
+    {
+        "name": "minecraft:cherry_hanging_sign",
+        "id": -534
+    },
+    {
+        "name": "minecraft:cherry_leaves",
+        "id": -548
+    },
+    {
+        "name": "minecraft:cherry_log",
+        "id": -536
+    },
+    {
+        "name": "minecraft:cherry_planks",
+        "id": -537
+    },
+    {
+        "name": "minecraft:cherry_pressure_plate",
+        "id": -538
+    },
+    {
+        "name": "minecraft:cherry_sapling",
+        "id": -547
+    },
+    {
+        "name": "minecraft:cherry_sign",
+        "id": 687
+    },
+    {
+        "name": "minecraft:cherry_slab",
+        "id": -539
+    },
+    {
+        "name": "minecraft:cherry_stairs",
+        "id": -541
+    },
+    {
+        "name": "minecraft:cherry_standing_sign",
+        "id": -542
+    },
+    {
+        "name": "minecraft:cherry_trapdoor",
+        "id": -543
+    },
+    {
+        "name": "minecraft:cherry_wall_sign",
+        "id": -544
+    },
+    {
+        "name": "minecraft:cherry_wood",
+        "id": -546
+    },
+    {
+        "name": "minecraft:chest",
+        "id": 54
+    },
+    {
+        "name": "minecraft:chest_boat",
+        "id": 681
+    },
+    {
+        "name": "minecraft:chest_minecart",
+        "id": 415
+    },
+    {
+        "name": "minecraft:chicken",
+        "id": 297
+    },
+    {
+        "name": "minecraft:chicken_spawn_egg",
+        "id": 462
+    },
+    {
+        "name": "minecraft:chipped_anvil",
+        "id": -959
+    },
+    {
+        "name": "minecraft:chiseled_bookshelf",
+        "id": -526
+    },
+    {
+        "name": "minecraft:chiseled_copper",
+        "id": -760
+    },
+    {
+        "name": "minecraft:chiseled_deepslate",
+        "id": -395
+    },
+    {
+        "name": "minecraft:chiseled_nether_bricks",
+        "id": -302
+    },
+    {
+        "name": "minecraft:chiseled_polished_blackstone",
+        "id": -279
+    },
+    {
+        "name": "minecraft:chiseled_quartz_block",
+        "id": -953
+    },
+    {
+        "name": "minecraft:chiseled_red_sandstone",
+        "id": -956
+    },
+    {
+        "name": "minecraft:chiseled_sandstone",
+        "id": -944
+    },
+    {
+        "name": "minecraft:chiseled_stone_bricks",
+        "id": -870
+    },
+    {
+        "name": "minecraft:chiseled_tuff",
+        "id": -753
+    },
+    {
+        "name": "minecraft:chiseled_tuff_bricks",
+        "id": -759
+    },
+    {
+        "name": "minecraft:chorus_flower",
+        "id": 200
+    },
+    {
+        "name": "minecraft:chorus_fruit",
+        "id": 591
+    },
+    {
+        "name": "minecraft:chorus_plant",
+        "id": 240
+    },
+    {
+        "name": "minecraft:clay",
+        "id": 82
+    },
+    {
+        "name": "minecraft:clay_ball",
+        "id": 410
+    },
+    {
+        "name": "minecraft:client_request_placeholder_block",
+        "id": -465
+    },
+    {
+        "name": "minecraft:clock",
+        "id": 419
+    },
+    {
+        "name": "minecraft:coal",
+        "id": 326
+    },
+    {
+        "name": "minecraft:coal_block",
+        "id": 173
+    },
+    {
+        "name": "minecraft:coal_ore",
+        "id": 16
+    },
+    {
+        "name": "minecraft:coarse_dirt",
+        "id": -962
+    },
+    {
+        "name": "minecraft:coast_armor_trim_smithing_template",
+        "id": 719
+    },
+    {
+        "name": "minecraft:cobbled_deepslate",
+        "id": -379
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_double_slab",
+        "id": -396
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_slab",
+        "id": -380
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_stairs",
+        "id": -381
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_wall",
+        "id": -382
+    },
+    {
+        "name": "minecraft:cobblestone",
+        "id": 4
+    },
+    {
+        "name": "minecraft:cobblestone_double_slab",
+        "id": -879
+    },
+    {
+        "name": "minecraft:cobblestone_slab",
+        "id": -873
+    },
+    {
+        "name": "minecraft:cobblestone_wall",
+        "id": 139
+    },
+    {
+        "name": "minecraft:cocoa",
+        "id": 127
+    },
+    {
+        "name": "minecraft:cocoa_beans",
+        "id": 438
+    },
+    {
+        "name": "minecraft:cod",
+        "id": 286
+    },
+    {
+        "name": "minecraft:cod_bucket",
+        "id": 389
+    },
+    {
+        "name": "minecraft:cod_spawn_egg",
+        "id": 508
+    },
+    {
+        "name": "minecraft:colored_torch_blue",
+        "id": 204
+    },
+    {
+        "name": "minecraft:colored_torch_bp",
+        "id": 783
+    },
+    {
+        "name": "minecraft:colored_torch_green",
+        "id": -963
+    },
+    {
+        "name": "minecraft:colored_torch_purple",
+        "id": -964
+    },
+    {
+        "name": "minecraft:colored_torch_red",
+        "id": 202
+    },
+    {
+        "name": "minecraft:colored_torch_rg",
+        "id": 782
+    },
+    {
+        "name": "minecraft:command_block",
+        "id": 137
+    },
+    {
+        "name": "minecraft:command_block_minecart",
+        "id": 596
+    },
+    {
+        "name": "minecraft:comparator",
+        "id": 555
+    },
+    {
+        "name": "minecraft:compass",
+        "id": 417
+    },
+    {
+        "name": "minecraft:composter",
+        "id": -213
+    },
+    {
+        "name": "minecraft:compound",
+        "id": 630
+    },
+    {
+        "name": "minecraft:compound_creator",
+        "id": 238
+    },
+    {
+        "name": "minecraft:concrete",
+        "id": 770
+    },
+    {
+        "name": "minecraft:concrete_powder",
+        "id": 771
+    },
+    {
+        "name": "minecraft:conduit",
+        "id": -157
+    },
+    {
+        "name": "minecraft:cooked_beef",
+        "id": 296
+    },
+    {
+        "name": "minecraft:cooked_chicken",
+        "id": 298
+    },
+    {
+        "name": "minecraft:cooked_cod",
+        "id": 290
+    },
+    {
+        "name": "minecraft:cooked_mutton",
+        "id": 584
+    },
+    {
+        "name": "minecraft:cooked_porkchop",
+        "id": 285
+    },
+    {
+        "name": "minecraft:cooked_rabbit",
+        "id": 311
+    },
+    {
+        "name": "minecraft:cooked_salmon",
+        "id": 291
+    },
+    {
+        "name": "minecraft:cookie",
+        "id": 293
+    },
+    {
+        "name": "minecraft:copper_block",
+        "id": -340
+    },
+    {
+        "name": "minecraft:copper_bulb",
+        "id": -776
+    },
+    {
+        "name": "minecraft:copper_door",
+        "id": -784
+    },
+    {
+        "name": "minecraft:copper_grate",
+        "id": -768
+    },
+    {
+        "name": "minecraft:copper_ingot",
+        "id": 538
+    },
+    {
+        "name": "minecraft:copper_ore",
+        "id": -311
+    },
+    {
+        "name": "minecraft:copper_trapdoor",
+        "id": -792
+    },
+    {
+        "name": "minecraft:coral",
+        "id": 766
+    },
+    {
+        "name": "minecraft:coral_block",
+        "id": 748
+    },
+    {
+        "name": "minecraft:coral_fan",
+        "id": 757
+    },
+    {
+        "name": "minecraft:coral_fan_dead",
+        "id": 758
+    },
+    {
+        "name": "minecraft:cornflower",
+        "id": -838
+    },
+    {
+        "name": "minecraft:cow_spawn_egg",
+        "id": 463
+    },
+    {
+        "name": "minecraft:cracked_deepslate_bricks",
+        "id": -410
+    },
+    {
+        "name": "minecraft:cracked_deepslate_tiles",
+        "id": -409
+    },
+    {
+        "name": "minecraft:cracked_nether_bricks",
+        "id": -303
+    },
+    {
+        "name": "minecraft:cracked_polished_blackstone_bricks",
+        "id": -280
+    },
+    {
+        "name": "minecraft:cracked_stone_bricks",
+        "id": -869
+    },
+    {
+        "name": "minecraft:crafter",
+        "id": -313
+    },
+    {
+        "name": "minecraft:crafting_table",
+        "id": 58
+    },
+    {
+        "name": "minecraft:creeper_banner_pattern",
+        "id": 615
+    },
+    {
+        "name": "minecraft:creeper_head",
+        "id": -968
+    },
+    {
+        "name": "minecraft:creeper_spawn_egg",
+        "id": 468
+    },
+    {
+        "name": "minecraft:crimson_button",
+        "id": -260
+    },
+    {
+        "name": "minecraft:crimson_door",
+        "id": 652
+    },
+    {
+        "name": "minecraft:crimson_double_slab",
+        "id": -266
+    },
+    {
+        "name": "minecraft:crimson_fence",
+        "id": -256
+    },
+    {
+        "name": "minecraft:crimson_fence_gate",
+        "id": -258
+    },
+    {
+        "name": "minecraft:crimson_fungus",
+        "id": -228
+    },
+    {
+        "name": "minecraft:crimson_hanging_sign",
+        "id": -506
+    },
+    {
+        "name": "minecraft:crimson_hyphae",
+        "id": -299
+    },
+    {
+        "name": "minecraft:crimson_nylium",
+        "id": -232
+    },
+    {
+        "name": "minecraft:crimson_planks",
+        "id": -242
+    },
+    {
+        "name": "minecraft:crimson_pressure_plate",
+        "id": -262
+    },
+    {
+        "name": "minecraft:crimson_roots",
+        "id": -223
+    },
+    {
+        "name": "minecraft:crimson_sign",
+        "id": 650
+    },
+    {
+        "name": "minecraft:crimson_slab",
+        "id": -264
+    },
+    {
+        "name": "minecraft:crimson_stairs",
+        "id": -254
+    },
+    {
+        "name": "minecraft:crimson_standing_sign",
+        "id": -250
+    },
+    {
+        "name": "minecraft:crimson_stem",
+        "id": -225
+    },
+    {
+        "name": "minecraft:crimson_trapdoor",
+        "id": -246
+    },
+    {
+        "name": "minecraft:crimson_wall_sign",
+        "id": -252
+    },
+    {
+        "name": "minecraft:crossbow",
+        "id": 608
+    },
+    {
+        "name": "minecraft:crying_obsidian",
+        "id": -289
+    },
+    {
+        "name": "minecraft:cut_copper",
+        "id": -347
+    },
+    {
+        "name": "minecraft:cut_copper_slab",
+        "id": -361
+    },
+    {
+        "name": "minecraft:cut_copper_stairs",
+        "id": -354
+    },
+    {
+        "name": "minecraft:cut_red_sandstone",
+        "id": -957
+    },
+    {
+        "name": "minecraft:cut_red_sandstone_double_slab",
+        "id": -928
+    },
+    {
+        "name": "minecraft:cut_red_sandstone_slab",
+        "id": -901
+    },
+    {
+        "name": "minecraft:cut_sandstone",
+        "id": -945
+    },
+    {
+        "name": "minecraft:cut_sandstone_double_slab",
+        "id": -927
+    },
+    {
+        "name": "minecraft:cut_sandstone_slab",
+        "id": -900
+    },
+    {
+        "name": "minecraft:cyan_bundle",
+        "id": 261
+    },
+    {
+        "name": "minecraft:cyan_candle",
+        "id": -422
+    },
+    {
+        "name": "minecraft:cyan_candle_cake",
+        "id": -439
+    },
+    {
+        "name": "minecraft:cyan_carpet",
+        "id": -605
+    },
+    {
+        "name": "minecraft:cyan_concrete",
+        "id": -636
+    },
+    {
+        "name": "minecraft:cyan_concrete_powder",
+        "id": -717
+    },
+    {
+        "name": "minecraft:cyan_dye",
+        "id": 427
+    },
+    {
+        "name": "minecraft:cyan_glazed_terracotta",
+        "id": 229
+    },
+    {
+        "name": "minecraft:cyan_shulker_box",
+        "id": -621
+    },
+    {
+        "name": "minecraft:cyan_stained_glass",
+        "id": -681
+    },
+    {
+        "name": "minecraft:cyan_stained_glass_pane",
+        "id": -651
+    },
+    {
+        "name": "minecraft:cyan_terracotta",
+        "id": -732
+    },
+    {
+        "name": "minecraft:cyan_wool",
+        "id": -561
+    },
+    {
+        "name": "minecraft:damaged_anvil",
+        "id": -960
+    },
+    {
+        "name": "minecraft:dandelion",
+        "id": 37
+    },
+    {
+        "name": "minecraft:danger_pottery_sherd",
+        "id": 698
+    },
+    {
+        "name": "minecraft:dark_oak_boat",
+        "id": 406
+    },
+    {
+        "name": "minecraft:dark_oak_button",
+        "id": -142
+    },
+    {
+        "name": "minecraft:dark_oak_chest_boat",
+        "id": 679
+    },
+    {
+        "name": "minecraft:dark_oak_door",
+        "id": 590
+    },
+    {
+        "name": "minecraft:dark_oak_double_slab",
+        "id": -813
+    },
+    {
+        "name": "minecraft:dark_oak_fence",
+        "id": -577
+    },
+    {
+        "name": "minecraft:dark_oak_fence_gate",
+        "id": 186
+    },
+    {
+        "name": "minecraft:dark_oak_hanging_sign",
+        "id": -505
+    },
+    {
+        "name": "minecraft:dark_oak_leaves",
+        "id": -803
+    },
+    {
+        "name": "minecraft:dark_oak_log",
+        "id": -572
+    },
+    {
+        "name": "minecraft:dark_oak_planks",
+        "id": -743
+    },
+    {
+        "name": "minecraft:dark_oak_pressure_plate",
+        "id": -152
+    },
+    {
+        "name": "minecraft:dark_oak_sapling",
+        "id": -829
+    },
+    {
+        "name": "minecraft:dark_oak_sign",
+        "id": 613
+    },
+    {
+        "name": "minecraft:dark_oak_slab",
+        "id": -808
+    },
+    {
+        "name": "minecraft:dark_oak_stairs",
+        "id": 164
+    },
+    {
+        "name": "minecraft:dark_oak_trapdoor",
+        "id": -147
+    },
+    {
+        "name": "minecraft:dark_oak_wood",
+        "id": -818
+    },
+    {
+        "name": "minecraft:dark_prismarine",
+        "id": -947
+    },
+    {
+        "name": "minecraft:dark_prismarine_double_slab",
+        "id": -913
+    },
+    {
+        "name": "minecraft:dark_prismarine_slab",
+        "id": -886
+    },
+    {
+        "name": "minecraft:dark_prismarine_stairs",
+        "id": -3
+    },
+    {
+        "name": "minecraft:darkoak_standing_sign",
+        "id": -192
+    },
+    {
+        "name": "minecraft:darkoak_wall_sign",
+        "id": -193
+    },
+    {
+        "name": "minecraft:daylight_detector",
+        "id": 151
+    },
+    {
+        "name": "minecraft:daylight_detector_inverted",
+        "id": 178
+    },
+    {
+        "name": "minecraft:dead_brain_coral",
+        "id": -586
+    },
+    {
+        "name": "minecraft:dead_brain_coral_block",
+        "id": -854
+    },
+    {
+        "name": "minecraft:dead_brain_coral_fan",
+        "id": -844
+    },
+    {
+        "name": "minecraft:dead_brain_coral_wall_fan",
+        "id": -906
+    },
+    {
+        "name": "minecraft:dead_bubble_coral",
+        "id": -587
+    },
+    {
+        "name": "minecraft:dead_bubble_coral_block",
+        "id": -855
+    },
+    {
+        "name": "minecraft:dead_bubble_coral_fan",
+        "id": -845
+    },
+    {
+        "name": "minecraft:dead_bubble_coral_wall_fan",
+        "id": -908
+    },
+    {
+        "name": "minecraft:dead_fire_coral",
+        "id": -588
+    },
+    {
+        "name": "minecraft:dead_fire_coral_block",
+        "id": -856
+    },
+    {
+        "name": "minecraft:dead_fire_coral_fan",
+        "id": -846
+    },
+    {
+        "name": "minecraft:dead_fire_coral_wall_fan",
+        "id": -909
+    },
+    {
+        "name": "minecraft:dead_horn_coral",
+        "id": -589
+    },
+    {
+        "name": "minecraft:dead_horn_coral_block",
+        "id": -857
+    },
+    {
+        "name": "minecraft:dead_horn_coral_fan",
+        "id": -847
+    },
+    {
+        "name": "minecraft:dead_horn_coral_wall_fan",
+        "id": -910
+    },
+    {
+        "name": "minecraft:dead_tube_coral",
+        "id": -585
+    },
+    {
+        "name": "minecraft:dead_tube_coral_block",
+        "id": -853
+    },
+    {
+        "name": "minecraft:dead_tube_coral_fan",
+        "id": -134
+    },
+    {
+        "name": "minecraft:dead_tube_coral_wall_fan",
+        "id": -905
+    },
+    {
+        "name": "minecraft:deadbush",
+        "id": 32
+    },
+    {
+        "name": "minecraft:decorated_pot",
+        "id": -551
+    },
+    {
+        "name": "minecraft:deepslate",
+        "id": -378
+    },
+    {
+        "name": "minecraft:deepslate_brick_double_slab",
+        "id": -399
+    },
+    {
+        "name": "minecraft:deepslate_brick_slab",
+        "id": -392
+    },
+    {
+        "name": "minecraft:deepslate_brick_stairs",
+        "id": -393
+    },
+    {
+        "name": "minecraft:deepslate_brick_wall",
+        "id": -394
+    },
+    {
+        "name": "minecraft:deepslate_bricks",
+        "id": -391
+    },
+    {
+        "name": "minecraft:deepslate_coal_ore",
+        "id": -406
+    },
+    {
+        "name": "minecraft:deepslate_copper_ore",
+        "id": -408
+    },
+    {
+        "name": "minecraft:deepslate_diamond_ore",
+        "id": -405
+    },
+    {
+        "name": "minecraft:deepslate_emerald_ore",
+        "id": -407
+    },
+    {
+        "name": "minecraft:deepslate_gold_ore",
+        "id": -402
+    },
+    {
+        "name": "minecraft:deepslate_iron_ore",
+        "id": -401
+    },
+    {
+        "name": "minecraft:deepslate_lapis_ore",
+        "id": -400
+    },
+    {
+        "name": "minecraft:deepslate_redstone_ore",
+        "id": -403
+    },
+    {
+        "name": "minecraft:deepslate_tile_double_slab",
+        "id": -398
+    },
+    {
+        "name": "minecraft:deepslate_tile_slab",
+        "id": -388
+    },
+    {
+        "name": "minecraft:deepslate_tile_stairs",
+        "id": -389
+    },
+    {
+        "name": "minecraft:deepslate_tile_wall",
+        "id": -390
+    },
+    {
+        "name": "minecraft:deepslate_tiles",
+        "id": -387
+    },
+    {
+        "name": "minecraft:deny",
+        "id": 211
+    },
+    {
+        "name": "minecraft:deprecated_anvil",
+        "id": -961
+    },
+    {
+        "name": "minecraft:deprecated_purpur_block_1",
+        "id": -950
+    },
+    {
+        "name": "minecraft:deprecated_purpur_block_2",
+        "id": -952
+    },
+    {
+        "name": "minecraft:detector_rail",
+        "id": 28
+    },
+    {
+        "name": "minecraft:diamond",
+        "id": 328
+    },
+    {
+        "name": "minecraft:diamond_axe",
+        "id": 343
+    },
+    {
+        "name": "minecraft:diamond_block",
+        "id": 57
+    },
+    {
+        "name": "minecraft:diamond_boots",
+        "id": 375
+    },
+    {
+        "name": "minecraft:diamond_chestplate",
+        "id": 373
+    },
+    {
+        "name": "minecraft:diamond_helmet",
+        "id": 372
+    },
+    {
+        "name": "minecraft:diamond_hoe",
+        "id": 357
+    },
+    {
+        "name": "minecraft:diamond_horse_armor",
+        "id": 566
+    },
+    {
+        "name": "minecraft:diamond_leggings",
+        "id": 374
+    },
+    {
+        "name": "minecraft:diamond_ore",
+        "id": 56
+    },
+    {
+        "name": "minecraft:diamond_pickaxe",
+        "id": 342
+    },
+    {
+        "name": "minecraft:diamond_shovel",
+        "id": 341
+    },
+    {
+        "name": "minecraft:diamond_sword",
+        "id": 340
+    },
+    {
+        "name": "minecraft:diorite",
+        "id": -592
+    },
+    {
+        "name": "minecraft:diorite_double_slab",
+        "id": -921
+    },
+    {
+        "name": "minecraft:diorite_slab",
+        "id": -894
+    },
+    {
+        "name": "minecraft:diorite_stairs",
+        "id": -170
+    },
+    {
+        "name": "minecraft:diorite_wall",
+        "id": -973
+    },
+    {
+        "name": "minecraft:dirt",
+        "id": 3
+    },
+    {
+        "name": "minecraft:dirt_with_roots",
+        "id": -318
+    },
+    {
+        "name": "minecraft:disc_fragment_5",
+        "id": 673
+    },
+    {
+        "name": "minecraft:dispenser",
+        "id": 23
+    },
+    {
+        "name": "minecraft:dolphin_spawn_egg",
+        "id": 512
+    },
+    {
+        "name": "minecraft:donkey_spawn_egg",
+        "id": 493
+    },
+    {
+        "name": "minecraft:double_cut_copper_slab",
+        "id": -368
+    },
+    {
+        "name": "minecraft:double_plant",
+        "id": 764
+    },
+    {
+        "name": "minecraft:double_stone_block_slab",
+        "id": 753
+    },
+    {
+        "name": "minecraft:double_stone_block_slab2",
+        "id": 754
+    },
+    {
+        "name": "minecraft:double_stone_block_slab3",
+        "id": 755
+    },
+    {
+        "name": "minecraft:double_stone_block_slab4",
+        "id": 756
+    },
+    {
+        "name": "minecraft:dragon_breath",
+        "id": 593
+    },
+    {
+        "name": "minecraft:dragon_egg",
+        "id": 122
+    },
+    {
+        "name": "minecraft:dragon_head",
+        "id": -969
+    },
+    {
+        "name": "minecraft:dried_kelp",
+        "id": 292
+    },
+    {
+        "name": "minecraft:dried_kelp_block",
+        "id": -139
+    },
+    {
+        "name": "minecraft:dripstone_block",
+        "id": -317
+    },
+    {
+        "name": "minecraft:dropper",
+        "id": 125
+    },
+    {
+        "name": "minecraft:drowned_spawn_egg",
+        "id": 511
+    },
+    {
+        "name": "minecraft:dune_armor_trim_smithing_template",
+        "id": 718
+    },
+    {
+        "name": "minecraft:dye",
+        "id": 786
+    },
+    {
+        "name": "minecraft:echo_shard",
+        "id": 683
+    },
+    {
+        "name": "minecraft:egg",
+        "id": 416
+    },
+    {
+        "name": "minecraft:elder_guardian_spawn_egg",
+        "id": 499
+    },
+    {
+        "name": "minecraft:element_0",
+        "id": 36
+    },
+    {
+        "name": "minecraft:element_1",
+        "id": -12
+    },
+    {
+        "name": "minecraft:element_10",
+        "id": -21
+    },
+    {
+        "name": "minecraft:element_100",
+        "id": -111
+    },
+    {
+        "name": "minecraft:element_101",
+        "id": -112
+    },
+    {
+        "name": "minecraft:element_102",
+        "id": -113
+    },
+    {
+        "name": "minecraft:element_103",
+        "id": -114
+    },
+    {
+        "name": "minecraft:element_104",
+        "id": -115
+    },
+    {
+        "name": "minecraft:element_105",
+        "id": -116
+    },
+    {
+        "name": "minecraft:element_106",
+        "id": -117
+    },
+    {
+        "name": "minecraft:element_107",
+        "id": -118
+    },
+    {
+        "name": "minecraft:element_108",
+        "id": -119
+    },
+    {
+        "name": "minecraft:element_109",
+        "id": -120
+    },
+    {
+        "name": "minecraft:element_11",
+        "id": -22
+    },
+    {
+        "name": "minecraft:element_110",
+        "id": -121
+    },
+    {
+        "name": "minecraft:element_111",
+        "id": -122
+    },
+    {
+        "name": "minecraft:element_112",
+        "id": -123
+    },
+    {
+        "name": "minecraft:element_113",
+        "id": -124
+    },
+    {
+        "name": "minecraft:element_114",
+        "id": -125
+    },
+    {
+        "name": "minecraft:element_115",
+        "id": -126
+    },
+    {
+        "name": "minecraft:element_116",
+        "id": -127
+    },
+    {
+        "name": "minecraft:element_117",
+        "id": -128
+    },
+    {
+        "name": "minecraft:element_118",
+        "id": -129
+    },
+    {
+        "name": "minecraft:element_12",
+        "id": -23
+    },
+    {
+        "name": "minecraft:element_13",
+        "id": -24
+    },
+    {
+        "name": "minecraft:element_14",
+        "id": -25
+    },
+    {
+        "name": "minecraft:element_15",
+        "id": -26
+    },
+    {
+        "name": "minecraft:element_16",
+        "id": -27
+    },
+    {
+        "name": "minecraft:element_17",
+        "id": -28
+    },
+    {
+        "name": "minecraft:element_18",
+        "id": -29
+    },
+    {
+        "name": "minecraft:element_19",
+        "id": -30
+    },
+    {
+        "name": "minecraft:element_2",
+        "id": -13
+    },
+    {
+        "name": "minecraft:element_20",
+        "id": -31
+    },
+    {
+        "name": "minecraft:element_21",
+        "id": -32
+    },
+    {
+        "name": "minecraft:element_22",
+        "id": -33
+    },
+    {
+        "name": "minecraft:element_23",
+        "id": -34
+    },
+    {
+        "name": "minecraft:element_24",
+        "id": -35
+    },
+    {
+        "name": "minecraft:element_25",
+        "id": -36
+    },
+    {
+        "name": "minecraft:element_26",
+        "id": -37
+    },
+    {
+        "name": "minecraft:element_27",
+        "id": -38
+    },
+    {
+        "name": "minecraft:element_28",
+        "id": -39
+    },
+    {
+        "name": "minecraft:element_29",
+        "id": -40
+    },
+    {
+        "name": "minecraft:element_3",
+        "id": -14
+    },
+    {
+        "name": "minecraft:element_30",
+        "id": -41
+    },
+    {
+        "name": "minecraft:element_31",
+        "id": -42
+    },
+    {
+        "name": "minecraft:element_32",
+        "id": -43
+    },
+    {
+        "name": "minecraft:element_33",
+        "id": -44
+    },
+    {
+        "name": "minecraft:element_34",
+        "id": -45
+    },
+    {
+        "name": "minecraft:element_35",
+        "id": -46
+    },
+    {
+        "name": "minecraft:element_36",
+        "id": -47
+    },
+    {
+        "name": "minecraft:element_37",
+        "id": -48
+    },
+    {
+        "name": "minecraft:element_38",
+        "id": -49
+    },
+    {
+        "name": "minecraft:element_39",
+        "id": -50
+    },
+    {
+        "name": "minecraft:element_4",
+        "id": -15
+    },
+    {
+        "name": "minecraft:element_40",
+        "id": -51
+    },
+    {
+        "name": "minecraft:element_41",
+        "id": -52
+    },
+    {
+        "name": "minecraft:element_42",
+        "id": -53
+    },
+    {
+        "name": "minecraft:element_43",
+        "id": -54
+    },
+    {
+        "name": "minecraft:element_44",
+        "id": -55
+    },
+    {
+        "name": "minecraft:element_45",
+        "id": -56
+    },
+    {
+        "name": "minecraft:element_46",
+        "id": -57
+    },
+    {
+        "name": "minecraft:element_47",
+        "id": -58
+    },
+    {
+        "name": "minecraft:element_48",
+        "id": -59
+    },
+    {
+        "name": "minecraft:element_49",
+        "id": -60
+    },
+    {
+        "name": "minecraft:element_5",
+        "id": -16
+    },
+    {
+        "name": "minecraft:element_50",
+        "id": -61
+    },
+    {
+        "name": "minecraft:element_51",
+        "id": -62
+    },
+    {
+        "name": "minecraft:element_52",
+        "id": -63
+    },
+    {
+        "name": "minecraft:element_53",
+        "id": -64
+    },
+    {
+        "name": "minecraft:element_54",
+        "id": -65
+    },
+    {
+        "name": "minecraft:element_55",
+        "id": -66
+    },
+    {
+        "name": "minecraft:element_56",
+        "id": -67
+    },
+    {
+        "name": "minecraft:element_57",
+        "id": -68
+    },
+    {
+        "name": "minecraft:element_58",
+        "id": -69
+    },
+    {
+        "name": "minecraft:element_59",
+        "id": -70
+    },
+    {
+        "name": "minecraft:element_6",
+        "id": -17
+    },
+    {
+        "name": "minecraft:element_60",
+        "id": -71
+    },
+    {
+        "name": "minecraft:element_61",
+        "id": -72
+    },
+    {
+        "name": "minecraft:element_62",
+        "id": -73
+    },
+    {
+        "name": "minecraft:element_63",
+        "id": -74
+    },
+    {
+        "name": "minecraft:element_64",
+        "id": -75
+    },
+    {
+        "name": "minecraft:element_65",
+        "id": -76
+    },
+    {
+        "name": "minecraft:element_66",
+        "id": -77
+    },
+    {
+        "name": "minecraft:element_67",
+        "id": -78
+    },
+    {
+        "name": "minecraft:element_68",
+        "id": -79
+    },
+    {
+        "name": "minecraft:element_69",
+        "id": -80
+    },
+    {
+        "name": "minecraft:element_7",
+        "id": -18
+    },
+    {
+        "name": "minecraft:element_70",
+        "id": -81
+    },
+    {
+        "name": "minecraft:element_71",
+        "id": -82
+    },
+    {
+        "name": "minecraft:element_72",
+        "id": -83
+    },
+    {
+        "name": "minecraft:element_73",
+        "id": -84
+    },
+    {
+        "name": "minecraft:element_74",
+        "id": -85
+    },
+    {
+        "name": "minecraft:element_75",
+        "id": -86
+    },
+    {
+        "name": "minecraft:element_76",
+        "id": -87
+    },
+    {
+        "name": "minecraft:element_77",
+        "id": -88
+    },
+    {
+        "name": "minecraft:element_78",
+        "id": -89
+    },
+    {
+        "name": "minecraft:element_79",
+        "id": -90
+    },
+    {
+        "name": "minecraft:element_8",
+        "id": -19
+    },
+    {
+        "name": "minecraft:element_80",
+        "id": -91
+    },
+    {
+        "name": "minecraft:element_81",
+        "id": -92
+    },
+    {
+        "name": "minecraft:element_82",
+        "id": -93
+    },
+    {
+        "name": "minecraft:element_83",
+        "id": -94
+    },
+    {
+        "name": "minecraft:element_84",
+        "id": -95
+    },
+    {
+        "name": "minecraft:element_85",
+        "id": -96
+    },
+    {
+        "name": "minecraft:element_86",
+        "id": -97
+    },
+    {
+        "name": "minecraft:element_87",
+        "id": -98
+    },
+    {
+        "name": "minecraft:element_88",
+        "id": -99
+    },
+    {
+        "name": "minecraft:element_89",
+        "id": -100
+    },
+    {
+        "name": "minecraft:element_9",
+        "id": -20
+    },
+    {
+        "name": "minecraft:element_90",
+        "id": -101
+    },
+    {
+        "name": "minecraft:element_91",
+        "id": -102
+    },
+    {
+        "name": "minecraft:element_92",
+        "id": -103
+    },
+    {
+        "name": "minecraft:element_93",
+        "id": -104
+    },
+    {
+        "name": "minecraft:element_94",
+        "id": -105
+    },
+    {
+        "name": "minecraft:element_95",
+        "id": -106
+    },
+    {
+        "name": "minecraft:element_96",
+        "id": -107
+    },
+    {
+        "name": "minecraft:element_97",
+        "id": -108
+    },
+    {
+        "name": "minecraft:element_98",
+        "id": -109
+    },
+    {
+        "name": "minecraft:element_99",
+        "id": -110
+    },
+    {
+        "name": "minecraft:element_constructor",
+        "id": -987
+    },
+    {
+        "name": "minecraft:elytra",
+        "id": 597
+    },
+    {
+        "name": "minecraft:emerald",
+        "id": 546
+    },
+    {
+        "name": "minecraft:emerald_block",
+        "id": 133
+    },
+    {
+        "name": "minecraft:emerald_ore",
+        "id": 129
+    },
+    {
+        "name": "minecraft:empty_map",
+        "id": 549
+    },
+    {
+        "name": "minecraft:enchanted_book",
+        "id": 554
+    },
+    {
+        "name": "minecraft:enchanted_golden_apple",
+        "id": 281
+    },
+    {
+        "name": "minecraft:enchanting_table",
+        "id": 116
+    },
+    {
+        "name": "minecraft:end_brick_stairs",
+        "id": -178
+    },
+    {
+        "name": "minecraft:end_bricks",
+        "id": 206
+    },
+    {
+        "name": "minecraft:end_crystal",
+        "id": 789
+    },
+    {
+        "name": "minecraft:end_gateway",
+        "id": 209
+    },
+    {
+        "name": "minecraft:end_portal",
+        "id": 119
+    },
+    {
+        "name": "minecraft:end_portal_frame",
+        "id": 120
+    },
+    {
+        "name": "minecraft:end_rod",
+        "id": 208
+    },
+    {
+        "name": "minecraft:end_stone",
+        "id": 121
+    },
+    {
+        "name": "minecraft:end_stone_brick_double_slab",
+        "id": -167
+    },
+    {
+        "name": "minecraft:end_stone_brick_slab",
+        "id": -162
+    },
+    {
+        "name": "minecraft:end_stone_brick_wall",
+        "id": -980
+    },
+    {
+        "name": "minecraft:ender_chest",
+        "id": 130
+    },
+    {
+        "name": "minecraft:ender_dragon_spawn_egg",
+        "id": 535
+    },
+    {
+        "name": "minecraft:ender_eye",
+        "id": 460
+    },
+    {
+        "name": "minecraft:ender_pearl",
+        "id": 448
+    },
+    {
+        "name": "minecraft:enderman_spawn_egg",
+        "id": 469
+    },
+    {
+        "name": "minecraft:endermite_spawn_egg",
+        "id": 487
+    },
+    {
+        "name": "minecraft:evoker_spawn_egg",
+        "id": 503
+    },
+    {
+        "name": "minecraft:experience_bottle",
+        "id": 542
+    },
+    {
+        "name": "minecraft:explorer_pottery_sherd",
+        "id": 699
+    },
+    {
+        "name": "minecraft:exposed_chiseled_copper",
+        "id": -761
+    },
+    {
+        "name": "minecraft:exposed_copper",
+        "id": -341
+    },
+    {
+        "name": "minecraft:exposed_copper_bulb",
+        "id": -777
+    },
+    {
+        "name": "minecraft:exposed_copper_door",
+        "id": -785
+    },
+    {
+        "name": "minecraft:exposed_copper_grate",
+        "id": -769
+    },
+    {
+        "name": "minecraft:exposed_copper_trapdoor",
+        "id": -793
+    },
+    {
+        "name": "minecraft:exposed_cut_copper",
+        "id": -348
+    },
+    {
+        "name": "minecraft:exposed_cut_copper_slab",
+        "id": -362
+    },
+    {
+        "name": "minecraft:exposed_cut_copper_stairs",
+        "id": -355
+    },
+    {
+        "name": "minecraft:exposed_double_cut_copper_slab",
+        "id": -369
+    },
+    {
+        "name": "minecraft:eye_armor_trim_smithing_template",
+        "id": 722
+    },
+    {
+        "name": "minecraft:farmland",
+        "id": 60
+    },
+    {
+        "name": "minecraft:feather",
+        "id": 352
+    },
+    {
+        "name": "minecraft:fence",
+        "id": 746
+    },
+    {
+        "name": "minecraft:fence_gate",
+        "id": 107
+    },
+    {
+        "name": "minecraft:fermented_spider_eye",
+        "id": 455
+    },
+    {
+        "name": "minecraft:fern",
+        "id": -848
+    },
+    {
+        "name": "minecraft:field_masoned_banner_pattern",
+        "id": 618
+    },
+    {
+        "name": "minecraft:filled_map",
+        "id": 446
+    },
+    {
+        "name": "minecraft:fire",
+        "id": 51
+    },
+    {
+        "name": "minecraft:fire_charge",
+        "id": 543
+    },
+    {
+        "name": "minecraft:fire_coral",
+        "id": -583
+    },
+    {
+        "name": "minecraft:fire_coral_block",
+        "id": -851
+    },
+    {
+        "name": "minecraft:fire_coral_fan",
+        "id": -842
+    },
+    {
+        "name": "minecraft:fire_coral_wall_fan",
+        "id": -907
+    },
+    {
+        "name": "minecraft:firework_rocket",
+        "id": 552
+    },
+    {
+        "name": "minecraft:firework_star",
+        "id": 553
+    },
+    {
+        "name": "minecraft:fishing_rod",
+        "id": 418
+    },
+    {
+        "name": "minecraft:fletching_table",
+        "id": -201
+    },
+    {
+        "name": "minecraft:flint",
+        "id": 381
+    },
+    {
+        "name": "minecraft:flint_and_steel",
+        "id": 323
+    },
+    {
+        "name": "minecraft:flow_armor_trim_smithing_template",
+        "id": 733
+    },
+    {
+        "name": "minecraft:flow_banner_pattern",
+        "id": 622
+    },
+    {
+        "name": "minecraft:flow_pottery_sherd",
+        "id": 700
+    },
+    {
+        "name": "minecraft:flower_banner_pattern",
+        "id": 614
+    },
+    {
+        "name": "minecraft:flower_pot",
+        "id": 548
+    },
+    {
+        "name": "minecraft:flowering_azalea",
+        "id": -338
+    },
+    {
+        "name": "minecraft:flowing_lava",
+        "id": 10
+    },
+    {
+        "name": "minecraft:flowing_water",
+        "id": 8
+    },
+    {
+        "name": "minecraft:fox_spawn_egg",
+        "id": 518
+    },
+    {
+        "name": "minecraft:frame",
+        "id": 547
+    },
+    {
+        "name": "minecraft:friend_pottery_sherd",
+        "id": 701
+    },
+    {
+        "name": "minecraft:frog_spawn",
+        "id": -468
+    },
+    {
+        "name": "minecraft:frog_spawn_egg",
+        "id": 664
+    },
+    {
+        "name": "minecraft:frosted_ice",
+        "id": 207
+    },
+    {
+        "name": "minecraft:furnace",
+        "id": 61
+    },
+    {
+        "name": "minecraft:ghast_spawn_egg",
+        "id": 481
+    },
+    {
+        "name": "minecraft:ghast_tear",
+        "id": 451
+    },
+    {
+        "name": "minecraft:gilded_blackstone",
+        "id": -281
+    },
+    {
+        "name": "minecraft:glass",
+        "id": 20
+    },
+    {
+        "name": "minecraft:glass_bottle",
+        "id": 454
+    },
+    {
+        "name": "minecraft:glass_pane",
+        "id": 102
+    },
+    {
+        "name": "minecraft:glistering_melon_slice",
+        "id": 461
+    },
+    {
+        "name": "minecraft:globe_banner_pattern",
+        "id": 621
+    },
+    {
+        "name": "minecraft:glow_berries",
+        "id": 790
+    },
+    {
+        "name": "minecraft:glow_frame",
+        "id": 659
+    },
+    {
+        "name": "minecraft:glow_ink_sac",
+        "id": 537
+    },
+    {
+        "name": "minecraft:glow_lichen",
+        "id": -411
+    },
+    {
+        "name": "minecraft:glow_squid_spawn_egg",
+        "id": 532
+    },
+    {
+        "name": "minecraft:glow_stick",
+        "id": 637
+    },
+    {
+        "name": "minecraft:glowingobsidian",
+        "id": 246
+    },
+    {
+        "name": "minecraft:glowstone",
+        "id": 89
+    },
+    {
+        "name": "minecraft:glowstone_dust",
+        "id": 420
+    },
+    {
+        "name": "minecraft:goat_horn",
+        "id": 663
+    },
+    {
+        "name": "minecraft:goat_spawn_egg",
+        "id": 531
+    },
+    {
+        "name": "minecraft:gold_block",
+        "id": 41
+    },
+    {
+        "name": "minecraft:gold_ingot",
+        "id": 330
+    },
+    {
+        "name": "minecraft:gold_nugget",
+        "id": 452
+    },
+    {
+        "name": "minecraft:gold_ore",
+        "id": 14
+    },
+    {
+        "name": "minecraft:golden_apple",
+        "id": 280
+    },
+    {
+        "name": "minecraft:golden_axe",
+        "id": 350
+    },
+    {
+        "name": "minecraft:golden_boots",
+        "id": 379
+    },
+    {
+        "name": "minecraft:golden_carrot",
+        "id": 305
+    },
+    {
+        "name": "minecraft:golden_chestplate",
+        "id": 377
+    },
+    {
+        "name": "minecraft:golden_helmet",
+        "id": 376
+    },
+    {
+        "name": "minecraft:golden_hoe",
+        "id": 358
+    },
+    {
+        "name": "minecraft:golden_horse_armor",
+        "id": 565
+    },
+    {
+        "name": "minecraft:golden_leggings",
+        "id": 378
+    },
+    {
+        "name": "minecraft:golden_pickaxe",
+        "id": 349
+    },
+    {
+        "name": "minecraft:golden_rail",
+        "id": 27
+    },
+    {
+        "name": "minecraft:golden_shovel",
+        "id": 348
+    },
+    {
+        "name": "minecraft:golden_sword",
+        "id": 347
+    },
+    {
+        "name": "minecraft:granite",
+        "id": -590
+    },
+    {
+        "name": "minecraft:granite_double_slab",
+        "id": -923
+    },
+    {
+        "name": "minecraft:granite_slab",
+        "id": -896
+    },
+    {
+        "name": "minecraft:granite_stairs",
+        "id": -169
+    },
+    {
+        "name": "minecraft:granite_wall",
+        "id": -972
+    },
+    {
+        "name": "minecraft:grass_block",
+        "id": 2
+    },
+    {
+        "name": "minecraft:grass_path",
+        "id": 198
+    },
+    {
+        "name": "minecraft:gravel",
+        "id": 13
+    },
+    {
+        "name": "minecraft:gray_bundle",
+        "id": 262
+    },
+    {
+        "name": "minecraft:gray_candle",
+        "id": -420
+    },
+    {
+        "name": "minecraft:gray_candle_cake",
+        "id": -437
+    },
+    {
+        "name": "minecraft:gray_carpet",
+        "id": -603
+    },
+    {
+        "name": "minecraft:gray_concrete",
+        "id": -634
+    },
+    {
+        "name": "minecraft:gray_concrete_powder",
+        "id": -715
+    },
+    {
+        "name": "minecraft:gray_dye",
+        "id": 429
+    },
+    {
+        "name": "minecraft:gray_glazed_terracotta",
+        "id": 227
+    },
+    {
+        "name": "minecraft:gray_shulker_box",
+        "id": -619
+    },
+    {
+        "name": "minecraft:gray_stained_glass",
+        "id": -679
+    },
+    {
+        "name": "minecraft:gray_stained_glass_pane",
+        "id": -649
+    },
+    {
+        "name": "minecraft:gray_terracotta",
+        "id": -730
+    },
+    {
+        "name": "minecraft:gray_wool",
+        "id": -553
+    },
+    {
+        "name": "minecraft:green_bundle",
+        "id": 263
+    },
+    {
+        "name": "minecraft:green_candle",
+        "id": -426
+    },
+    {
+        "name": "minecraft:green_candle_cake",
+        "id": -443
+    },
+    {
+        "name": "minecraft:green_carpet",
+        "id": -609
+    },
+    {
+        "name": "minecraft:green_concrete",
+        "id": -640
+    },
+    {
+        "name": "minecraft:green_concrete_powder",
+        "id": -721
+    },
+    {
+        "name": "minecraft:green_dye",
+        "id": 423
+    },
+    {
+        "name": "minecraft:green_glazed_terracotta",
+        "id": 233
+    },
+    {
+        "name": "minecraft:green_shulker_box",
+        "id": -625
+    },
+    {
+        "name": "minecraft:green_stained_glass",
+        "id": -685
+    },
+    {
+        "name": "minecraft:green_stained_glass_pane",
+        "id": -655
+    },
+    {
+        "name": "minecraft:green_terracotta",
+        "id": -736
+    },
+    {
+        "name": "minecraft:green_wool",
+        "id": -560
+    },
+    {
+        "name": "minecraft:grindstone",
+        "id": -195
+    },
+    {
+        "name": "minecraft:guardian_spawn_egg",
+        "id": 488
+    },
+    {
+        "name": "minecraft:gunpowder",
+        "id": 353
+    },
+    {
+        "name": "minecraft:guster_banner_pattern",
+        "id": 623
+    },
+    {
+        "name": "minecraft:guster_pottery_sherd",
+        "id": 702
+    },
+    {
+        "name": "minecraft:hanging_roots",
+        "id": -319
+    },
+    {
+        "name": "minecraft:hard_black_stained_glass",
+        "id": -702
+    },
+    {
+        "name": "minecraft:hard_black_stained_glass_pane",
+        "id": -672
+    },
+    {
+        "name": "minecraft:hard_blue_stained_glass",
+        "id": -698
+    },
+    {
+        "name": "minecraft:hard_blue_stained_glass_pane",
+        "id": -668
+    },
+    {
+        "name": "minecraft:hard_brown_stained_glass",
+        "id": -699
+    },
+    {
+        "name": "minecraft:hard_brown_stained_glass_pane",
+        "id": -669
+    },
+    {
+        "name": "minecraft:hard_cyan_stained_glass",
+        "id": -696
+    },
+    {
+        "name": "minecraft:hard_cyan_stained_glass_pane",
+        "id": -666
+    },
+    {
+        "name": "minecraft:hard_glass",
+        "id": 253
+    },
+    {
+        "name": "minecraft:hard_glass_pane",
+        "id": 190
+    },
+    {
+        "name": "minecraft:hard_gray_stained_glass",
+        "id": -694
+    },
+    {
+        "name": "minecraft:hard_gray_stained_glass_pane",
+        "id": -664
+    },
+    {
+        "name": "minecraft:hard_green_stained_glass",
+        "id": -700
+    },
+    {
+        "name": "minecraft:hard_green_stained_glass_pane",
+        "id": -670
+    },
+    {
+        "name": "minecraft:hard_light_blue_stained_glass",
+        "id": -690
+    },
+    {
+        "name": "minecraft:hard_light_blue_stained_glass_pane",
+        "id": -660
+    },
+    {
+        "name": "minecraft:hard_light_gray_stained_glass",
+        "id": -695
+    },
+    {
+        "name": "minecraft:hard_light_gray_stained_glass_pane",
+        "id": -665
+    },
+    {
+        "name": "minecraft:hard_lime_stained_glass",
+        "id": -692
+    },
+    {
+        "name": "minecraft:hard_lime_stained_glass_pane",
+        "id": -662
+    },
+    {
+        "name": "minecraft:hard_magenta_stained_glass",
+        "id": -689
+    },
+    {
+        "name": "minecraft:hard_magenta_stained_glass_pane",
+        "id": -659
+    },
+    {
+        "name": "minecraft:hard_orange_stained_glass",
+        "id": -688
+    },
+    {
+        "name": "minecraft:hard_orange_stained_glass_pane",
+        "id": -658
+    },
+    {
+        "name": "minecraft:hard_pink_stained_glass",
+        "id": -693
+    },
+    {
+        "name": "minecraft:hard_pink_stained_glass_pane",
+        "id": -663
+    },
+    {
+        "name": "minecraft:hard_purple_stained_glass",
+        "id": -697
+    },
+    {
+        "name": "minecraft:hard_purple_stained_glass_pane",
+        "id": -667
+    },
+    {
+        "name": "minecraft:hard_red_stained_glass",
+        "id": -701
+    },
+    {
+        "name": "minecraft:hard_red_stained_glass_pane",
+        "id": -671
+    },
+    {
+        "name": "minecraft:hard_stained_glass",
+        "id": 780
+    },
+    {
+        "name": "minecraft:hard_stained_glass_pane",
+        "id": 781
+    },
+    {
+        "name": "minecraft:hard_white_stained_glass",
+        "id": 254
+    },
+    {
+        "name": "minecraft:hard_white_stained_glass_pane",
+        "id": 191
+    },
+    {
+        "name": "minecraft:hard_yellow_stained_glass",
+        "id": -691
+    },
+    {
+        "name": "minecraft:hard_yellow_stained_glass_pane",
+        "id": -661
+    },
+    {
+        "name": "minecraft:hardened_clay",
+        "id": 172
+    },
+    {
+        "name": "minecraft:hay_block",
+        "id": 170
+    },
+    {
+        "name": "minecraft:heart_of_the_sea",
+        "id": 604
+    },
+    {
+        "name": "minecraft:heart_pottery_sherd",
+        "id": 703
+    },
+    {
+        "name": "minecraft:heartbreak_pottery_sherd",
+        "id": 704
+    },
+    {
+        "name": "minecraft:heavy_core",
+        "id": -316
+    },
+    {
+        "name": "minecraft:heavy_weighted_pressure_plate",
+        "id": 148
+    },
+    {
+        "name": "minecraft:hoglin_spawn_egg",
+        "id": 524
+    },
+    {
+        "name": "minecraft:honey_block",
+        "id": -220
+    },
+    {
+        "name": "minecraft:honey_bottle",
+        "id": 627
+    },
+    {
+        "name": "minecraft:honeycomb",
+        "id": 626
+    },
+    {
+        "name": "minecraft:honeycomb_block",
+        "id": -221
+    },
+    {
+        "name": "minecraft:hopper",
+        "id": 560
+    },
+    {
+        "name": "minecraft:hopper_minecart",
+        "id": 559
+    },
+    {
+        "name": "minecraft:horn_coral",
+        "id": -584
+    },
+    {
+        "name": "minecraft:horn_coral_block",
+        "id": -852
+    },
+    {
+        "name": "minecraft:horn_coral_fan",
+        "id": -843
+    },
+    {
+        "name": "minecraft:horn_coral_wall_fan",
+        "id": -137
+    },
+    {
+        "name": "minecraft:horse_spawn_egg",
+        "id": 485
+    },
+    {
+        "name": "minecraft:host_armor_trim_smithing_template",
+        "id": 732
+    },
+    {
+        "name": "minecraft:howl_pottery_sherd",
+        "id": 705
+    },
+    {
+        "name": "minecraft:husk_spawn_egg",
+        "id": 491
+    },
+    {
+        "name": "minecraft:ice",
+        "id": 79
+    },
+    {
+        "name": "minecraft:ice_bomb",
+        "id": 631
+    },
+    {
+        "name": "minecraft:infested_chiseled_stone_bricks",
+        "id": -862
+    },
+    {
+        "name": "minecraft:infested_cobblestone",
+        "id": -858
+    },
+    {
+        "name": "minecraft:infested_cracked_stone_bricks",
+        "id": -861
+    },
+    {
+        "name": "minecraft:infested_deepslate",
+        "id": -454
+    },
+    {
+        "name": "minecraft:infested_mossy_stone_bricks",
+        "id": -860
+    },
+    {
+        "name": "minecraft:infested_stone",
+        "id": 97
+    },
+    {
+        "name": "minecraft:infested_stone_bricks",
+        "id": -859
+    },
+    {
+        "name": "minecraft:info_update",
+        "id": 248
+    },
+    {
+        "name": "minecraft:info_update2",
+        "id": 249
+    },
+    {
+        "name": "minecraft:ink_sac",
+        "id": 439
+    },
+    {
+        "name": "minecraft:invisible_bedrock",
+        "id": 95
+    },
+    {
+        "name": "minecraft:iron_axe",
+        "id": 322
+    },
+    {
+        "name": "minecraft:iron_bars",
+        "id": 101
+    },
+    {
+        "name": "minecraft:iron_block",
+        "id": 42
+    },
+    {
+        "name": "minecraft:iron_boots",
+        "id": 371
+    },
+    {
+        "name": "minecraft:iron_chestplate",
+        "id": 369
+    },
+    {
+        "name": "minecraft:iron_door",
+        "id": 397
+    },
+    {
+        "name": "minecraft:iron_golem_spawn_egg",
+        "id": 533
+    },
+    {
+        "name": "minecraft:iron_helmet",
+        "id": 368
+    },
+    {
+        "name": "minecraft:iron_hoe",
+        "id": 356
+    },
+    {
+        "name": "minecraft:iron_horse_armor",
+        "id": 564
+    },
+    {
+        "name": "minecraft:iron_ingot",
+        "id": 329
+    },
+    {
+        "name": "minecraft:iron_leggings",
+        "id": 370
+    },
+    {
+        "name": "minecraft:iron_nugget",
+        "id": 602
+    },
+    {
+        "name": "minecraft:iron_ore",
+        "id": 15
+    },
+    {
+        "name": "minecraft:iron_pickaxe",
+        "id": 321
+    },
+    {
+        "name": "minecraft:iron_shovel",
+        "id": 320
+    },
+    {
+        "name": "minecraft:iron_sword",
+        "id": 331
+    },
+    {
+        "name": "minecraft:iron_trapdoor",
+        "id": 167
+    },
+    {
+        "name": "minecraft:item.acacia_door",
+        "id": 196
+    },
+    {
+        "name": "minecraft:item.bed",
+        "id": 26
+    },
+    {
+        "name": "minecraft:item.beetroot",
+        "id": 244
+    },
+    {
+        "name": "minecraft:item.birch_door",
+        "id": 194
+    },
+    {
+        "name": "minecraft:item.brewing_stand",
+        "id": 117
+    },
+    {
+        "name": "minecraft:item.cake",
+        "id": 92
+    },
+    {
+        "name": "minecraft:item.camera",
+        "id": 242
+    },
+    {
+        "name": "minecraft:item.campfire",
+        "id": -209
+    },
+    {
+        "name": "minecraft:item.cauldron",
+        "id": 118
+    },
+    {
+        "name": "minecraft:item.chain",
+        "id": -286
+    },
+    {
+        "name": "minecraft:item.crimson_door",
+        "id": -244
+    },
+    {
+        "name": "minecraft:item.dark_oak_door",
+        "id": 197
+    },
+    {
+        "name": "minecraft:item.flower_pot",
+        "id": 140
+    },
+    {
+        "name": "minecraft:item.frame",
+        "id": 199
+    },
+    {
+        "name": "minecraft:item.glow_frame",
+        "id": -339
+    },
+    {
+        "name": "minecraft:item.hopper",
+        "id": 154
+    },
+    {
+        "name": "minecraft:item.iron_door",
+        "id": 71
+    },
+    {
+        "name": "minecraft:item.jungle_door",
+        "id": 195
+    },
+    {
+        "name": "minecraft:item.kelp",
+        "id": -138
+    },
+    {
+        "name": "minecraft:item.mangrove_door",
+        "id": -493
+    },
+    {
+        "name": "minecraft:item.nether_sprouts",
+        "id": -238
+    },
+    {
+        "name": "minecraft:item.nether_wart",
+        "id": 115
+    },
+    {
+        "name": "minecraft:item.reeds",
+        "id": 83
+    },
+    {
+        "name": "minecraft:item.soul_campfire",
+        "id": -290
+    },
+    {
+        "name": "minecraft:item.spruce_door",
+        "id": 193
+    },
+    {
+        "name": "minecraft:item.warped_door",
+        "id": -245
+    },
+    {
+        "name": "minecraft:item.wheat",
+        "id": 59
+    },
+    {
+        "name": "minecraft:item.wooden_door",
+        "id": 64
+    },
+    {
+        "name": "minecraft:jigsaw",
+        "id": -211
+    },
+    {
+        "name": "minecraft:jukebox",
+        "id": 84
+    },
+    {
+        "name": "minecraft:jungle_boat",
+        "id": 403
+    },
+    {
+        "name": "minecraft:jungle_button",
+        "id": -143
+    },
+    {
+        "name": "minecraft:jungle_chest_boat",
+        "id": 676
+    },
+    {
+        "name": "minecraft:jungle_door",
+        "id": 588
+    },
+    {
+        "name": "minecraft:jungle_double_slab",
+        "id": -811
+    },
+    {
+        "name": "minecraft:jungle_fence",
+        "id": -578
+    },
+    {
+        "name": "minecraft:jungle_fence_gate",
+        "id": 185
+    },
+    {
+        "name": "minecraft:jungle_hanging_sign",
+        "id": -503
+    },
+    {
+        "name": "minecraft:jungle_leaves",
+        "id": -802
+    },
+    {
+        "name": "minecraft:jungle_log",
+        "id": -571
+    },
+    {
+        "name": "minecraft:jungle_planks",
+        "id": -741
+    },
+    {
+        "name": "minecraft:jungle_pressure_plate",
+        "id": -153
+    },
+    {
+        "name": "minecraft:jungle_sapling",
+        "id": -827
+    },
+    {
+        "name": "minecraft:jungle_sign",
+        "id": 611
+    },
+    {
+        "name": "minecraft:jungle_slab",
+        "id": -806
+    },
+    {
+        "name": "minecraft:jungle_stairs",
+        "id": 136
+    },
+    {
+        "name": "minecraft:jungle_standing_sign",
+        "id": -188
+    },
+    {
+        "name": "minecraft:jungle_trapdoor",
+        "id": -148
+    },
+    {
+        "name": "minecraft:jungle_wall_sign",
+        "id": -189
+    },
+    {
+        "name": "minecraft:jungle_wood",
+        "id": -816
+    },
+    {
+        "name": "minecraft:kelp",
+        "id": 408
+    },
+    {
+        "name": "minecraft:lab_table",
+        "id": -988
+    },
+    {
+        "name": "minecraft:ladder",
+        "id": 65
+    },
+    {
+        "name": "minecraft:lantern",
+        "id": -208
+    },
+    {
+        "name": "minecraft:lapis_block",
+        "id": 22
+    },
+    {
+        "name": "minecraft:lapis_lazuli",
+        "id": 440
+    },
+    {
+        "name": "minecraft:lapis_ore",
+        "id": 21
+    },
+    {
+        "name": "minecraft:large_amethyst_bud",
+        "id": -330
+    },
+    {
+        "name": "minecraft:large_fern",
+        "id": -865
+    },
+    {
+        "name": "minecraft:lava",
+        "id": 11
+    },
+    {
+        "name": "minecraft:lava_bucket",
+        "id": 388
+    },
+    {
+        "name": "minecraft:lead",
+        "id": 580
+    },
+    {
+        "name": "minecraft:leather",
+        "id": 407
+    },
+    {
+        "name": "minecraft:leather_boots",
+        "id": 363
+    },
+    {
+        "name": "minecraft:leather_chestplate",
+        "id": 361
+    },
+    {
+        "name": "minecraft:leather_helmet",
+        "id": 360
+    },
+    {
+        "name": "minecraft:leather_horse_armor",
+        "id": 563
+    },
+    {
+        "name": "minecraft:leather_leggings",
+        "id": 362
+    },
+    {
+        "name": "minecraft:leaves",
+        "id": 760
+    },
+    {
+        "name": "minecraft:leaves2",
+        "id": 761
+    },
+    {
+        "name": "minecraft:lectern",
+        "id": -194
+    },
+    {
+        "name": "minecraft:lever",
+        "id": 69
+    },
+    {
+        "name": "minecraft:light_block",
+        "id": 784
+    },
+    {
+        "name": "minecraft:light_block_0",
+        "id": -215
+    },
+    {
+        "name": "minecraft:light_block_1",
+        "id": -929
+    },
+    {
+        "name": "minecraft:light_block_10",
+        "id": -938
+    },
+    {
+        "name": "minecraft:light_block_11",
+        "id": -939
+    },
+    {
+        "name": "minecraft:light_block_12",
+        "id": -940
+    },
+    {
+        "name": "minecraft:light_block_13",
+        "id": -941
+    },
+    {
+        "name": "minecraft:light_block_14",
+        "id": -942
+    },
+    {
+        "name": "minecraft:light_block_15",
+        "id": -943
+    },
+    {
+        "name": "minecraft:light_block_2",
+        "id": -930
+    },
+    {
+        "name": "minecraft:light_block_3",
+        "id": -931
+    },
+    {
+        "name": "minecraft:light_block_4",
+        "id": -932
+    },
+    {
+        "name": "minecraft:light_block_5",
+        "id": -933
+    },
+    {
+        "name": "minecraft:light_block_6",
+        "id": -934
+    },
+    {
+        "name": "minecraft:light_block_7",
+        "id": -935
+    },
+    {
+        "name": "minecraft:light_block_8",
+        "id": -936
+    },
+    {
+        "name": "minecraft:light_block_9",
+        "id": -937
+    },
+    {
+        "name": "minecraft:light_blue_bundle",
+        "id": 264
+    },
+    {
+        "name": "minecraft:light_blue_candle",
+        "id": -416
+    },
+    {
+        "name": "minecraft:light_blue_candle_cake",
+        "id": -433
+    },
+    {
+        "name": "minecraft:light_blue_carpet",
+        "id": -599
+    },
+    {
+        "name": "minecraft:light_blue_concrete",
+        "id": -630
+    },
+    {
+        "name": "minecraft:light_blue_concrete_powder",
+        "id": -711
+    },
+    {
+        "name": "minecraft:light_blue_dye",
+        "id": 433
+    },
+    {
+        "name": "minecraft:light_blue_glazed_terracotta",
+        "id": 223
+    },
+    {
+        "name": "minecraft:light_blue_shulker_box",
+        "id": -615
+    },
+    {
+        "name": "minecraft:light_blue_stained_glass",
+        "id": -675
+    },
+    {
+        "name": "minecraft:light_blue_stained_glass_pane",
+        "id": -645
+    },
+    {
+        "name": "minecraft:light_blue_terracotta",
+        "id": -726
+    },
+    {
+        "name": "minecraft:light_blue_wool",
+        "id": -562
+    },
+    {
+        "name": "minecraft:light_gray_bundle",
+        "id": 265
+    },
+    {
+        "name": "minecraft:light_gray_candle",
+        "id": -421
+    },
+    {
+        "name": "minecraft:light_gray_candle_cake",
+        "id": -438
+    },
+    {
+        "name": "minecraft:light_gray_carpet",
+        "id": -604
+    },
+    {
+        "name": "minecraft:light_gray_concrete",
+        "id": -635
+    },
+    {
+        "name": "minecraft:light_gray_concrete_powder",
+        "id": -716
+    },
+    {
+        "name": "minecraft:light_gray_dye",
+        "id": 428
+    },
+    {
+        "name": "minecraft:light_gray_shulker_box",
+        "id": -620
+    },
+    {
+        "name": "minecraft:light_gray_stained_glass",
+        "id": -680
+    },
+    {
+        "name": "minecraft:light_gray_stained_glass_pane",
+        "id": -650
+    },
+    {
+        "name": "minecraft:light_gray_terracotta",
+        "id": -731
+    },
+    {
+        "name": "minecraft:light_gray_wool",
+        "id": -552
+    },
+    {
+        "name": "minecraft:light_weighted_pressure_plate",
+        "id": 147
+    },
+    {
+        "name": "minecraft:lightning_rod",
+        "id": -312
+    },
+    {
+        "name": "minecraft:lilac",
+        "id": -863
+    },
+    {
+        "name": "minecraft:lily_of_the_valley",
+        "id": -839
+    },
+    {
+        "name": "minecraft:lime_bundle",
+        "id": 266
+    },
+    {
+        "name": "minecraft:lime_candle",
+        "id": -418
+    },
+    {
+        "name": "minecraft:lime_candle_cake",
+        "id": -435
+    },
+    {
+        "name": "minecraft:lime_carpet",
+        "id": -601
+    },
+    {
+        "name": "minecraft:lime_concrete",
+        "id": -632
+    },
+    {
+        "name": "minecraft:lime_concrete_powder",
+        "id": -713
+    },
+    {
+        "name": "minecraft:lime_dye",
+        "id": 431
+    },
+    {
+        "name": "minecraft:lime_glazed_terracotta",
+        "id": 225
+    },
+    {
+        "name": "minecraft:lime_shulker_box",
+        "id": -617
+    },
+    {
+        "name": "minecraft:lime_stained_glass",
+        "id": -677
+    },
+    {
+        "name": "minecraft:lime_stained_glass_pane",
+        "id": -647
+    },
+    {
+        "name": "minecraft:lime_terracotta",
+        "id": -728
+    },
+    {
+        "name": "minecraft:lime_wool",
+        "id": -559
+    },
+    {
+        "name": "minecraft:lingering_potion",
+        "id": 595
+    },
+    {
+        "name": "minecraft:lit_blast_furnace",
+        "id": -214
+    },
+    {
+        "name": "minecraft:lit_deepslate_redstone_ore",
+        "id": -404
+    },
+    {
+        "name": "minecraft:lit_furnace",
+        "id": 62
+    },
+    {
+        "name": "minecraft:lit_pumpkin",
+        "id": 91
+    },
+    {
+        "name": "minecraft:lit_redstone_lamp",
+        "id": 124
+    },
+    {
+        "name": "minecraft:lit_redstone_ore",
+        "id": 74
+    },
+    {
+        "name": "minecraft:lit_smoker",
+        "id": -199
+    },
+    {
+        "name": "minecraft:llama_spawn_egg",
+        "id": 501
+    },
+    {
+        "name": "minecraft:lodestone",
+        "id": -222
+    },
+    {
+        "name": "minecraft:lodestone_compass",
+        "id": 638
+    },
+    {
+        "name": "minecraft:log",
+        "id": 745
+    },
+    {
+        "name": "minecraft:log2",
+        "id": 768
+    },
+    {
+        "name": "minecraft:loom",
+        "id": -204
+    },
+    {
+        "name": "minecraft:mace",
+        "id": 344
+    },
+    {
+        "name": "minecraft:magenta_bundle",
+        "id": 267
+    },
+    {
+        "name": "minecraft:magenta_candle",
+        "id": -415
+    },
+    {
+        "name": "minecraft:magenta_candle_cake",
+        "id": -432
+    },
+    {
+        "name": "minecraft:magenta_carpet",
+        "id": -598
+    },
+    {
+        "name": "minecraft:magenta_concrete",
+        "id": -629
+    },
+    {
+        "name": "minecraft:magenta_concrete_powder",
+        "id": -710
+    },
+    {
+        "name": "minecraft:magenta_dye",
+        "id": 434
+    },
+    {
+        "name": "minecraft:magenta_glazed_terracotta",
+        "id": 222
+    },
+    {
+        "name": "minecraft:magenta_shulker_box",
+        "id": -614
+    },
+    {
+        "name": "minecraft:magenta_stained_glass",
+        "id": -674
+    },
+    {
+        "name": "minecraft:magenta_stained_glass_pane",
+        "id": -644
+    },
+    {
+        "name": "minecraft:magenta_terracotta",
+        "id": -725
+    },
+    {
+        "name": "minecraft:magenta_wool",
+        "id": -565
+    },
+    {
+        "name": "minecraft:magma",
+        "id": 213
+    },
+    {
+        "name": "minecraft:magma_cream",
+        "id": 457
+    },
+    {
+        "name": "minecraft:magma_cube_spawn_egg",
+        "id": 482
+    },
+    {
+        "name": "minecraft:mangrove_boat",
+        "id": 671
+    },
+    {
+        "name": "minecraft:mangrove_button",
+        "id": -487
+    },
+    {
+        "name": "minecraft:mangrove_chest_boat",
+        "id": 680
+    },
+    {
+        "name": "minecraft:mangrove_door",
+        "id": 669
+    },
+    {
+        "name": "minecraft:mangrove_double_slab",
+        "id": -499
+    },
+    {
+        "name": "minecraft:mangrove_fence",
+        "id": -491
+    },
+    {
+        "name": "minecraft:mangrove_fence_gate",
+        "id": -492
+    },
+    {
+        "name": "minecraft:mangrove_hanging_sign",
+        "id": -508
+    },
+    {
+        "name": "minecraft:mangrove_leaves",
+        "id": -472
+    },
+    {
+        "name": "minecraft:mangrove_log",
+        "id": -484
+    },
+    {
+        "name": "minecraft:mangrove_planks",
+        "id": -486
+    },
+    {
+        "name": "minecraft:mangrove_pressure_plate",
+        "id": -490
+    },
+    {
+        "name": "minecraft:mangrove_propagule",
+        "id": -474
+    },
+    {
+        "name": "minecraft:mangrove_roots",
+        "id": -482
+    },
+    {
+        "name": "minecraft:mangrove_sign",
+        "id": 670
+    },
+    {
+        "name": "minecraft:mangrove_slab",
+        "id": -489
+    },
+    {
+        "name": "minecraft:mangrove_stairs",
+        "id": -488
+    },
+    {
+        "name": "minecraft:mangrove_standing_sign",
+        "id": -494
+    },
+    {
+        "name": "minecraft:mangrove_trapdoor",
+        "id": -496
+    },
+    {
+        "name": "minecraft:mangrove_wall_sign",
+        "id": -495
+    },
+    {
+        "name": "minecraft:mangrove_wood",
+        "id": -497
+    },
+    {
+        "name": "minecraft:material_reducer",
+        "id": -986
+    },
+    {
+        "name": "minecraft:medicine",
+        "id": 635
+    },
+    {
+        "name": "minecraft:medium_amethyst_bud",
+        "id": -331
+    },
+    {
+        "name": "minecraft:melon_block",
+        "id": 103
+    },
+    {
+        "name": "minecraft:melon_seeds",
+        "id": 315
+    },
+    {
+        "name": "minecraft:melon_slice",
+        "id": 294
+    },
+    {
+        "name": "minecraft:melon_stem",
+        "id": 105
+    },
+    {
+        "name": "minecraft:milk_bucket",
+        "id": 386
+    },
+    {
+        "name": "minecraft:minecart",
+        "id": 395
+    },
+    {
+        "name": "minecraft:miner_pottery_sherd",
+        "id": 706
+    },
+    {
+        "name": "minecraft:mob_spawner",
+        "id": 52
+    },
+    {
+        "name": "minecraft:mojang_banner_pattern",
+        "id": 617
+    },
+    {
+        "name": "minecraft:monster_egg",
+        "id": 769
+    },
+    {
+        "name": "minecraft:mooshroom_spawn_egg",
+        "id": 467
+    },
+    {
+        "name": "minecraft:moss_block",
+        "id": -320
+    },
+    {
+        "name": "minecraft:moss_carpet",
+        "id": -335
+    },
+    {
+        "name": "minecraft:mossy_cobblestone",
+        "id": 48
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_double_slab",
+        "id": -915
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_slab",
+        "id": -888
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_stairs",
+        "id": -179
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_wall",
+        "id": -971
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_double_slab",
+        "id": -168
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_slab",
+        "id": -166
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_stairs",
+        "id": -175
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_wall",
+        "id": -978
+    },
+    {
+        "name": "minecraft:mossy_stone_bricks",
+        "id": -868
+    },
+    {
+        "name": "minecraft:mourner_pottery_sherd",
+        "id": 707
+    },
+    {
+        "name": "minecraft:moving_block",
+        "id": 250
+    },
+    {
+        "name": "minecraft:mud",
+        "id": -473
+    },
+    {
+        "name": "minecraft:mud_brick_double_slab",
+        "id": -479
+    },
+    {
+        "name": "minecraft:mud_brick_slab",
+        "id": -478
+    },
+    {
+        "name": "minecraft:mud_brick_stairs",
+        "id": -480
+    },
+    {
+        "name": "minecraft:mud_brick_wall",
+        "id": -481
+    },
+    {
+        "name": "minecraft:mud_bricks",
+        "id": -475
+    },
+    {
+        "name": "minecraft:muddy_mangrove_roots",
+        "id": -483
+    },
+    {
+        "name": "minecraft:mule_spawn_egg",
+        "id": 494
+    },
+    {
+        "name": "minecraft:mushroom_stem",
+        "id": -1008
+    },
+    {
+        "name": "minecraft:mushroom_stew",
+        "id": 282
+    },
+    {
+        "name": "minecraft:music_disc_11",
+        "id": 577
+    },
+    {
+        "name": "minecraft:music_disc_13",
+        "id": 567
+    },
+    {
+        "name": "minecraft:music_disc_5",
+        "id": 672
+    },
+    {
+        "name": "minecraft:music_disc_blocks",
+        "id": 569
+    },
+    {
+        "name": "minecraft:music_disc_cat",
+        "id": 568
+    },
+    {
+        "name": "minecraft:music_disc_chirp",
+        "id": 570
+    },
+    {
+        "name": "minecraft:music_disc_creator",
+        "id": 776
+    },
+    {
+        "name": "minecraft:music_disc_creator_music_box",
+        "id": 777
+    },
+    {
+        "name": "minecraft:music_disc_far",
+        "id": 571
+    },
+    {
+        "name": "minecraft:music_disc_mall",
+        "id": 572
+    },
+    {
+        "name": "minecraft:music_disc_mellohi",
+        "id": 573
+    },
+    {
+        "name": "minecraft:music_disc_otherside",
+        "id": 662
+    },
+    {
+        "name": "minecraft:music_disc_pigstep",
+        "id": 656
+    },
+    {
+        "name": "minecraft:music_disc_precipice",
+        "id": 778
+    },
+    {
+        "name": "minecraft:music_disc_relic",
+        "id": 735
+    },
+    {
+        "name": "minecraft:music_disc_stal",
+        "id": 574
+    },
+    {
+        "name": "minecraft:music_disc_strad",
+        "id": 575
+    },
+    {
+        "name": "minecraft:music_disc_wait",
+        "id": 578
+    },
+    {
+        "name": "minecraft:music_disc_ward",
+        "id": 576
+    },
+    {
+        "name": "minecraft:mutton",
+        "id": 583
+    },
+    {
+        "name": "minecraft:mycelium",
+        "id": 110
+    },
+    {
+        "name": "minecraft:name_tag",
+        "id": 581
+    },
+    {
+        "name": "minecraft:nautilus_shell",
+        "id": 603
+    },
+    {
+        "name": "minecraft:nether_brick",
+        "id": 112
+    },
+    {
+        "name": "minecraft:nether_brick_double_slab",
+        "id": -883
+    },
+    {
+        "name": "minecraft:nether_brick_fence",
+        "id": 113
+    },
+    {
+        "name": "minecraft:nether_brick_slab",
+        "id": -877
+    },
+    {
+        "name": "minecraft:nether_brick_stairs",
+        "id": 114
+    },
+    {
+        "name": "minecraft:nether_brick_wall",
+        "id": -979
+    },
+    {
+        "name": "minecraft:nether_gold_ore",
+        "id": -288
+    },
+    {
+        "name": "minecraft:nether_sprouts",
+        "id": 657
+    },
+    {
+        "name": "minecraft:nether_star",
+        "id": 551
+    },
+    {
+        "name": "minecraft:nether_wart",
+        "id": 316
+    },
+    {
+        "name": "minecraft:nether_wart_block",
+        "id": 214
+    },
+    {
+        "name": "minecraft:netherbrick",
+        "id": 556
+    },
+    {
+        "name": "minecraft:netherite_axe",
+        "id": 642
+    },
+    {
+        "name": "minecraft:netherite_block",
+        "id": -270
+    },
+    {
+        "name": "minecraft:netherite_boots",
+        "id": 648
+    },
+    {
+        "name": "minecraft:netherite_chestplate",
+        "id": 646
+    },
+    {
+        "name": "minecraft:netherite_helmet",
+        "id": 645
+    },
+    {
+        "name": "minecraft:netherite_hoe",
+        "id": 643
+    },
+    {
+        "name": "minecraft:netherite_ingot",
+        "id": 644
+    },
+    {
+        "name": "minecraft:netherite_leggings",
+        "id": 647
+    },
+    {
+        "name": "minecraft:netherite_pickaxe",
+        "id": 641
+    },
+    {
+        "name": "minecraft:netherite_scrap",
+        "id": 649
+    },
+    {
+        "name": "minecraft:netherite_shovel",
+        "id": 640
+    },
+    {
+        "name": "minecraft:netherite_sword",
+        "id": 639
+    },
+    {
+        "name": "minecraft:netherite_upgrade_smithing_template",
+        "id": 716
+    },
+    {
+        "name": "minecraft:netherrack",
+        "id": 87
+    },
+    {
+        "name": "minecraft:netherreactor",
+        "id": 247
+    },
+    {
+        "name": "minecraft:normal_stone_double_slab",
+        "id": -926
+    },
+    {
+        "name": "minecraft:normal_stone_slab",
+        "id": -899
+    },
+    {
+        "name": "minecraft:normal_stone_stairs",
+        "id": -180
+    },
+    {
+        "name": "minecraft:noteblock",
+        "id": 25
+    },
+    {
+        "name": "minecraft:npc_spawn_egg",
+        "id": 498
+    },
+    {
+        "name": "minecraft:oak_boat",
+        "id": 401
+    },
+    {
+        "name": "minecraft:oak_chest_boat",
+        "id": 674
+    },
+    {
+        "name": "minecraft:oak_double_slab",
+        "id": 157
+    },
+    {
+        "name": "minecraft:oak_fence",
+        "id": 85
+    },
+    {
+        "name": "minecraft:oak_hanging_sign",
+        "id": -500
+    },
+    {
+        "name": "minecraft:oak_leaves",
+        "id": 18
+    },
+    {
+        "name": "minecraft:oak_log",
+        "id": 17
+    },
+    {
+        "name": "minecraft:oak_planks",
+        "id": 5
+    },
+    {
+        "name": "minecraft:oak_sapling",
+        "id": 6
+    },
+    {
+        "name": "minecraft:oak_sign",
+        "id": 383
+    },
+    {
+        "name": "minecraft:oak_slab",
+        "id": 158
+    },
+    {
+        "name": "minecraft:oak_stairs",
+        "id": 53
+    },
+    {
+        "name": "minecraft:oak_wood",
+        "id": -212
+    },
+    {
+        "name": "minecraft:observer",
+        "id": 251
+    },
+    {
+        "name": "minecraft:obsidian",
+        "id": 49
+    },
+    {
+        "name": "minecraft:ocelot_spawn_egg",
+        "id": 478
+    },
+    {
+        "name": "minecraft:ochre_froglight",
+        "id": -471
+    },
+    {
+        "name": "minecraft:ominous_bottle",
+        "id": 628
+    },
+    {
+        "name": "minecraft:ominous_trial_key",
+        "id": 275
+    },
+    {
+        "name": "minecraft:orange_bundle",
+        "id": 268
+    },
+    {
+        "name": "minecraft:orange_candle",
+        "id": -414
+    },
+    {
+        "name": "minecraft:orange_candle_cake",
+        "id": -431
+    },
+    {
+        "name": "minecraft:orange_carpet",
+        "id": -597
+    },
+    {
+        "name": "minecraft:orange_concrete",
+        "id": -628
+    },
+    {
+        "name": "minecraft:orange_concrete_powder",
+        "id": -709
+    },
+    {
+        "name": "minecraft:orange_dye",
+        "id": 435
+    },
+    {
+        "name": "minecraft:orange_glazed_terracotta",
+        "id": 221
+    },
+    {
+        "name": "minecraft:orange_shulker_box",
+        "id": -613
+    },
+    {
+        "name": "minecraft:orange_stained_glass",
+        "id": -673
+    },
+    {
+        "name": "minecraft:orange_stained_glass_pane",
+        "id": -643
+    },
+    {
+        "name": "minecraft:orange_terracotta",
+        "id": -724
+    },
+    {
+        "name": "minecraft:orange_tulip",
+        "id": -834
+    },
+    {
+        "name": "minecraft:orange_wool",
+        "id": -557
+    },
+    {
+        "name": "minecraft:oxeye_daisy",
+        "id": -837
+    },
+    {
+        "name": "minecraft:oxidized_chiseled_copper",
+        "id": -763
+    },
+    {
+        "name": "minecraft:oxidized_copper",
+        "id": -343
+    },
+    {
+        "name": "minecraft:oxidized_copper_bulb",
+        "id": -779
+    },
+    {
+        "name": "minecraft:oxidized_copper_door",
+        "id": -787
+    },
+    {
+        "name": "minecraft:oxidized_copper_grate",
+        "id": -771
+    },
+    {
+        "name": "minecraft:oxidized_copper_trapdoor",
+        "id": -795
+    },
+    {
+        "name": "minecraft:oxidized_cut_copper",
+        "id": -350
+    },
+    {
+        "name": "minecraft:oxidized_cut_copper_slab",
+        "id": -364
+    },
+    {
+        "name": "minecraft:oxidized_cut_copper_stairs",
+        "id": -357
+    },
+    {
+        "name": "minecraft:oxidized_double_cut_copper_slab",
+        "id": -371
+    },
+    {
+        "name": "minecraft:packed_ice",
+        "id": 174
+    },
+    {
+        "name": "minecraft:packed_mud",
+        "id": -477
+    },
+    {
+        "name": "minecraft:painting",
+        "id": 382
+    },
+    {
+        "name": "minecraft:panda_spawn_egg",
+        "id": 517
+    },
+    {
+        "name": "minecraft:paper",
+        "id": 412
+    },
+    {
+        "name": "minecraft:parrot_spawn_egg",
+        "id": 506
+    },
+    {
+        "name": "minecraft:pearlescent_froglight",
+        "id": -469
+    },
+    {
+        "name": "minecraft:peony",
+        "id": -867
+    },
+    {
+        "name": "minecraft:petrified_oak_double_slab",
+        "id": -903
+    },
+    {
+        "name": "minecraft:petrified_oak_slab",
+        "id": -902
+    },
+    {
+        "name": "minecraft:phantom_membrane",
+        "id": 607
+    },
+    {
+        "name": "minecraft:phantom_spawn_egg",
+        "id": 514
+    },
+    {
+        "name": "minecraft:pig_spawn_egg",
+        "id": 464
+    },
+    {
+        "name": "minecraft:piglin_banner_pattern",
+        "id": 620
+    },
+    {
+        "name": "minecraft:piglin_brute_spawn_egg",
+        "id": 527
+    },
+    {
+        "name": "minecraft:piglin_head",
+        "id": -970
+    },
+    {
+        "name": "minecraft:piglin_spawn_egg",
+        "id": 525
+    },
+    {
+        "name": "minecraft:pillager_spawn_egg",
+        "id": 519
+    },
+    {
+        "name": "minecraft:pink_bundle",
+        "id": 269
+    },
+    {
+        "name": "minecraft:pink_candle",
+        "id": -419
+    },
+    {
+        "name": "minecraft:pink_candle_cake",
+        "id": -436
+    },
+    {
+        "name": "minecraft:pink_carpet",
+        "id": -602
+    },
+    {
+        "name": "minecraft:pink_concrete",
+        "id": -633
+    },
+    {
+        "name": "minecraft:pink_concrete_powder",
+        "id": -714
+    },
+    {
+        "name": "minecraft:pink_dye",
+        "id": 430
+    },
+    {
+        "name": "minecraft:pink_glazed_terracotta",
+        "id": 226
+    },
+    {
+        "name": "minecraft:pink_petals",
+        "id": -549
+    },
+    {
+        "name": "minecraft:pink_shulker_box",
+        "id": -618
+    },
+    {
+        "name": "minecraft:pink_stained_glass",
+        "id": -678
+    },
+    {
+        "name": "minecraft:pink_stained_glass_pane",
+        "id": -648
+    },
+    {
+        "name": "minecraft:pink_terracotta",
+        "id": -729
+    },
+    {
+        "name": "minecraft:pink_tulip",
+        "id": -836
+    },
+    {
+        "name": "minecraft:pink_wool",
+        "id": -566
+    },
+    {
+        "name": "minecraft:piston",
+        "id": 33
+    },
+    {
+        "name": "minecraft:piston_arm_collision",
+        "id": 34
+    },
+    {
+        "name": "minecraft:pitcher_crop",
+        "id": -574
+    },
+    {
+        "name": "minecraft:pitcher_plant",
+        "id": -612
+    },
+    {
+        "name": "minecraft:pitcher_pod",
+        "id": 319
+    },
+    {
+        "name": "minecraft:planks",
+        "id": 765
+    },
+    {
+        "name": "minecraft:player_head",
+        "id": -967
+    },
+    {
+        "name": "minecraft:plenty_pottery_sherd",
+        "id": 708
+    },
+    {
+        "name": "minecraft:podzol",
+        "id": 243
+    },
+    {
+        "name": "minecraft:pointed_dripstone",
+        "id": -308
+    },
+    {
+        "name": "minecraft:poisonous_potato",
+        "id": 304
+    },
+    {
+        "name": "minecraft:polar_bear_spawn_egg",
+        "id": 500
+    },
+    {
+        "name": "minecraft:polished_andesite",
+        "id": -595
+    },
+    {
+        "name": "minecraft:polished_andesite_double_slab",
+        "id": -919
+    },
+    {
+        "name": "minecraft:polished_andesite_slab",
+        "id": -892
+    },
+    {
+        "name": "minecraft:polished_andesite_stairs",
+        "id": -174
+    },
+    {
+        "name": "minecraft:polished_basalt",
+        "id": -235
+    },
+    {
+        "name": "minecraft:polished_blackstone",
+        "id": -291
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_double_slab",
+        "id": -285
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_slab",
+        "id": -284
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_stairs",
+        "id": -275
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_wall",
+        "id": -278
+    },
+    {
+        "name": "minecraft:polished_blackstone_bricks",
+        "id": -274
+    },
+    {
+        "name": "minecraft:polished_blackstone_button",
+        "id": -296
+    },
+    {
+        "name": "minecraft:polished_blackstone_double_slab",
+        "id": -294
+    },
+    {
+        "name": "minecraft:polished_blackstone_pressure_plate",
+        "id": -295
+    },
+    {
+        "name": "minecraft:polished_blackstone_slab",
+        "id": -293
+    },
+    {
+        "name": "minecraft:polished_blackstone_stairs",
+        "id": -292
+    },
+    {
+        "name": "minecraft:polished_blackstone_wall",
+        "id": -297
+    },
+    {
+        "name": "minecraft:polished_deepslate",
+        "id": -383
+    },
+    {
+        "name": "minecraft:polished_deepslate_double_slab",
+        "id": -397
+    },
+    {
+        "name": "minecraft:polished_deepslate_slab",
+        "id": -384
+    },
+    {
+        "name": "minecraft:polished_deepslate_stairs",
+        "id": -385
+    },
+    {
+        "name": "minecraft:polished_deepslate_wall",
+        "id": -386
+    },
+    {
+        "name": "minecraft:polished_diorite",
+        "id": -593
+    },
+    {
+        "name": "minecraft:polished_diorite_double_slab",
+        "id": -922
+    },
+    {
+        "name": "minecraft:polished_diorite_slab",
+        "id": -895
+    },
+    {
+        "name": "minecraft:polished_diorite_stairs",
+        "id": -173
+    },
+    {
+        "name": "minecraft:polished_granite",
+        "id": -591
+    },
+    {
+        "name": "minecraft:polished_granite_double_slab",
+        "id": -924
+    },
+    {
+        "name": "minecraft:polished_granite_slab",
+        "id": -897
+    },
+    {
+        "name": "minecraft:polished_granite_stairs",
+        "id": -172
+    },
+    {
+        "name": "minecraft:polished_tuff",
+        "id": -748
+    },
+    {
+        "name": "minecraft:polished_tuff_double_slab",
+        "id": -750
+    },
+    {
+        "name": "minecraft:polished_tuff_slab",
+        "id": -749
+    },
+    {
+        "name": "minecraft:polished_tuff_stairs",
+        "id": -751
+    },
+    {
+        "name": "minecraft:polished_tuff_wall",
+        "id": -752
+    },
+    {
+        "name": "minecraft:popped_chorus_fruit",
+        "id": 592
+    },
+    {
+        "name": "minecraft:poppy",
+        "id": 38
+    },
+    {
+        "name": "minecraft:porkchop",
+        "id": 284
+    },
+    {
+        "name": "minecraft:portal",
+        "id": 90
+    },
+    {
+        "name": "minecraft:potato",
+        "id": 302
+    },
+    {
+        "name": "minecraft:potatoes",
+        "id": 142
+    },
+    {
+        "name": "minecraft:potion",
+        "id": 453
+    },
+    {
+        "name": "minecraft:powder_snow",
+        "id": -306
+    },
+    {
+        "name": "minecraft:powder_snow_bucket",
+        "id": 393
+    },
+    {
+        "name": "minecraft:powered_comparator",
+        "id": 150
+    },
+    {
+        "name": "minecraft:powered_repeater",
+        "id": 94
+    },
+    {
+        "name": "minecraft:prismarine",
+        "id": 168
+    },
+    {
+        "name": "minecraft:prismarine_brick_double_slab",
+        "id": -914
+    },
+    {
+        "name": "minecraft:prismarine_brick_slab",
+        "id": -887
+    },
+    {
+        "name": "minecraft:prismarine_bricks",
+        "id": -948
+    },
+    {
+        "name": "minecraft:prismarine_bricks_stairs",
+        "id": -4
+    },
+    {
+        "name": "minecraft:prismarine_crystals",
+        "id": 582
+    },
+    {
+        "name": "minecraft:prismarine_double_slab",
+        "id": -912
+    },
+    {
+        "name": "minecraft:prismarine_shard",
+        "id": 598
+    },
+    {
+        "name": "minecraft:prismarine_slab",
+        "id": -885
+    },
+    {
+        "name": "minecraft:prismarine_stairs",
+        "id": -2
+    },
+    {
+        "name": "minecraft:prismarine_wall",
+        "id": -981
+    },
+    {
+        "name": "minecraft:prize_pottery_sherd",
+        "id": 709
+    },
+    {
+        "name": "minecraft:pufferfish",
+        "id": 289
+    },
+    {
+        "name": "minecraft:pufferfish_bucket",
+        "id": 392
+    },
+    {
+        "name": "minecraft:pufferfish_spawn_egg",
+        "id": 509
+    },
+    {
+        "name": "minecraft:pumpkin",
+        "id": 86
+    },
+    {
+        "name": "minecraft:pumpkin_pie",
+        "id": 306
+    },
+    {
+        "name": "minecraft:pumpkin_seeds",
+        "id": 314
+    },
+    {
+        "name": "minecraft:pumpkin_stem",
+        "id": 104
+    },
+    {
+        "name": "minecraft:purple_bundle",
+        "id": 270
+    },
+    {
+        "name": "minecraft:purple_candle",
+        "id": -423
+    },
+    {
+        "name": "minecraft:purple_candle_cake",
+        "id": -440
+    },
+    {
+        "name": "minecraft:purple_carpet",
+        "id": -606
+    },
+    {
+        "name": "minecraft:purple_concrete",
+        "id": -637
+    },
+    {
+        "name": "minecraft:purple_concrete_powder",
+        "id": -718
+    },
+    {
+        "name": "minecraft:purple_dye",
+        "id": 426
+    },
+    {
+        "name": "minecraft:purple_glazed_terracotta",
+        "id": 219
+    },
+    {
+        "name": "minecraft:purple_shulker_box",
+        "id": -622
+    },
+    {
+        "name": "minecraft:purple_stained_glass",
+        "id": -682
+    },
+    {
+        "name": "minecraft:purple_stained_glass_pane",
+        "id": -652
+    },
+    {
+        "name": "minecraft:purple_terracotta",
+        "id": -733
+    },
+    {
+        "name": "minecraft:purple_wool",
+        "id": -564
+    },
+    {
+        "name": "minecraft:purpur_block",
+        "id": 201
+    },
+    {
+        "name": "minecraft:purpur_double_slab",
+        "id": -911
+    },
+    {
+        "name": "minecraft:purpur_pillar",
+        "id": -951
+    },
+    {
+        "name": "minecraft:purpur_slab",
+        "id": -884
+    },
+    {
+        "name": "minecraft:purpur_stairs",
+        "id": 203
+    },
+    {
+        "name": "minecraft:quartz",
+        "id": 557
+    },
+    {
+        "name": "minecraft:quartz_block",
+        "id": 155
+    },
+    {
+        "name": "minecraft:quartz_bricks",
+        "id": -304
+    },
+    {
+        "name": "minecraft:quartz_double_slab",
+        "id": -882
+    },
+    {
+        "name": "minecraft:quartz_ore",
+        "id": 153
+    },
+    {
+        "name": "minecraft:quartz_pillar",
+        "id": -954
+    },
+    {
+        "name": "minecraft:quartz_slab",
+        "id": -876
+    },
+    {
+        "name": "minecraft:quartz_stairs",
+        "id": 156
+    },
+    {
+        "name": "minecraft:rabbit",
+        "id": 310
+    },
+    {
+        "name": "minecraft:rabbit_foot",
+        "id": 561
+    },
+    {
+        "name": "minecraft:rabbit_hide",
+        "id": 562
+    },
+    {
+        "name": "minecraft:rabbit_spawn_egg",
+        "id": 486
+    },
+    {
+        "name": "minecraft:rabbit_stew",
+        "id": 312
+    },
+    {
+        "name": "minecraft:rail",
+        "id": 66
+    },
+    {
+        "name": "minecraft:raiser_armor_trim_smithing_template",
+        "id": 730
+    },
+    {
+        "name": "minecraft:rapid_fertilizer",
+        "id": 633
+    },
+    {
+        "name": "minecraft:ravager_spawn_egg",
+        "id": 521
+    },
+    {
+        "name": "minecraft:raw_copper",
+        "id": 541
+    },
+    {
+        "name": "minecraft:raw_copper_block",
+        "id": -452
+    },
+    {
+        "name": "minecraft:raw_gold",
+        "id": 540
+    },
+    {
+        "name": "minecraft:raw_gold_block",
+        "id": -453
+    },
+    {
+        "name": "minecraft:raw_iron",
+        "id": 539
+    },
+    {
+        "name": "minecraft:raw_iron_block",
+        "id": -451
+    },
+    {
+        "name": "minecraft:recovery_compass",
+        "id": 682
+    },
+    {
+        "name": "minecraft:red_bundle",
+        "id": 271
+    },
+    {
+        "name": "minecraft:red_candle",
+        "id": -427
+    },
+    {
+        "name": "minecraft:red_candle_cake",
+        "id": -444
+    },
+    {
+        "name": "minecraft:red_carpet",
+        "id": -610
+    },
+    {
+        "name": "minecraft:red_concrete",
+        "id": -641
+    },
+    {
+        "name": "minecraft:red_concrete_powder",
+        "id": -722
+    },
+    {
+        "name": "minecraft:red_dye",
+        "id": 422
+    },
+    {
+        "name": "minecraft:red_flower",
+        "id": 763
+    },
+    {
+        "name": "minecraft:red_glazed_terracotta",
+        "id": 234
+    },
+    {
+        "name": "minecraft:red_mushroom",
+        "id": 40
+    },
+    {
+        "name": "minecraft:red_mushroom_block",
+        "id": 100
+    },
+    {
+        "name": "minecraft:red_nether_brick",
+        "id": 215
+    },
+    {
+        "name": "minecraft:red_nether_brick_double_slab",
+        "id": -917
+    },
+    {
+        "name": "minecraft:red_nether_brick_slab",
+        "id": -890
+    },
+    {
+        "name": "minecraft:red_nether_brick_stairs",
+        "id": -184
+    },
+    {
+        "name": "minecraft:red_nether_brick_wall",
+        "id": -983
+    },
+    {
+        "name": "minecraft:red_sand",
+        "id": -949
+    },
+    {
+        "name": "minecraft:red_sandstone",
+        "id": 179
+    },
+    {
+        "name": "minecraft:red_sandstone_double_slab",
+        "id": 181
+    },
+    {
+        "name": "minecraft:red_sandstone_slab",
+        "id": 182
+    },
+    {
+        "name": "minecraft:red_sandstone_stairs",
+        "id": 180
+    },
+    {
+        "name": "minecraft:red_sandstone_wall",
+        "id": -982
+    },
+    {
+        "name": "minecraft:red_shulker_box",
+        "id": -626
+    },
+    {
+        "name": "minecraft:red_stained_glass",
+        "id": -686
+    },
+    {
+        "name": "minecraft:red_stained_glass_pane",
+        "id": -656
+    },
+    {
+        "name": "minecraft:red_terracotta",
+        "id": -737
+    },
+    {
+        "name": "minecraft:red_tulip",
+        "id": -833
+    },
+    {
+        "name": "minecraft:red_wool",
+        "id": -556
+    },
+    {
+        "name": "minecraft:redstone",
+        "id": 398
+    },
+    {
+        "name": "minecraft:redstone_block",
+        "id": 152
+    },
+    {
+        "name": "minecraft:redstone_lamp",
+        "id": 123
+    },
+    {
+        "name": "minecraft:redstone_ore",
+        "id": 73
+    },
+    {
+        "name": "minecraft:redstone_torch",
+        "id": 76
+    },
+    {
+        "name": "minecraft:redstone_wire",
+        "id": 55
+    },
+    {
+        "name": "minecraft:reinforced_deepslate",
+        "id": -466
+    },
+    {
+        "name": "minecraft:repeater",
+        "id": 445
+    },
+    {
+        "name": "minecraft:repeating_command_block",
+        "id": 188
+    },
+    {
+        "name": "minecraft:reserved6",
+        "id": 255
+    },
+    {
+        "name": "minecraft:respawn_anchor",
+        "id": -272
+    },
+    {
+        "name": "minecraft:rib_armor_trim_smithing_template",
+        "id": 726
+    },
+    {
+        "name": "minecraft:rose_bush",
+        "id": -866
+    },
+    {
+        "name": "minecraft:rotten_flesh",
+        "id": 299
+    },
+    {
+        "name": "minecraft:saddle",
+        "id": 396
+    },
+    {
+        "name": "minecraft:salmon",
+        "id": 287
+    },
+    {
+        "name": "minecraft:salmon_bucket",
+        "id": 390
+    },
+    {
+        "name": "minecraft:salmon_spawn_egg",
+        "id": 510
+    },
+    {
+        "name": "minecraft:sand",
+        "id": 12
+    },
+    {
+        "name": "minecraft:sandstone",
+        "id": 24
+    },
+    {
+        "name": "minecraft:sandstone_double_slab",
+        "id": -878
+    },
+    {
+        "name": "minecraft:sandstone_slab",
+        "id": -872
+    },
+    {
+        "name": "minecraft:sandstone_stairs",
+        "id": 128
+    },
+    {
+        "name": "minecraft:sandstone_wall",
+        "id": -975
+    },
+    {
+        "name": "minecraft:sapling",
+        "id": 759
+    },
+    {
+        "name": "minecraft:scaffolding",
+        "id": -165
+    },
+    {
+        "name": "minecraft:scrape_pottery_sherd",
+        "id": 710
+    },
+    {
+        "name": "minecraft:sculk",
+        "id": -458
+    },
+    {
+        "name": "minecraft:sculk_catalyst",
+        "id": -460
+    },
+    {
+        "name": "minecraft:sculk_sensor",
+        "id": -307
+    },
+    {
+        "name": "minecraft:sculk_shrieker",
+        "id": -461
+    },
+    {
+        "name": "minecraft:sculk_vein",
+        "id": -459
+    },
+    {
+        "name": "minecraft:sea_lantern",
+        "id": 169
+    },
+    {
+        "name": "minecraft:sea_pickle",
+        "id": -156
+    },
+    {
+        "name": "minecraft:seagrass",
+        "id": -130
+    },
+    {
+        "name": "minecraft:sentry_armor_trim_smithing_template",
+        "id": 717
+    },
+    {
+        "name": "minecraft:shaper_armor_trim_smithing_template",
+        "id": 731
+    },
+    {
+        "name": "minecraft:sheaf_pottery_sherd",
+        "id": 711
+    },
+    {
+        "name": "minecraft:shears",
+        "id": 447
+    },
+    {
+        "name": "minecraft:sheep_spawn_egg",
+        "id": 465
+    },
+    {
+        "name": "minecraft:shelter_pottery_sherd",
+        "id": 712
+    },
+    {
+        "name": "minecraft:shield",
+        "id": 380
+    },
+    {
+        "name": "minecraft:short_grass",
+        "id": 31
+    },
+    {
+        "name": "minecraft:shroomlight",
+        "id": -230
+    },
+    {
+        "name": "minecraft:shulker_box",
+        "id": 774
+    },
+    {
+        "name": "minecraft:shulker_shell",
+        "id": 599
+    },
+    {
+        "name": "minecraft:shulker_spawn_egg",
+        "id": 497
+    },
+    {
+        "name": "minecraft:silence_armor_trim_smithing_template",
+        "id": 728
+    },
+    {
+        "name": "minecraft:silver_glazed_terracotta",
+        "id": 228
+    },
+    {
+        "name": "minecraft:silverfish_spawn_egg",
+        "id": 470
+    },
+    {
+        "name": "minecraft:skeleton_horse_spawn_egg",
+        "id": 495
+    },
+    {
+        "name": "minecraft:skeleton_skull",
+        "id": 144
+    },
+    {
+        "name": "minecraft:skeleton_spawn_egg",
+        "id": 471
+    },
+    {
+        "name": "minecraft:skull",
+        "id": 736
+    },
+    {
+        "name": "minecraft:skull_banner_pattern",
+        "id": 616
+    },
+    {
+        "name": "minecraft:skull_pottery_sherd",
+        "id": 713
+    },
+    {
+        "name": "minecraft:slime",
+        "id": 165
+    },
+    {
+        "name": "minecraft:slime_ball",
+        "id": 414
+    },
+    {
+        "name": "minecraft:slime_spawn_egg",
+        "id": 472
+    },
+    {
+        "name": "minecraft:small_amethyst_bud",
+        "id": -332
+    },
+    {
+        "name": "minecraft:small_dripleaf_block",
+        "id": -336
+    },
+    {
+        "name": "minecraft:smithing_table",
+        "id": -202
+    },
+    {
+        "name": "minecraft:smoker",
+        "id": -198
+    },
+    {
+        "name": "minecraft:smooth_basalt",
+        "id": -377
+    },
+    {
+        "name": "minecraft:smooth_quartz",
+        "id": -955
+    },
+    {
+        "name": "minecraft:smooth_quartz_double_slab",
+        "id": -925
+    },
+    {
+        "name": "minecraft:smooth_quartz_slab",
+        "id": -898
+    },
+    {
+        "name": "minecraft:smooth_quartz_stairs",
+        "id": -185
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone",
+        "id": -958
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone_double_slab",
+        "id": -918
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone_slab",
+        "id": -891
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone_stairs",
+        "id": -176
+    },
+    {
+        "name": "minecraft:smooth_sandstone",
+        "id": -946
+    },
+    {
+        "name": "minecraft:smooth_sandstone_double_slab",
+        "id": -916
+    },
+    {
+        "name": "minecraft:smooth_sandstone_slab",
+        "id": -889
+    },
+    {
+        "name": "minecraft:smooth_sandstone_stairs",
+        "id": -177
+    },
+    {
+        "name": "minecraft:smooth_stone",
+        "id": -183
+    },
+    {
+        "name": "minecraft:smooth_stone_double_slab",
+        "id": 43
+    },
+    {
+        "name": "minecraft:smooth_stone_slab",
+        "id": 44
+    },
+    {
+        "name": "minecraft:sniffer_egg",
+        "id": -596
+    },
+    {
+        "name": "minecraft:sniffer_spawn_egg",
+        "id": 528
+    },
+    {
+        "name": "minecraft:snort_pottery_sherd",
+        "id": 714
+    },
+    {
+        "name": "minecraft:snout_armor_trim_smithing_template",
+        "id": 725
+    },
+    {
+        "name": "minecraft:snow",
+        "id": 80
+    },
+    {
+        "name": "minecraft:snow_golem_spawn_egg",
+        "id": 534
+    },
+    {
+        "name": "minecraft:snow_layer",
+        "id": 78
+    },
+    {
+        "name": "minecraft:snowball",
+        "id": 399
+    },
+    {
+        "name": "minecraft:soul_campfire",
+        "id": 658
+    },
+    {
+        "name": "minecraft:soul_fire",
+        "id": -237
+    },
+    {
+        "name": "minecraft:soul_lantern",
+        "id": -269
+    },
+    {
+        "name": "minecraft:soul_sand",
+        "id": 88
+    },
+    {
+        "name": "minecraft:soul_soil",
+        "id": -236
+    },
+    {
+        "name": "minecraft:soul_torch",
+        "id": -268
+    },
+    {
+        "name": "minecraft:sparkler",
+        "id": 636
+    },
+    {
+        "name": "minecraft:spawn_egg",
+        "id": 788
+    },
+    {
+        "name": "minecraft:spider_eye",
+        "id": 300
+    },
+    {
+        "name": "minecraft:spider_spawn_egg",
+        "id": 473
+    },
+    {
+        "name": "minecraft:spire_armor_trim_smithing_template",
+        "id": 727
+    },
+    {
+        "name": "minecraft:splash_potion",
+        "id": 594
+    },
+    {
+        "name": "minecraft:sponge",
+        "id": 19
+    },
+    {
+        "name": "minecraft:spore_blossom",
+        "id": -321
+    },
+    {
+        "name": "minecraft:spruce_boat",
+        "id": 404
+    },
+    {
+        "name": "minecraft:spruce_button",
+        "id": -144
+    },
+    {
+        "name": "minecraft:spruce_chest_boat",
+        "id": 677
+    },
+    {
+        "name": "minecraft:spruce_door",
+        "id": 586
+    },
+    {
+        "name": "minecraft:spruce_double_slab",
+        "id": -809
+    },
+    {
+        "name": "minecraft:spruce_fence",
+        "id": -579
+    },
+    {
+        "name": "minecraft:spruce_fence_gate",
+        "id": 183
+    },
+    {
+        "name": "minecraft:spruce_hanging_sign",
+        "id": -501
+    },
+    {
+        "name": "minecraft:spruce_leaves",
+        "id": -800
+    },
+    {
+        "name": "minecraft:spruce_log",
+        "id": -569
+    },
+    {
+        "name": "minecraft:spruce_planks",
+        "id": -739
+    },
+    {
+        "name": "minecraft:spruce_pressure_plate",
+        "id": -154
+    },
+    {
+        "name": "minecraft:spruce_sapling",
+        "id": -825
+    },
+    {
+        "name": "minecraft:spruce_sign",
+        "id": 609
+    },
+    {
+        "name": "minecraft:spruce_slab",
+        "id": -804
+    },
+    {
+        "name": "minecraft:spruce_stairs",
+        "id": 134
+    },
+    {
+        "name": "minecraft:spruce_standing_sign",
+        "id": -181
+    },
+    {
+        "name": "minecraft:spruce_trapdoor",
+        "id": -149
+    },
+    {
+        "name": "minecraft:spruce_wall_sign",
+        "id": -182
+    },
+    {
+        "name": "minecraft:spruce_wood",
+        "id": -814
+    },
+    {
+        "name": "minecraft:spyglass",
+        "id": 661
+    },
+    {
+        "name": "minecraft:squid_spawn_egg",
+        "id": 477
+    },
+    {
+        "name": "minecraft:stained_glass",
+        "id": 772
+    },
+    {
+        "name": "minecraft:stained_glass_pane",
+        "id": 773
+    },
+    {
+        "name": "minecraft:stained_hardened_clay",
+        "id": 737
+    },
+    {
+        "name": "minecraft:standing_banner",
+        "id": 176
+    },
+    {
+        "name": "minecraft:standing_sign",
+        "id": 63
+    },
+    {
+        "name": "minecraft:stick",
+        "id": 345
+    },
+    {
+        "name": "minecraft:sticky_piston",
+        "id": 29
+    },
+    {
+        "name": "minecraft:sticky_piston_arm_collision",
+        "id": -217
+    },
+    {
+        "name": "minecraft:stone",
+        "id": 1
+    },
+    {
+        "name": "minecraft:stone_axe",
+        "id": 339
+    },
+    {
+        "name": "minecraft:stone_block_slab",
+        "id": 749
+    },
+    {
+        "name": "minecraft:stone_block_slab2",
+        "id": 750
+    },
+    {
+        "name": "minecraft:stone_block_slab3",
+        "id": 751
+    },
+    {
+        "name": "minecraft:stone_block_slab4",
+        "id": 752
+    },
+    {
+        "name": "minecraft:stone_brick_double_slab",
+        "id": -881
+    },
+    {
+        "name": "minecraft:stone_brick_slab",
+        "id": -875
+    },
+    {
+        "name": "minecraft:stone_brick_stairs",
+        "id": 109
+    },
+    {
+        "name": "minecraft:stone_brick_wall",
+        "id": -977
+    },
+    {
+        "name": "minecraft:stone_bricks",
+        "id": 98
+    },
+    {
+        "name": "minecraft:stone_button",
+        "id": 77
+    },
+    {
+        "name": "minecraft:stone_hoe",
+        "id": 355
+    },
+    {
+        "name": "minecraft:stone_pickaxe",
+        "id": 338
+    },
+    {
+        "name": "minecraft:stone_pressure_plate",
+        "id": 70
+    },
+    {
+        "name": "minecraft:stone_shovel",
+        "id": 337
+    },
+    {
+        "name": "minecraft:stone_stairs",
+        "id": 67
+    },
+    {
+        "name": "minecraft:stone_sword",
+        "id": 336
+    },
+    {
+        "name": "minecraft:stonebrick",
+        "id": 747
+    },
+    {
+        "name": "minecraft:stonecutter",
+        "id": 245
+    },
+    {
+        "name": "minecraft:stonecutter_block",
+        "id": -197
+    },
+    {
+        "name": "minecraft:stray_spawn_egg",
+        "id": 489
+    },
+    {
+        "name": "minecraft:strider_spawn_egg",
+        "id": 523
+    },
+    {
+        "name": "minecraft:string",
+        "id": 351
+    },
+    {
+        "name": "minecraft:stripped_acacia_log",
+        "id": -8
+    },
+    {
+        "name": "minecraft:stripped_acacia_wood",
+        "id": -823
+    },
+    {
+        "name": "minecraft:stripped_bamboo_block",
+        "id": -528
+    },
+    {
+        "name": "minecraft:stripped_birch_log",
+        "id": -6
+    },
+    {
+        "name": "minecraft:stripped_birch_wood",
+        "id": -821
+    },
+    {
+        "name": "minecraft:stripped_cherry_log",
+        "id": -535
+    },
+    {
+        "name": "minecraft:stripped_cherry_wood",
+        "id": -545
+    },
+    {
+        "name": "minecraft:stripped_crimson_hyphae",
+        "id": -300
+    },
+    {
+        "name": "minecraft:stripped_crimson_stem",
+        "id": -240
+    },
+    {
+        "name": "minecraft:stripped_dark_oak_log",
+        "id": -9
+    },
+    {
+        "name": "minecraft:stripped_dark_oak_wood",
+        "id": -824
+    },
+    {
+        "name": "minecraft:stripped_jungle_log",
+        "id": -7
+    },
+    {
+        "name": "minecraft:stripped_jungle_wood",
+        "id": -822
+    },
+    {
+        "name": "minecraft:stripped_mangrove_log",
+        "id": -485
+    },
+    {
+        "name": "minecraft:stripped_mangrove_wood",
+        "id": -498
+    },
+    {
+        "name": "minecraft:stripped_oak_log",
+        "id": -10
+    },
+    {
+        "name": "minecraft:stripped_oak_wood",
+        "id": -819
+    },
+    {
+        "name": "minecraft:stripped_spruce_log",
+        "id": -5
+    },
+    {
+        "name": "minecraft:stripped_spruce_wood",
+        "id": -820
+    },
+    {
+        "name": "minecraft:stripped_warped_hyphae",
+        "id": -301
+    },
+    {
+        "name": "minecraft:stripped_warped_stem",
+        "id": -241
+    },
+    {
+        "name": "minecraft:structure_block",
+        "id": 252
+    },
+    {
+        "name": "minecraft:structure_void",
+        "id": 217
+    },
+    {
+        "name": "minecraft:sugar",
+        "id": 442
+    },
+    {
+        "name": "minecraft:sugar_cane",
+        "id": 411
+    },
+    {
+        "name": "minecraft:sunflower",
+        "id": 175
+    },
+    {
+        "name": "minecraft:suspicious_gravel",
+        "id": -573
+    },
+    {
+        "name": "minecraft:suspicious_sand",
+        "id": -529
+    },
+    {
+        "name": "minecraft:suspicious_stew",
+        "id": 625
+    },
+    {
+        "name": "minecraft:sweet_berries",
+        "id": 309
+    },
+    {
+        "name": "minecraft:sweet_berry_bush",
+        "id": -207
+    },
+    {
+        "name": "minecraft:tadpole_bucket",
+        "id": 666
+    },
+    {
+        "name": "minecraft:tadpole_spawn_egg",
+        "id": 665
+    },
+    {
+        "name": "minecraft:tall_grass",
+        "id": -864
+    },
+    {
+        "name": "minecraft:tallgrass",
+        "id": 767
+    },
+    {
+        "name": "minecraft:target",
+        "id": -239
+    },
+    {
+        "name": "minecraft:tide_armor_trim_smithing_template",
+        "id": 724
+    },
+    {
+        "name": "minecraft:tinted_glass",
+        "id": -334
+    },
+    {
+        "name": "minecraft:tnt",
+        "id": 46
+    },
+    {
+        "name": "minecraft:tnt_minecart",
+        "id": 558
+    },
+    {
+        "name": "minecraft:torch",
+        "id": 50
+    },
+    {
+        "name": "minecraft:torchflower",
+        "id": -568
+    },
+    {
+        "name": "minecraft:torchflower_crop",
+        "id": -567
+    },
+    {
+        "name": "minecraft:torchflower_seeds",
+        "id": 318
+    },
+    {
+        "name": "minecraft:totem_of_undying",
+        "id": 601
+    },
+    {
+        "name": "minecraft:trader_llama_spawn_egg",
+        "id": 684
+    },
+    {
+        "name": "minecraft:trapdoor",
+        "id": 96
+    },
+    {
+        "name": "minecraft:trapped_chest",
+        "id": 146
+    },
+    {
+        "name": "minecraft:trial_key",
+        "id": 276
+    },
+    {
+        "name": "minecraft:trial_spawner",
+        "id": -315
+    },
+    {
+        "name": "minecraft:trident",
+        "id": 579
+    },
+    {
+        "name": "minecraft:trip_wire",
+        "id": 132
+    },
+    {
+        "name": "minecraft:tripwire_hook",
+        "id": 131
+    },
+    {
+        "name": "minecraft:tropical_fish",
+        "id": 288
+    },
+    {
+        "name": "minecraft:tropical_fish_bucket",
+        "id": 391
+    },
+    {
+        "name": "minecraft:tropical_fish_spawn_egg",
+        "id": 507
+    },
+    {
+        "name": "minecraft:tube_coral",
+        "id": -131
+    },
+    {
+        "name": "minecraft:tube_coral_block",
+        "id": -132
+    },
+    {
+        "name": "minecraft:tube_coral_fan",
+        "id": -133
+    },
+    {
+        "name": "minecraft:tube_coral_wall_fan",
+        "id": -135
+    },
+    {
+        "name": "minecraft:tuff",
+        "id": -333
+    },
+    {
+        "name": "minecraft:tuff_brick_double_slab",
+        "id": -756
+    },
+    {
+        "name": "minecraft:tuff_brick_slab",
+        "id": -755
+    },
+    {
+        "name": "minecraft:tuff_brick_stairs",
+        "id": -757
+    },
+    {
+        "name": "minecraft:tuff_brick_wall",
+        "id": -758
+    },
+    {
+        "name": "minecraft:tuff_bricks",
+        "id": -754
+    },
+    {
+        "name": "minecraft:tuff_double_slab",
+        "id": -745
+    },
+    {
+        "name": "minecraft:tuff_slab",
+        "id": -744
+    },
+    {
+        "name": "minecraft:tuff_stairs",
+        "id": -746
+    },
+    {
+        "name": "minecraft:tuff_wall",
+        "id": -747
+    },
+    {
+        "name": "minecraft:turtle_egg",
+        "id": -159
+    },
+    {
+        "name": "minecraft:turtle_helmet",
+        "id": 606
+    },
+    {
+        "name": "minecraft:turtle_scute",
+        "id": 605
+    },
+    {
+        "name": "minecraft:turtle_spawn_egg",
+        "id": 513
+    },
+    {
+        "name": "minecraft:twisting_vines",
+        "id": -287
+    },
+    {
+        "name": "minecraft:underwater_tnt",
+        "id": -985
+    },
+    {
+        "name": "minecraft:underwater_torch",
+        "id": 239
+    },
+    {
+        "name": "minecraft:undyed_shulker_box",
+        "id": 205
+    },
+    {
+        "name": "minecraft:unknown",
+        "id": -305
+    },
+    {
+        "name": "minecraft:unlit_redstone_torch",
+        "id": 75
+    },
+    {
+        "name": "minecraft:unpowered_comparator",
+        "id": 149
+    },
+    {
+        "name": "minecraft:unpowered_repeater",
+        "id": 93
+    },
+    {
+        "name": "minecraft:vault",
+        "id": -314
+    },
+    {
+        "name": "minecraft:verdant_froglight",
+        "id": -470
+    },
+    {
+        "name": "minecraft:vex_armor_trim_smithing_template",
+        "id": 723
+    },
+    {
+        "name": "minecraft:vex_spawn_egg",
+        "id": 504
+    },
+    {
+        "name": "minecraft:villager_spawn_egg",
+        "id": 476
+    },
+    {
+        "name": "minecraft:vindicator_spawn_egg",
+        "id": 502
+    },
+    {
+        "name": "minecraft:vine",
+        "id": 106
+    },
+    {
+        "name": "minecraft:wall_banner",
+        "id": 177
+    },
+    {
+        "name": "minecraft:wall_sign",
+        "id": 68
+    },
+    {
+        "name": "minecraft:wandering_trader_spawn_egg",
+        "id": 520
+    },
+    {
+        "name": "minecraft:ward_armor_trim_smithing_template",
+        "id": 721
+    },
+    {
+        "name": "minecraft:warden_spawn_egg",
+        "id": 668
+    },
+    {
+        "name": "minecraft:warped_button",
+        "id": -261
+    },
+    {
+        "name": "minecraft:warped_door",
+        "id": 653
+    },
+    {
+        "name": "minecraft:warped_double_slab",
+        "id": -267
+    },
+    {
+        "name": "minecraft:warped_fence",
+        "id": -257
+    },
+    {
+        "name": "minecraft:warped_fence_gate",
+        "id": -259
+    },
+    {
+        "name": "minecraft:warped_fungus",
+        "id": -229
+    },
+    {
+        "name": "minecraft:warped_fungus_on_a_stick",
+        "id": 654
+    },
+    {
+        "name": "minecraft:warped_hanging_sign",
+        "id": -507
+    },
+    {
+        "name": "minecraft:warped_hyphae",
+        "id": -298
+    },
+    {
+        "name": "minecraft:warped_nylium",
+        "id": -233
+    },
+    {
+        "name": "minecraft:warped_planks",
+        "id": -243
+    },
+    {
+        "name": "minecraft:warped_pressure_plate",
+        "id": -263
+    },
+    {
+        "name": "minecraft:warped_roots",
+        "id": -224
+    },
+    {
+        "name": "minecraft:warped_sign",
+        "id": 651
+    },
+    {
+        "name": "minecraft:warped_slab",
+        "id": -265
+    },
+    {
+        "name": "minecraft:warped_stairs",
+        "id": -255
+    },
+    {
+        "name": "minecraft:warped_standing_sign",
+        "id": -251
+    },
+    {
+        "name": "minecraft:warped_stem",
+        "id": -226
+    },
+    {
+        "name": "minecraft:warped_trapdoor",
+        "id": -247
+    },
+    {
+        "name": "minecraft:warped_wall_sign",
+        "id": -253
+    },
+    {
+        "name": "minecraft:warped_wart_block",
+        "id": -227
+    },
+    {
+        "name": "minecraft:water",
+        "id": 9
+    },
+    {
+        "name": "minecraft:water_bucket",
+        "id": 387
+    },
+    {
+        "name": "minecraft:waterlily",
+        "id": 111
+    },
+    {
+        "name": "minecraft:waxed_chiseled_copper",
+        "id": -764
+    },
+    {
+        "name": "minecraft:waxed_copper",
+        "id": -344
+    },
+    {
+        "name": "minecraft:waxed_copper_bulb",
+        "id": -780
+    },
+    {
+        "name": "minecraft:waxed_copper_door",
+        "id": -788
+    },
+    {
+        "name": "minecraft:waxed_copper_grate",
+        "id": -772
+    },
+    {
+        "name": "minecraft:waxed_copper_trapdoor",
+        "id": -796
+    },
+    {
+        "name": "minecraft:waxed_cut_copper",
+        "id": -351
+    },
+    {
+        "name": "minecraft:waxed_cut_copper_slab",
+        "id": -365
+    },
+    {
+        "name": "minecraft:waxed_cut_copper_stairs",
+        "id": -358
+    },
+    {
+        "name": "minecraft:waxed_double_cut_copper_slab",
+        "id": -372
+    },
+    {
+        "name": "minecraft:waxed_exposed_chiseled_copper",
+        "id": -765
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper",
+        "id": -345
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_bulb",
+        "id": -781
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_door",
+        "id": -789
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_grate",
+        "id": -773
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_trapdoor",
+        "id": -797
+    },
+    {
+        "name": "minecraft:waxed_exposed_cut_copper",
+        "id": -352
+    },
+    {
+        "name": "minecraft:waxed_exposed_cut_copper_slab",
+        "id": -366
+    },
+    {
+        "name": "minecraft:waxed_exposed_cut_copper_stairs",
+        "id": -359
+    },
+    {
+        "name": "minecraft:waxed_exposed_double_cut_copper_slab",
+        "id": -373
+    },
+    {
+        "name": "minecraft:waxed_oxidized_chiseled_copper",
+        "id": -766
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper",
+        "id": -446
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_bulb",
+        "id": -783
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_door",
+        "id": -791
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_grate",
+        "id": -775
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_trapdoor",
+        "id": -799
+    },
+    {
+        "name": "minecraft:waxed_oxidized_cut_copper",
+        "id": -447
+    },
+    {
+        "name": "minecraft:waxed_oxidized_cut_copper_slab",
+        "id": -449
+    },
+    {
+        "name": "minecraft:waxed_oxidized_cut_copper_stairs",
+        "id": -448
+    },
+    {
+        "name": "minecraft:waxed_oxidized_double_cut_copper_slab",
+        "id": -450
+    },
+    {
+        "name": "minecraft:waxed_weathered_chiseled_copper",
+        "id": -767
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper",
+        "id": -346
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_bulb",
+        "id": -782
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_door",
+        "id": -790
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_grate",
+        "id": -774
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_trapdoor",
+        "id": -798
+    },
+    {
+        "name": "minecraft:waxed_weathered_cut_copper",
+        "id": -353
+    },
+    {
+        "name": "minecraft:waxed_weathered_cut_copper_slab",
+        "id": -367
+    },
+    {
+        "name": "minecraft:waxed_weathered_cut_copper_stairs",
+        "id": -360
+    },
+    {
+        "name": "minecraft:waxed_weathered_double_cut_copper_slab",
+        "id": -374
+    },
+    {
+        "name": "minecraft:wayfinder_armor_trim_smithing_template",
+        "id": 729
+    },
+    {
+        "name": "minecraft:weathered_chiseled_copper",
+        "id": -762
+    },
+    {
+        "name": "minecraft:weathered_copper",
+        "id": -342
+    },
+    {
+        "name": "minecraft:weathered_copper_bulb",
+        "id": -778
+    },
+    {
+        "name": "minecraft:weathered_copper_door",
+        "id": -786
+    },
+    {
+        "name": "minecraft:weathered_copper_grate",
+        "id": -770
+    },
+    {
+        "name": "minecraft:weathered_copper_trapdoor",
+        "id": -794
+    },
+    {
+        "name": "minecraft:weathered_cut_copper",
+        "id": -349
+    },
+    {
+        "name": "minecraft:weathered_cut_copper_slab",
+        "id": -363
+    },
+    {
+        "name": "minecraft:weathered_cut_copper_stairs",
+        "id": -356
+    },
+    {
+        "name": "minecraft:weathered_double_cut_copper_slab",
+        "id": -370
+    },
+    {
+        "name": "minecraft:web",
+        "id": 30
+    },
+    {
+        "name": "minecraft:weeping_vines",
+        "id": -231
+    },
+    {
+        "name": "minecraft:wet_sponge",
+        "id": -984
+    },
+    {
+        "name": "minecraft:wheat",
+        "id": 359
+    },
+    {
+        "name": "minecraft:wheat_seeds",
+        "id": 313
+    },
+    {
+        "name": "minecraft:white_bundle",
+        "id": 272
+    },
+    {
+        "name": "minecraft:white_candle",
+        "id": -413
+    },
+    {
+        "name": "minecraft:white_candle_cake",
+        "id": -430
+    },
+    {
+        "name": "minecraft:white_carpet",
+        "id": 171
+    },
+    {
+        "name": "minecraft:white_concrete",
+        "id": 236
+    },
+    {
+        "name": "minecraft:white_concrete_powder",
+        "id": 237
+    },
+    {
+        "name": "minecraft:white_dye",
+        "id": 436
+    },
+    {
+        "name": "minecraft:white_glazed_terracotta",
+        "id": 220
+    },
+    {
+        "name": "minecraft:white_shulker_box",
+        "id": 218
+    },
+    {
+        "name": "minecraft:white_stained_glass",
+        "id": 241
+    },
+    {
+        "name": "minecraft:white_stained_glass_pane",
+        "id": 160
+    },
+    {
+        "name": "minecraft:white_terracotta",
+        "id": 159
+    },
+    {
+        "name": "minecraft:white_tulip",
+        "id": -835
+    },
+    {
+        "name": "minecraft:white_wool",
+        "id": 35
+    },
+    {
+        "name": "minecraft:wild_armor_trim_smithing_template",
+        "id": 720
+    },
+    {
+        "name": "minecraft:wind_charge",
+        "id": 277
+    },
+    {
+        "name": "minecraft:witch_spawn_egg",
+        "id": 479
+    },
+    {
+        "name": "minecraft:wither_rose",
+        "id": -216
+    },
+    {
+        "name": "minecraft:wither_skeleton_skull",
+        "id": -965
+    },
+    {
+        "name": "minecraft:wither_skeleton_spawn_egg",
+        "id": 492
+    },
+    {
+        "name": "minecraft:wither_spawn_egg",
+        "id": 536
+    },
+    {
+        "name": "minecraft:wolf_armor",
+        "id": 740
+    },
+    {
+        "name": "minecraft:wolf_spawn_egg",
+        "id": 466
+    },
+    {
+        "name": "minecraft:wood",
+        "id": 775
+    },
+    {
+        "name": "minecraft:wooden_axe",
+        "id": 335
+    },
+    {
+        "name": "minecraft:wooden_button",
+        "id": 143
+    },
+    {
+        "name": "minecraft:wooden_door",
+        "id": 384
+    },
+    {
+        "name": "minecraft:wooden_hoe",
+        "id": 354
+    },
+    {
+        "name": "minecraft:wooden_pickaxe",
+        "id": 334
+    },
+    {
+        "name": "minecraft:wooden_pressure_plate",
+        "id": 72
+    },
+    {
+        "name": "minecraft:wooden_shovel",
+        "id": 333
+    },
+    {
+        "name": "minecraft:wooden_slab",
+        "id": 762
+    },
+    {
+        "name": "minecraft:wooden_sword",
+        "id": 332
+    },
+    {
+        "name": "minecraft:wool",
+        "id": 743
+    },
+    {
+        "name": "minecraft:writable_book",
+        "id": 544
+    },
+    {
+        "name": "minecraft:written_book",
+        "id": 545
+    },
+    {
+        "name": "minecraft:yellow_bundle",
+        "id": 273
+    },
+    {
+        "name": "minecraft:yellow_candle",
+        "id": -417
+    },
+    {
+        "name": "minecraft:yellow_candle_cake",
+        "id": -434
+    },
+    {
+        "name": "minecraft:yellow_carpet",
+        "id": -600
+    },
+    {
+        "name": "minecraft:yellow_concrete",
+        "id": -631
+    },
+    {
+        "name": "minecraft:yellow_concrete_powder",
+        "id": -712
+    },
+    {
+        "name": "minecraft:yellow_dye",
+        "id": 432
+    },
+    {
+        "name": "minecraft:yellow_glazed_terracotta",
+        "id": 224
+    },
+    {
+        "name": "minecraft:yellow_shulker_box",
+        "id": -616
+    },
+    {
+        "name": "minecraft:yellow_stained_glass",
+        "id": -676
+    },
+    {
+        "name": "minecraft:yellow_stained_glass_pane",
+        "id": -646
+    },
+    {
+        "name": "minecraft:yellow_terracotta",
+        "id": -727
+    },
+    {
+        "name": "minecraft:yellow_wool",
+        "id": -558
+    },
+    {
+        "name": "minecraft:zoglin_spawn_egg",
+        "id": 526
+    },
+    {
+        "name": "minecraft:zombie_head",
+        "id": -966
+    },
+    {
+        "name": "minecraft:zombie_horse_spawn_egg",
+        "id": 496
+    },
+    {
+        "name": "minecraft:zombie_pigman_spawn_egg",
+        "id": 475
+    },
+    {
+        "name": "minecraft:zombie_spawn_egg",
+        "id": 474
+    },
+    {
+        "name": "minecraft:zombie_villager_spawn_egg",
+        "id": 505
+    }
+]
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 3a3831044..dc9329b91 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta5-20240916.181041-6"
-protocol-common = "3.0.0.Beta5-20240916.181041-6"
-protocol-codec = "3.0.0.Beta5-20240916.181041-6"
+protocol-connection = "3.0.0.Beta5-20241021.154858-12"
+protocol-common = "3.0.0.Beta5-20241021.154858-12"
+protocol-codec = "3.0.0.Beta5-20241021.154858-12"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21-20241010.155958-24"

From 264a914d41f34c48d9a79aaf94d8a2940d51e583 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Tue, 22 Oct 2024 12:41:55 -0400
Subject: [PATCH 008/165] Clean up inventory packet sending

---
 README.md                                     |  2 +-
 .../updater/AnvilInventoryUpdater.java        | 10 -------
 .../updater/ChestInventoryUpdater.java        |  8 +-----
 .../updater/ContainerInventoryUpdater.java    |  6 -----
 .../updater/CrafterInventoryUpdater.java      |  8 ------
 .../updater/HorseInventoryUpdater.java        |  6 -----
 .../inventory/updater/InventoryUpdater.java   |  6 -----
 .../inventory/updater/UIInventoryUpdater.java |  7 -----
 .../inventory/OldSmithingTableTranslator.java |  9 ++++---
 .../inventory/PlayerInventoryTranslator.java  | 26 ++++++++-----------
 .../ChestedHorseInventoryTranslator.java      |  5 ----
 .../entity/JavaEntityEventTranslator.java     |  5 ----
 .../JavaContainerSetSlotTranslator.java       | 12 +++------
 .../geysermc/geyser/util/InventoryUtils.java  | 10 +++----
 gradle/libs.versions.toml                     |  6 ++---
 15 files changed, 29 insertions(+), 97 deletions(-)

diff --git a/README.md b/README.md
index dec1e9dd1..418bfcdeb 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.30 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.40 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index cc98d0ae5..dc532cc62 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -31,8 +31,6 @@ import net.kyori.adventure.text.Component;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
 import org.geysermc.geyser.GeyserImpl;
@@ -80,8 +78,6 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
                 slotPacket.setContainerId(ContainerId.UI);
                 slotPacket.setSlot(bedrockSlot);
                 slotPacket.setItem(inventory.getItem(i).getItemData(session));
-                slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-                slotPacket.setStorageItem(ItemData.AIR);
                 session.sendUpstreamPacket(slotPacket);
             }
         }
@@ -102,8 +98,6 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
             slotPacket.setContainerId(ContainerId.UI);
             slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
             slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
-            slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         } else if (lastTargetSlot != javaSlot) {
             // Update the previous target slot to remove repair cost changes
@@ -111,8 +105,6 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
             slotPacket.setContainerId(ContainerId.UI);
             slotPacket.setSlot(translator.javaSlotToBedrock(lastTargetSlot));
             slotPacket.setItem(inventory.getItem(lastTargetSlot).getItemData(session));
-            slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         }
 
@@ -176,8 +168,6 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         slotPacket.setContainerId(ContainerId.UI);
         slotPacket.setSlot(translator.javaSlotToBedrock(slot));
         slotPacket.setItem(itemData);
-        slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java
index b28bd23d1..a67f594ab 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/ChestInventoryUpdater.java
@@ -25,12 +25,10 @@
 
 package org.geysermc.geyser.inventory.updater;
 
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
+import lombok.AllArgsConstructor;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
-import lombok.AllArgsConstructor;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.GeyserLocale;
@@ -63,8 +61,6 @@ public class ChestInventoryUpdater extends InventoryUpdater {
         InventoryContentPacket contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(bedrockItems);
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -77,8 +73,6 @@ public class ChestInventoryUpdater extends InventoryUpdater {
         slotPacket.setContainerId(inventory.getBedrockId());
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
-        slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java
index 224b7d4c9..c9f313f2a 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/ContainerInventoryUpdater.java
@@ -25,8 +25,6 @@
 
 package org.geysermc.geyser.inventory.updater;
 
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
@@ -51,8 +49,6 @@ public class ContainerInventoryUpdater extends InventoryUpdater {
         InventoryContentPacket contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(Arrays.asList(bedrockItems));
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -65,8 +61,6 @@ public class ContainerInventoryUpdater extends InventoryUpdater {
         slotPacket.setContainerId(inventory.getBedrockId());
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
-        slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java
index d3135c97e..4474d420c 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/CrafterInventoryUpdater.java
@@ -26,8 +26,6 @@
 package org.geysermc.geyser.inventory.updater;
 
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
@@ -58,8 +56,6 @@ public class CrafterInventoryUpdater extends InventoryUpdater {
         contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(Arrays.asList(bedrockItems));
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
 
         // inventory and hotbar
@@ -71,8 +67,6 @@ public class CrafterInventoryUpdater extends InventoryUpdater {
         contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(ContainerId.INVENTORY);
         contentPacket.setContents(Arrays.asList(bedrockItems));
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
 
         // Crafter result - it doesn't come after the grid, as explained elsewhere.
@@ -94,8 +88,6 @@ public class CrafterInventoryUpdater extends InventoryUpdater {
         packet.setContainerId(containerId);
         packet.setSlot(translator.javaSlotToBedrock(javaSlot));
         packet.setItem(inventory.getItem(javaSlot).getItemData(session));
-        packet.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        packet.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(packet);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java
index 657c91604..7441e66d0 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/HorseInventoryUpdater.java
@@ -25,8 +25,6 @@
 
 package org.geysermc.geyser.inventory.updater;
 
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
@@ -51,8 +49,6 @@ public class HorseInventoryUpdater extends InventoryUpdater {
         InventoryContentPacket contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(inventory.getBedrockId());
         contentPacket.setContents(Arrays.asList(bedrockItems));
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -65,8 +61,6 @@ public class HorseInventoryUpdater extends InventoryUpdater {
         slotPacket.setContainerId(4); // Horse GUI?
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
-        slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java
index c57f59bfd..68ee334ba 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/InventoryUpdater.java
@@ -26,8 +26,6 @@
 package org.geysermc.geyser.inventory.updater;
 
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
@@ -47,8 +45,6 @@ public class InventoryUpdater {
         InventoryContentPacket contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(ContainerId.INVENTORY);
         contentPacket.setContents(Arrays.asList(bedrockItems));
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
     }
 
@@ -58,8 +54,6 @@ public class InventoryUpdater {
             slotPacket.setContainerId(ContainerId.INVENTORY);
             slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
             slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
-            slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
             return true;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java
index 23cfc79f5..a23385b53 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/UIInventoryUpdater.java
@@ -26,9 +26,6 @@
 package org.geysermc.geyser.inventory.updater;
 
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.session.GeyserSession;
@@ -49,8 +46,6 @@ public class UIInventoryUpdater extends InventoryUpdater {
             slotPacket.setContainerId(ContainerId.UI);
             slotPacket.setSlot(bedrockSlot);
             slotPacket.setItem(inventory.getItem(i).getItemData(session));
-            slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         }
     }
@@ -64,8 +59,6 @@ public class UIInventoryUpdater extends InventoryUpdater {
         slotPacket.setContainerId(ContainerId.UI);
         slotPacket.setSlot(translator.javaSlotToBedrock(javaSlot));
         slotPacket.setItem(inventory.getItem(javaSlot).getItemData(session));
-        slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
         return true;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
index 125614e77..38bb6ddcd 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
@@ -28,11 +28,14 @@ package org.geysermc.geyser.translator.inventory;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.*;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.DropAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.ItemStackRequestAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.PlaceAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.SwapAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.TakeAction;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponse;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
@@ -140,8 +143,6 @@ public class OldSmithingTableTranslator extends AbstractBlockInventoryTranslator
         slotPacket.setContainerId(ContainerId.UI);
         slotPacket.setSlot(53);
         slotPacket.setItem(UPGRADE_TEMPLATE.apply(session.getUpstream().getProtocolVersion()));
-        slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        slotPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(slotPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index 65fd87c83..8fd365d7f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -30,17 +30,25 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
 import it.unimi.dsi.fastutil.ints.IntSet;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.*;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.CraftCreativeAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.DestroyAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.DropAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.ItemStackRequestAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.SwapAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.TransferItemStackRequestAction;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponse;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerClosePacket;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerOpenPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
-import org.geysermc.geyser.inventory.*;
+import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.Inventory;
+import org.geysermc.geyser.inventory.PlayerInventory;
+import org.geysermc.geyser.inventory.SlotType;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.skin.FakeHeadProvider;
@@ -84,8 +92,6 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             contents[i - 36] = inventory.getItem(i).getItemData(session);
         }
         inventoryContentPacket.setContents(Arrays.asList(contents));
-        inventoryContentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        inventoryContentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(inventoryContentPacket);
 
         // Armor
@@ -102,16 +108,12 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             }
         }
         armorContentPacket.setContents(Arrays.asList(contents));
-        armorContentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        armorContentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(armorContentPacket);
 
         // Offhand
         InventoryContentPacket offhandPacket = new InventoryContentPacket();
         offhandPacket.setContainerId(ContainerId.OFFHAND);
         offhandPacket.setContents(Collections.singletonList(inventory.getItem(45).getItemData(session)));
-        offhandPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        offhandPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(offhandPacket);
     }
 
@@ -133,8 +135,6 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                 slotPacket.setItem(inventory.getItem(i).getItemData(session));
             }
 
-            slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         }
     }
@@ -171,15 +171,11 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                 slotPacket.setSlot(slot + 27);
             }
             slotPacket.setItem(bedrockItem);
-            slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            slotPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(slotPacket);
         } else if (slot == 45) {
             InventoryContentPacket offhandPacket = new InventoryContentPacket();
             offhandPacket.setContainerId(ContainerId.OFFHAND);
             offhandPacket.setContents(Collections.singletonList(bedrockItem));
-            offhandPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-            offhandPacket.setStorageItem(ItemData.AIR);
             session.sendUpstreamPacket(offhandPacket);
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
index 363761e47..f1a5723c8 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
@@ -27,7 +27,6 @@ package org.geysermc.geyser.translator.inventory.horse;
 
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
@@ -95,8 +94,6 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
         InventoryContentPacket contentPacket = new InventoryContentPacket();
         contentPacket.setContainerId(ContainerId.INVENTORY);
         contentPacket.setContents(Arrays.asList(bedrockItems));
-        contentPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        contentPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(contentPacket);
 
         ItemData[] horseItems = new ItemData[chestSize + 1];
@@ -110,8 +107,6 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
         InventoryContentPacket horseContentsPacket = new InventoryContentPacket();
         horseContentsPacket.setContainerId(inventory.getBedrockId());
         horseContentsPacket.setContents(Arrays.asList(horseItems));
-        horseContentsPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        horseContentsPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(horseContentsPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
index a37ba88b3..6c2e02cd3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
@@ -30,9 +30,6 @@ import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityEventType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
@@ -170,8 +167,6 @@ public class JavaEntityEventTranslator extends PacketTranslator<ClientboundEntit
                     InventoryContentPacket offhandPacket = new InventoryContentPacket();
                     offhandPacket.setContainerId(ContainerId.OFFHAND);
                     offhandPacket.setContents(Collections.singletonList(InventoryUtils.getTotemOfUndying().apply(session.getUpstream().getProtocolVersion())));
-                    offhandPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-                    offhandPacket.setStorageItem(ItemData.AIR);
                     session.sendUpstreamPacket(offhandPacket);
                 }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index 732eb6be5..2ff2470e7 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -25,11 +25,6 @@
 
 package org.geysermc.geyser.translator.protocol.java.inventory;
 
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetSlotPacket;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
@@ -48,6 +43,9 @@ import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetSlotPacket;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -182,8 +180,6 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                     slotPacket.setContainerId(ContainerId.UI);
                     slotPacket.setSlot(col + (row * gridDimensions) + offset);
                     slotPacket.setItem(ItemData.AIR);
-                    slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-                    slotPacket.setStorageItem(ItemData.AIR);
                     session.sendUpstreamPacket(slotPacket);
                     index++;
                 }
@@ -216,8 +212,6 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                     slotPacket.setContainerId(ContainerId.UI);
                     slotPacket.setSlot(col + (row * gridDimensions) + offset);
                     slotPacket.setItem(ingredients[index]);
-                    slotPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-                    slotPacket.setStorageItem(ItemData.AIR);
                     session.sendUpstreamPacket(slotPacket);
                     index++;
                 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 4011cc1bd..dd7be0136 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -32,13 +32,15 @@ import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
-import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerHotbarPacket;
 import org.geysermc.geyser.GeyserImpl;
-import org.geysermc.geyser.inventory.*;
+import org.geysermc.geyser.inventory.Container;
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.Inventory;
+import org.geysermc.geyser.inventory.LecternContainer;
+import org.geysermc.geyser.inventory.PlayerInventory;
 import org.geysermc.geyser.inventory.click.Click;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
@@ -182,8 +184,6 @@ public class InventoryUtils {
         cursorPacket.setContainerId(ContainerId.UI);
         cursorPacket.setSlot(0);
         cursorPacket.setItem(session.getPlayerInventory().getCursor().getItemData(session));
-        cursorPacket.setContainerNameData(new FullContainerName(ContainerSlotType.ANVIL_INPUT, null));
-        cursorPacket.setStorageItem(ItemData.AIR);
         session.sendUpstreamPacket(cursorPacket);
     }
 
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index dc9329b91..e50809b52 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta5-20241021.154858-12"
-protocol-common = "3.0.0.Beta5-20241021.154858-12"
-protocol-codec = "3.0.0.Beta5-20241021.154858-12"
+protocol-connection = "3.0.0.Beta5-20241022.154658-14"
+protocol-common = "3.0.0.Beta5-20241022.154658-14"
+protocol-codec = "3.0.0.Beta5-20241022.154658-14"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21-20241010.155958-24"

From d94c6ffcb6df79359390b8a295acafd80c252b91 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Wed, 23 Oct 2024 03:49:04 +0800
Subject: [PATCH 009/165] API: Expose a GeyserConnection's protocol version
 (#5083)

* Add protocolVersion() to GeyserConnection

* specify which protocol
---
 .../org/geysermc/geyser/api/connection/GeyserConnection.java | 5 +++++
 .../main/java/org/geysermc/geyser/session/GeyserSession.java | 5 +++++
 gradle.properties                                            | 2 +-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java b/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java
index 0a580f975..ede4c1bc4 100644
--- a/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java
+++ b/api/src/main/java/org/geysermc/geyser/api/connection/GeyserConnection.java
@@ -70,6 +70,11 @@ public interface GeyserConnection extends Connection, CommandSource {
      */
     void closeForm();
 
+    /**
+     * Gets the Bedrock protocol version of the player.
+     */
+    int protocolVersion();
+
     /**
      * @param javaId the Java entity ID to look up.
      * @return a {@link GeyserEntity} if present in this connection's entity tracker.
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 9c20e9909..b8a991013 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -2229,6 +2229,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         return (int) Math.floor(rakSessionCodec.getPing());
     }
 
+    @Override
+    public int protocolVersion() {
+        return upstream.getProtocolVersion();
+    }
+
     @Override
     public void closeForm() {
         if (!GameProtocol.isPre1_21_2(this)) {
diff --git a/gradle.properties b/gradle.properties
index 1ee0e12cc..86cf4e922 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,5 +8,5 @@ org.gradle.vfs.watch=false
 
 group=org.geysermc
 id=geyser
-version=2.4.3-SNAPSHOT
+version=2.4.4-SNAPSHOT
 description=Allows for players from Minecraft: Bedrock Edition to join Minecraft: Java Edition servers.

From e7ecb55f33abd6e951aeac9ce0b462205cbd3339 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Tue, 22 Oct 2024 18:10:27 -0400
Subject: [PATCH 010/165] Indicate support for Bedrock 1.21.41

---
 README.md                                                 | 2 +-
 .../java/org/geysermc/geyser/network/GameProtocol.java    | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 418bfcdeb..3e99a96a7 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.40 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.41 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index c76958777..c39629917 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -52,7 +52,7 @@ public final class GameProtocol {
      * release of the game that Geyser supports.
      */
     public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
-        .minecraftVersion("1.21.40")
+        .minecraftVersion("1.21.41")
         .build());
 
     /**
@@ -80,10 +80,10 @@ public final class GameProtocol {
             .minecraftVersion("1.21.20 - 1.21.23")
             .build()));
         SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v729.CODEC.toBuilder()
-                .minecraftVersion("1.21.30/1.21.31")
-                .build()));
+            .minecraftVersion("1.21.30/1.21.31")
+            .build()));
         SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
-            .minecraftVersion("1.21.40")
+            .minecraftVersion("1.21.40/1.21.41")
             .build());
     }
 

From e78b24830de8a72ce6e66867050d073e66503bd1 Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Tue, 22 Oct 2024 22:31:37 +0000
Subject: [PATCH 011/165] Improve tag loading and load non-vanilla tags as well
 (#4849)

* Work on new tag system, still largely unfinished

* Continue work on new tag system, closer to testing now

* Add holderset class for geyser

* My IDE did some stuff it shouldn't have done

* Add is method for HolderSets to TagCache

* Add some documentation

* Fix build and slightly adjust documentation

* Fix some issues, still broken

* Fix more issues with registering vanilla tags, works better now

* Fix all issues with vanilla and non-vanilla tags, fix documentation a bit.

* Small cleanup

* Use IllegalArgumentException instead of asserting and make TagRegistry#getVanillaTags return original map

* Generics - still untested

* Remove different lookups for vanilla- and non-vanilla tags

* Add toNetworkId and fromNetworkId methods to JavaRegistryKey, simplify TagCache

* More cleanup, add documentation

* Fix registry loading

* Rename HolderSet to GeyserHolderSet and address reviews by camotoy

* Make holder set reader method not throw an exception, clean up

* Make holder set reader warn when failing to read

* Add comment to make clearer why a cast is make

---------

Co-authored-by: chris <github@onechris.mozmail.com>
---
 .../type/living/animal/AnimalEntity.java      |   7 +-
 .../type/living/animal/ArmadilloEntity.java   |   4 +-
 .../type/living/animal/AxolotlEntity.java     |   4 +-
 .../entity/type/living/animal/BeeEntity.java  |   4 +-
 .../type/living/animal/ChickenEntity.java     |   4 +-
 .../entity/type/living/animal/CowEntity.java  |   4 +-
 .../entity/type/living/animal/FoxEntity.java  |   4 +-
 .../entity/type/living/animal/FrogEntity.java |   4 +-
 .../entity/type/living/animal/GoatEntity.java |   4 +-
 .../type/living/animal/HoglinEntity.java      |   4 +-
 .../type/living/animal/OcelotEntity.java      |   4 +-
 .../type/living/animal/PandaEntity.java       |   4 +-
 .../entity/type/living/animal/PigEntity.java  |   4 +-
 .../type/living/animal/PolarBearEntity.java   |   5 +-
 .../type/living/animal/RabbitEntity.java      |   4 +-
 .../type/living/animal/SheepEntity.java       |   6 +-
 .../type/living/animal/SnifferEntity.java     |   4 +-
 .../type/living/animal/StriderEntity.java     |   4 +-
 .../type/living/animal/TurtleEntity.java      |   4 +-
 .../animal/horse/AbstractHorseEntity.java     |   4 +-
 .../type/living/animal/horse/CamelEntity.java |   4 +-
 .../type/living/animal/horse/LlamaEntity.java |   4 +-
 .../living/animal/tameable/CatEntity.java     |   4 +-
 .../living/animal/tameable/ParrotEntity.java  |   3 +-
 .../living/animal/tameable/WolfEntity.java    |   4 +-
 .../updater/AnvilInventoryUpdater.java        |  14 +-
 .../geyser/item/enchantment/Enchantment.java  |  37 +-
 .../geyser/session/GeyserSession.java         |   2 +-
 .../geyser/session/cache/RegistryCache.java   |  48 +--
 .../geyser/session/cache/TagCache.java        | 140 +++---
 .../cache/registry/JavaRegistries.java        | 112 +++++
 .../cache/registry/JavaRegistryKey.java       |  86 ++++
 .../geyser/session/cache/tags/BlockTag.java   | 399 +++++++++---------
 .../session/cache/tags/EnchantmentTag.java    | 102 ++---
 .../session/cache/tags/GeyserHolderSet.java   | 118 ++++++
 .../geyser/session/cache/tags/ItemTag.java    | 324 +++++++-------
 .../geyser/session/cache/tags/Tag.java        |  35 ++
 37 files changed, 927 insertions(+), 595 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistryKey.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/cache/tags/Tag.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AnimalEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AnimalEntity.java
index 2e627b461..57cbdc783 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AnimalEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AnimalEntity.java
@@ -33,8 +33,9 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.type.living.AgeableEntity;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
@@ -48,7 +49,7 @@ public abstract class AnimalEntity extends AgeableEntity {
     }
 
     protected final boolean canEat(GeyserItemStack itemStack) {
-        ItemTag tag = getFoodTag();
+        Tag<Item> tag = getFoodTag();
         if (tag == null) {
             return false;
         }
@@ -58,7 +59,7 @@ public abstract class AnimalEntity extends AgeableEntity {
     /**
      * @return the tag associated with this animal for eating food. Null for nothing or different behavior.
      */
-    protected abstract @Nullable ItemTag getFoodTag();
+    protected abstract @Nullable Tag<Item> getFoodTag();
 
     @NonNull
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ArmadilloEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ArmadilloEntity.java
index 968520bb6..2b443f5e4 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ArmadilloEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ArmadilloEntity.java
@@ -28,8 +28,10 @@ package org.geysermc.geyser.entity.type.living.animal;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.ArmadilloState;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
 
@@ -75,7 +77,7 @@ public class ArmadilloEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.ARMADILLO_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AxolotlEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AxolotlEntity.java
index a0ab56ead..0a87f59bc 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AxolotlEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/AxolotlEntity.java
@@ -32,8 +32,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
@@ -62,7 +64,7 @@ public class AxolotlEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.AXOLOTL_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/BeeEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/BeeEntity.java
index 4fcf0e178..5f8956b6a 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/BeeEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/BeeEntity.java
@@ -32,8 +32,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityEventType;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 
@@ -69,7 +71,7 @@ public class BeeEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.BEE_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ChickenEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ChickenEntity.java
index 075a49923..0c8e437c8 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ChickenEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/ChickenEntity.java
@@ -28,8 +28,10 @@ package org.geysermc.geyser.entity.type.living.animal;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 
 import java.util.UUID;
 
@@ -41,7 +43,7 @@ public class ChickenEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.CHICKEN_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/CowEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/CowEntity.java
index 64e7de193..66210068b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/CowEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/CowEntity.java
@@ -33,8 +33,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
@@ -69,7 +71,7 @@ public class CowEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.COW_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FoxEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FoxEntity.java
index e20031baa..b140b7956 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FoxEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FoxEntity.java
@@ -30,8 +30,10 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 
@@ -57,7 +59,7 @@ public class FoxEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.FOX_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FrogEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FrogEntity.java
index 120bfcdd4..a0b909b75 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FrogEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/FrogEntity.java
@@ -31,8 +31,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.type.Entity;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
@@ -77,7 +79,7 @@ public class FrogEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.FROG_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/GoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/GoatEntity.java
index 4e919b81c..b5e4ad117 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/GoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/GoatEntity.java
@@ -34,8 +34,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
@@ -99,7 +101,7 @@ public class GoatEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.GOAT_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/HoglinEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/HoglinEntity.java
index cc23fc607..b506f1425 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/HoglinEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/HoglinEntity.java
@@ -30,8 +30,10 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 
 import java.util.UUID;
@@ -58,7 +60,7 @@ public class HoglinEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.HOGLIN_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/OcelotEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/OcelotEntity.java
index 9d6d33227..c45092b02 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/OcelotEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/OcelotEntity.java
@@ -31,8 +31,10 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
@@ -47,7 +49,7 @@ public class OcelotEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.OCELOT_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PandaEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PandaEntity.java
index aaa7c2d7e..022e58bc0 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PandaEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PandaEntity.java
@@ -34,8 +34,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
@@ -90,7 +92,7 @@ public class PandaEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.PANDA_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PigEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PigEntity.java
index 2ec23d673..b8ba2c94f 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PigEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PigEntity.java
@@ -38,9 +38,11 @@ import org.geysermc.geyser.entity.vehicle.BoostableVehicleComponent;
 import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.entity.vehicle.VehicleComponent;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
@@ -58,7 +60,7 @@ public class PigEntity extends AnimalEntity implements Tickable, ClientVehicle {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.PIG_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PolarBearEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PolarBearEntity.java
index 0e83615f7..900878dbd 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PolarBearEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/PolarBearEntity.java
@@ -28,8 +28,9 @@ package org.geysermc.geyser.entity.type.living.animal;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 
 import java.util.UUID;
 
@@ -41,7 +42,7 @@ public class PolarBearEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return null;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/RabbitEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/RabbitEntity.java
index fbfc5d40a..dca6fe5ff 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/RabbitEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/RabbitEntity.java
@@ -31,8 +31,10 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 
@@ -79,7 +81,7 @@ public class RabbitEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.RABBIT_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SheepEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SheepEntity.java
index 155ddf00c..e26b0be61 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SheepEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SheepEntity.java
@@ -34,8 +34,10 @@ import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.DyeItem;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
@@ -59,7 +61,7 @@ public class SheepEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.SHEEP_FOOD;
     }
 
@@ -103,4 +105,4 @@ public class SheepEntity extends AnimalEntity {
     private boolean canDye(GeyserItemStack item) {
         return item.asItem() instanceof DyeItem dyeItem && dyeItem.dyeColor() != this.color && !getFlag(EntityFlag.SHEARED);
     }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SnifferEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SnifferEntity.java
index 11fee5bbf..203a48f19 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SnifferEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/SnifferEntity.java
@@ -35,8 +35,10 @@ import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.Tickable;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.SnifferState;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
@@ -73,7 +75,7 @@ public class SnifferEntity extends AnimalEntity implements Tickable {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.SNIFFER_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/StriderEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/StriderEntity.java
index e06af2786..62318e255 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/StriderEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/StriderEntity.java
@@ -39,9 +39,11 @@ import org.geysermc.geyser.entity.vehicle.BoostableVehicleComponent;
 import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.entity.vehicle.VehicleComponent;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
@@ -105,7 +107,7 @@ public class StriderEntity extends AnimalEntity implements Tickable, ClientVehic
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.STRIDER_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/TurtleEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/TurtleEntity.java
index ae7f2d2bd..1f700f12b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/TurtleEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/TurtleEntity.java
@@ -29,8 +29,10 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 
 import java.util.UUID;
@@ -51,7 +53,7 @@ public class TurtleEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.TURTLE_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java
index ddc212053..100a29299 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/AbstractHorseEntity.java
@@ -39,8 +39,10 @@ import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.entity.type.living.animal.AnimalEntity;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
@@ -119,7 +121,7 @@ public class AbstractHorseEntity extends AnimalEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.HORSE_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java
index b83a85bfb..ca39bd1e6 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/CamelEntity.java
@@ -35,12 +35,14 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.entity.vehicle.CamelVehicleComponent;
 import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.entity.vehicle.VehicleComponent;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.Attribute;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.AttributeType;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
@@ -100,7 +102,7 @@ public class CamelEntity extends AbstractHorseEntity implements ClientVehicle {
     }
 
     @Override
-    protected @Nullable ItemTag getFoodTag() {
+    protected @Nullable Tag<Item> getFoodTag() {
         return ItemTag.CAMEL_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/LlamaEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/LlamaEntity.java
index 76939ceb9..d27a1fff3 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/LlamaEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/horse/LlamaEntity.java
@@ -30,8 +30,10 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 
@@ -56,7 +58,7 @@ public class LlamaEntity extends ChestedHorseEntity {
     }
 
     @Override
-    protected @Nullable ItemTag getFoodTag() {
+    protected @Nullable Tag<Item> getFoodTag() {
         return ItemTag.LLAMA_FOOD;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/CatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/CatEntity.java
index bf1555e9d..fb53c18ed 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/CatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/CatEntity.java
@@ -32,8 +32,10 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
@@ -109,7 +111,7 @@ public class CatEntity extends TameableEntity {
     }
 
     @Override
-    protected @Nullable ItemTag getFoodTag() {
+    protected @Nullable Tag<Item> getFoodTag() {
         return ItemTag.CAT_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/ParrotEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/ParrotEntity.java
index 69b19b1b9..95e9c901b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/ParrotEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/ParrotEntity.java
@@ -34,6 +34,7 @@ import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
@@ -47,7 +48,7 @@ public class ParrotEntity extends TameableEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return null;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index e7fde2be8..f0b554ef9 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -36,8 +36,10 @@ import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.enchantment.EnchantmentComponent;
 import org.geysermc.geyser.item.type.DyeItem;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.geyser.util.ItemUtils;
@@ -116,7 +118,7 @@ public class WolfEntity extends TameableEntity {
 
     @Override
     @Nullable
-    protected ItemTag getFoodTag() {
+    protected Tag<Item> getFoodTag() {
         return ItemTag.WOLF_FOOD;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index dc532cc62..0ffb74082 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -41,17 +41,15 @@ import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.session.cache.tags.EnchantmentTag;
-import org.geysermc.geyser.session.cache.tags.ItemTag;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.ItemUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.stream.IntStream;
@@ -314,14 +312,10 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         for (Object2IntMap.Entry<Enchantment> entry : getEnchantments(session, material).object2IntEntrySet()) {
             Enchantment enchantment = entry.getKey();
 
-            HolderSet supportedItems = enchantment.supportedItems();
-            int[] supportedItemIds = supportedItems.resolve(tagId -> session.getTagCache().get(ItemTag.ALL_ITEM_TAGS.get(tagId)));
-            boolean canApply = isEnchantedBook(input) || IntStream.of(supportedItemIds).anyMatch(id -> id == input.getJavaId());
+            boolean canApply = isEnchantedBook(input) || session.getTagCache().is(enchantment.supportedItems(), input.asItem());
 
-            HolderSet exclusiveSet = enchantment.exclusiveSet();
-            int[] incompatibleEnchantments = exclusiveSet.resolve(tagId -> session.getTagCache().get(EnchantmentTag.ALL_ENCHANTMENT_TAGS.get(tagId)));
-            for (int i : incompatibleEnchantments) {
-                Enchantment incompatible = session.getRegistryCache().enchantments().byId(i);
+            List<Enchantment> incompatibleEnchantments = enchantment.exclusiveSet().resolve(session);
+            for (Enchantment incompatible : incompatibleEnchantments) {
                 if (combinedEnchantments.containsKey(incompatible)) {
                     canApply = false;
                     if (!bedrock) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java b/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java
index 301f69a5f..9088d9626 100644
--- a/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java
+++ b/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java
@@ -25,23 +25,20 @@
 
 package org.geysermc.geyser.item.enchantment;
 
-import it.unimi.dsi.fastutil.ints.IntArrays;
-import net.kyori.adventure.key.Key;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.nbt.NbtMap;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
 import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
+import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.ToIntFunction;
 
 /**
  * @param description only populated if {@link #bedrockEnchantment()} is not null.
@@ -49,23 +46,23 @@ import java.util.function.ToIntFunction;
  */
 public record Enchantment(String identifier,
                           Set<EnchantmentComponent> effects,
-                          HolderSet supportedItems,
+                          GeyserHolderSet<Item> supportedItems,
                           int maxLevel,
                           String description,
                           int anvilCost,
-                          HolderSet exclusiveSet,
+                          GeyserHolderSet<Enchantment> exclusiveSet,
                           @Nullable BedrockEnchantment bedrockEnchantment) {
 
     public static Enchantment read(RegistryEntryContext context) {
         NbtMap data = context.data();
         Set<EnchantmentComponent> effects = readEnchantmentComponents(data.getCompound("effects"));
 
-        HolderSet supportedItems = readHolderSet(data.get("supported_items"), itemId -> Registries.JAVA_ITEM_IDENTIFIERS.getOrDefault(itemId.asString(), Items.AIR).javaId());
+        GeyserHolderSet<Item> supportedItems = GeyserHolderSet.readHolderSet(context.session(), JavaRegistries.ITEM, data.get("supported_items"), itemId -> Registries.JAVA_ITEM_IDENTIFIERS.getOrDefault(itemId.asString(), Items.AIR).javaId());
 
         int maxLevel = data.getInt("max_level");
         int anvilCost = data.getInt("anvil_cost");
 
-        HolderSet exclusiveSet = readHolderSet(data.getOrDefault("exclusive_set", null), context::getNetworkId);
+        GeyserHolderSet<Enchantment> exclusiveSet = GeyserHolderSet.readHolderSet(context.session(), JavaRegistries.ENCHANTMENT, data.get("exclusive_set"), context::getNetworkId);
 
         BedrockEnchantment bedrockEnchantment = BedrockEnchantment.getByJavaIdentifier(context.id().asString());
 
@@ -86,24 +83,4 @@ public record Enchantment(String identifier,
         }
         return Set.copyOf(components); // Also ensures any empty sets are consolidated
     }
-
-    // TODO holder set util?
-    private static HolderSet readHolderSet(@Nullable Object holderSet, ToIntFunction<Key> keyIdMapping) {
-        if (holderSet == null) {
-            return new HolderSet(IntArrays.EMPTY_ARRAY);
-        }
-
-        if (holderSet instanceof String stringTag) {
-            // Tag
-            if (stringTag.startsWith("#")) {
-                return new HolderSet(MinecraftKey.key(stringTag.substring(1))); // Remove '#' at beginning that indicates tag
-            } else {
-                return new HolderSet(new int[]{keyIdMapping.applyAsInt(MinecraftKey.key(stringTag))});
-            }
-        } else if (holderSet instanceof List<?> list) {
-            // Assume the list is a list of strings
-            return new HolderSet(list.stream().map(o -> (String) o).map(Key::key).mapToInt(keyIdMapping).toArray());
-        }
-        throw new IllegalArgumentException("Holder set must either be a tag, a string ID or a list of string IDs");
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index bf396a3c3..fb64cfc41 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -679,7 +679,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         this.registryCache = new RegistryCache(this);
         this.skullCache = new SkullCache(this);
         this.structureBlockCache = new StructureBlockCache();
-        this.tagCache = new TagCache();
+        this.tagCache = new TagCache(this);
         this.worldCache = new WorldCache(this);
         this.cameraData = new GeyserCameraData(this);
         this.entityData = new GeyserEntityData(this);
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
index 4a4167f15..fcbc7c64c 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
@@ -46,7 +46,9 @@ import org.geysermc.geyser.level.JavaDimension;
 import org.geysermc.geyser.level.JukeboxSong;
 import org.geysermc.geyser.level.PaintingType;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
 import org.geysermc.geyser.session.cache.registry.JavaRegistry;
+import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
 import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
 import org.geysermc.geyser.session.cache.registry.SimpleJavaRegistry;
 import org.geysermc.geyser.text.ChatDecoration;
@@ -74,35 +76,34 @@ import java.util.function.ToIntFunction;
 @Accessors(fluent = true)
 @Getter
 public final class RegistryCache {
-    private static final Map<Key, Map<Key, NbtMap>> DEFAULTS;
-    private static final Map<Key, BiConsumer<RegistryCache, List<RegistryEntry>>> REGISTRIES = new HashMap<>();
+    private static final Map<JavaRegistryKey<?>, Map<Key, NbtMap>> DEFAULTS;
+    private static final Map<JavaRegistryKey<?>, BiConsumer<RegistryCache, List<RegistryEntry>>> REGISTRIES = new HashMap<>();
 
     static {
-        register("chat_type", cache -> cache.chatTypes, ChatDecoration::readChatType);
-        register("dimension_type", cache -> cache.dimensions, JavaDimension::read);
-        register("enchantment", cache -> cache.enchantments, Enchantment::read);
-        register("jukebox_song", cache -> cache.jukeboxSongs, JukeboxSong::read);
-        register("painting_variant", cache -> cache.paintings, context -> PaintingType.getByName(context.id()));
-        register("trim_material", cache -> cache.trimMaterials, TrimRecipe::readTrimMaterial);
-        register("trim_pattern", cache -> cache.trimPatterns, TrimRecipe::readTrimPattern);
-        register("worldgen/biome", (cache, array) -> cache.biomeTranslations = array, BiomeTranslator::loadServerBiome);
-        register("banner_pattern", cache -> cache.bannerPatterns, context -> BannerPattern.getByJavaIdentifier(context.id()));
-        register("wolf_variant", cache -> cache.wolfVariants, context -> WolfEntity.BuiltInWolfVariant.getByJavaIdentifier(context.id().asString()));
+        register(JavaRegistries.CHAT_TYPE, cache -> cache.chatTypes, ChatDecoration::readChatType);
+        register(JavaRegistries.DIMENSION_TYPE, cache -> cache.dimensions, JavaDimension::read);
+        register(JavaRegistries.ENCHANTMENT, cache -> cache.enchantments, Enchantment::read);
+        register(JavaRegistries.JUKEBOX_SONG, cache -> cache.jukeboxSongs, JukeboxSong::read);
+        register(JavaRegistries.PAINTING_VARIANT, cache -> cache.paintings, context -> PaintingType.getByName(context.id()));
+        register(JavaRegistries.TRIM_MATERIAL, cache -> cache.trimMaterials, TrimRecipe::readTrimMaterial);
+        register(JavaRegistries.TRIM_PATTERN, cache -> cache.trimPatterns, TrimRecipe::readTrimPattern);
+        register(JavaRegistries.BIOME, (cache, array) -> cache.biomeTranslations = array, BiomeTranslator::loadServerBiome);
+        register(JavaRegistries.BANNER_PATTERN, cache -> cache.bannerPatterns, context -> BannerPattern.getByJavaIdentifier(context.id()));
+        register(JavaRegistries.WOLF_VARIANT, cache -> cache.wolfVariants, context -> WolfEntity.BuiltInWolfVariant.getByJavaIdentifier(context.id().asString()));
 
         // Load from MCProtocolLib's classloader
         NbtMap tag = MinecraftProtocol.loadNetworkCodec();
-        Map<Key, Map<Key, NbtMap>> defaults = new HashMap<>();
+        Map<JavaRegistryKey<?>, Map<Key, NbtMap>> defaults = new HashMap<>();
         // Don't create a keySet - no need to create the cached object in HashMap if we don't use it again
-        REGISTRIES.forEach((key, $) -> {
-            List<NbtMap> rawValues = tag.getCompound(key.asString())
-                    .getList("value", NbtType.COMPOUND);
+        REGISTRIES.forEach((registry, $) -> {
+            List<NbtMap> rawValues = tag.getCompound(registry.registryKey().asString()).getList("value", NbtType.COMPOUND);
             Map<Key, NbtMap> values = new HashMap<>();
             for (NbtMap value : rawValues) {
                 Key name = MinecraftKey.key(value.getString("name"));
                 values.put(name, value.getCompound("element"));
             }
             // Can make these maps immutable and as efficient as possible after initialization
-            defaults.put(key, Map.copyOf(values));
+            defaults.put(registry, Map.copyOf(values));
         });
 
         DEFAULTS = Map.copyOf(defaults);
@@ -137,7 +138,7 @@ public final class RegistryCache {
      * Loads a registry in, if we are tracking it.
      */
     public void load(ClientboundRegistryDataPacket packet) {
-        var reader = REGISTRIES.get(packet.getRegistry());
+        var reader = REGISTRIES.get(JavaRegistries.fromKey(packet.getRegistry()));
         if (reader != null) {
             reader.accept(this, packet.getEntries());
         } else {
@@ -151,9 +152,8 @@ public final class RegistryCache {
      * @param reader converts the RegistryEntry NBT into a class file
      * @param <T> the class that represents these entries.
      */
-    private static <T> void register(String registry, Function<RegistryCache, JavaRegistry<T>> localCacheFunction, Function<RegistryEntryContext, T> reader) {
-        Key registryKey = MinecraftKey.key(registry);
-        REGISTRIES.put(registryKey, (registryCache, entries) -> {
+    private static <T> void register(JavaRegistryKey<T> registry, Function<RegistryCache, JavaRegistry<T>> localCacheFunction, Function<RegistryEntryContext, T> reader) {
+        REGISTRIES.put(registry, (registryCache, entries) -> {
             Map<Key, NbtMap> localRegistry = null;
             JavaRegistry<T> localCache = localCacheFunction.apply(registryCache);
             // Clear each local cache every time a new registry entry is given to us
@@ -172,7 +172,7 @@ public final class RegistryCache {
                 // If the data is null, that's the server telling us we need to use our default values.
                 if (entry.getData() == null) {
                     if (localRegistry == null) { // Lazy initialize
-                        localRegistry = DEFAULTS.get(registryKey);
+                        localRegistry = DEFAULTS.get(registry);
                     }
                     entry = new RegistryEntry(entry.getId(), localRegistry.get(entry.getId()));
                 }
@@ -189,8 +189,8 @@ public final class RegistryCache {
     /**
      * @param localCacheFunction the int array to set the final values to.
      */
-    private static void register(String registry, BiConsumer<RegistryCache, int[]> localCacheFunction, ToIntFunction<RegistryEntry> reader) {
-        REGISTRIES.put(MinecraftKey.key(registry), (registryCache, entries) -> {
+    private static void register(JavaRegistryKey<?> registry, BiConsumer<RegistryCache, int[]> localCacheFunction, ToIntFunction<RegistryEntry> reader) {
+        REGISTRIES.put(registry, (registryCache, entries) -> {
             Int2IntMap temp = new Int2IntOpenHashMap();
             int greatestId = 0;
             for (int i = 0; i < entries.size(); i++) {
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
index f4d69dcdb..f01ef64c5 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
@@ -26,116 +26,114 @@
 package org.geysermc.geyser.session.cache;
 
 import it.unimi.dsi.fastutil.ints.IntArrays;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
-import org.checkerframework.checker.nullness.qual.Nullable;
-import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.session.cache.tags.BlockTag;
-import org.geysermc.geyser.session.cache.tags.EnchantmentTag;
-import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
+import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.geyser.util.Ordered;
 import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ClientboundUpdateTagsPacket;
 
 import javax.annotation.ParametersAreNonnullByDefault;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 
-import static org.geysermc.geyser.session.cache.tags.BlockTag.ALL_BLOCK_TAGS;
-import static org.geysermc.geyser.session.cache.tags.EnchantmentTag.ALL_ENCHANTMENT_TAGS;
-import static org.geysermc.geyser.session.cache.tags.ItemTag.ALL_ITEM_TAGS;
-
 /**
  * Manages information sent from the {@link ClientboundUpdateTagsPacket}. If that packet is not sent, all lists here
- * will remain empty, matching Java Edition behavior.
+ * will remain empty, matching Java Edition behavior. Looking up a tag that wasn't listed in that packet will return an empty array.
+ * Only tags from suitable registries in {@link JavaRegistries} are stored. Read {@link JavaRegistryKey} for more information.
  */
 @ParametersAreNonnullByDefault
 public final class TagCache {
-    private final int[][] blocks = new int[ALL_BLOCK_TAGS.size()][];
-    private final int[][] items = new int[ALL_ITEM_TAGS.size()][];
-    private final int[][] enchantments = new int[ALL_ENCHANTMENT_TAGS.size()][];
+    private final GeyserSession session;
+    private final Map<Tag<?>, int[]> tags = new Object2ObjectOpenHashMap<>();
+
+    public TagCache(GeyserSession session) {
+        this.session = session;
+    }
 
     public void loadPacket(GeyserSession session, ClientboundUpdateTagsPacket packet) {
-        Map<Key, int[]> blockTags = packet.getTags().get(MinecraftKey.key("block"));
-        loadTags("Block", blockTags, ALL_BLOCK_TAGS, this.blocks);
-
-        // Hack btw
+        Map<Key, Map<Key, int[]>> allTags = packet.getTags();
         GeyserLogger logger = session.getGeyser().getLogger();
-        int[] convertableToMud = blockTags.get(MinecraftKey.key("convertable_to_mud"));
-        boolean emulatePost1_18Logic = convertableToMud != null && convertableToMud.length != 0;
-        session.setEmulatePost1_18Logic(emulatePost1_18Logic);
-        if (logger.isDebug()) {
-            logger.debug("Emulating post 1.18 block predication logic for " + session.bedrockUsername() + "? " + emulatePost1_18Logic);
-        }
 
-        Map<Key, int[]> itemTags = packet.getTags().get(MinecraftKey.key("item"));
-        loadTags("Item", itemTags, ALL_ITEM_TAGS, this.items);
+        this.tags.clear();
 
-        // Hack btw
-        boolean emulatePost1_13Logic = itemTags.get(MinecraftKey.key("signs")).length > 1;
-        session.setEmulatePost1_13Logic(emulatePost1_13Logic);
-        if (logger.isDebug()) {
-            logger.debug("Emulating post 1.13 villager logic for " + session.bedrockUsername() + "? " + emulatePost1_13Logic);
-        }
-
-        Map<Key, int[]> enchantmentTags = packet.getTags().get(MinecraftKey.key("enchantment"));
-        loadTags("Enchantment", enchantmentTags, ALL_ENCHANTMENT_TAGS, this.enchantments);
-    }
-
-    private <T extends Ordered> void loadTags(String type, @Nullable Map<Key, int[]> packetTags, Map<Key, T> allTags, int[][] localValues) {
-        if (packetTags == null) {
-            Arrays.fill(localValues, IntArrays.EMPTY_ARRAY);
-            GeyserImpl.getInstance().getLogger().debug("Not loading " + type + " tags; they do not exist here.");
-            return;
-        }
-        allTags.forEach((location, tag) -> {
-            int[] values = packetTags.get(location);
-            if (values != null) {
-                if (values.length != 0) {
-                    localValues[tag.ordinal()] = values;
-                } else {
-                    localValues[tag.ordinal()] = IntArrays.EMPTY_ARRAY;
-                }
-            } else {
-                localValues[tag.ordinal()] = IntArrays.EMPTY_ARRAY;
-                GeyserImpl.getInstance().getLogger().debug(type + " tag not found from server: " + location);
+        for (Key registryKey : allTags.keySet()) {
+            JavaRegistryKey<?> registry = JavaRegistries.fromKey(registryKey);
+            if (registry == null || !registry.shouldStoreTags()) {
+                logger.debug("Not loading tags for registry " + registryKey + " (registry not listed in JavaRegistries, or was not suitable to load tags)");
+                continue;
             }
-        });
+
+            Map<Key, int[]> registryTags = allTags.get(registryKey);
+
+            if (registry == JavaRegistries.BLOCK) {
+                // Hack btw
+                int[] convertableToMud = registryTags.get(MinecraftKey.key("convertable_to_mud"));
+                boolean emulatePost1_18Logic = convertableToMud != null && convertableToMud.length != 0;
+                session.setEmulatePost1_18Logic(emulatePost1_18Logic);
+                if (logger.isDebug()) {
+                    logger.debug("Emulating post 1.18 block predication logic for " + session.bedrockUsername() + "? " + emulatePost1_18Logic);
+                }
+            } else if (registry == JavaRegistries.ITEM) {
+                // Hack btw
+                boolean emulatePost1_13Logic = registryTags.get(MinecraftKey.key("signs")).length > 1;
+                session.setEmulatePost1_13Logic(emulatePost1_13Logic);
+                if (logger.isDebug()) {
+                    logger.debug("Emulating post 1.13 villager logic for " + session.bedrockUsername() + "? " + emulatePost1_13Logic);
+                }
+            }
+
+            loadTags(registryTags, registry);
+        }
     }
 
-    /**
-     * @return true if the block tag is present and contains this block mapping's Java ID.
-     */
-    public boolean is(BlockTag tag, Block block) {
-        int[] values = this.blocks[tag.ordinal()];
-        return contains(values, block.javaId());
+    private void loadTags(Map<Key, int[]> packetTags, JavaRegistryKey<?> registry) {
+        for (Map.Entry<Key, int[]> tag : packetTags.entrySet()) {
+            this.tags.put(new Tag<>(registry, tag.getKey()), tag.getValue());
+        }
+    }
+
+    public <T> boolean is(Tag<T> tag, T object) {
+        return contains(getRaw(tag), tag.registry().toNetworkId(session, object));
     }
 
     /**
      * @return true if the item tag is present and contains this item stack's Java ID.
      */
-    public boolean is(ItemTag tag, GeyserItemStack itemStack) {
+    public boolean is(Tag<Item> tag, GeyserItemStack itemStack) {
         return is(tag, itemStack.asItem());
     }
 
     /**
-     * @return true if the item tag is present and contains this item's Java ID.
+     * @return true if the specified network ID is in the given holder set.
      */
-    public boolean is(ItemTag tag, Item item) {
-        int[] values = this.items[tag.ordinal()];
-        return contains(values, item.javaId());
+    public <T> boolean is(GeyserHolderSet<T> holderSet, T object) {
+        return contains(holderSet.resolveRaw(this), holderSet.getRegistry().toNetworkId(session, object));
     }
 
-    public int[] get(ItemTag itemTag) {
-        return this.items[itemTag.ordinal()];
+    public <T> List<T> get(Tag<T> tag) {
+        return mapRawArray(session, getRaw(tag), tag.registry());
     }
 
-    public int[] get(EnchantmentTag enchantmentTag) {
-        return this.enchantments[enchantmentTag.ordinal()];
+    /**
+     * @return the network IDs in the given tag. This can be an empty list.
+     */
+    public int[] getRaw(Tag<?> tag) {
+        return this.tags.getOrDefault(tag, IntArrays.EMPTY_ARRAY);
+    }
+
+    /**
+     * Maps a raw array of network IDs to their respective objects.
+     */
+    public static <T> List<T> mapRawArray(GeyserSession session, int[] array, JavaRegistryKey<T> registry) {
+        return Arrays.stream(array).mapToObj(i -> registry.fromNetworkId(session, i)).toList();
     }
 
     private static boolean contains(int[] array, int i) {
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
new file mode 100644
index 000000000..cb51f488e
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session.cache.registry;
+
+import net.kyori.adventure.key.Key;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.cloudburstmc.protocol.bedrock.data.TrimMaterial;
+import org.cloudburstmc.protocol.bedrock.data.TrimPattern;
+import org.geysermc.geyser.entity.type.living.animal.tameable.WolfEntity;
+import org.geysermc.geyser.inventory.item.BannerPattern;
+import org.geysermc.geyser.item.enchantment.Enchantment;
+import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.level.JavaDimension;
+import org.geysermc.geyser.level.JukeboxSong;
+import org.geysermc.geyser.level.PaintingType;
+import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.registry.BlockRegistries;
+import org.geysermc.geyser.registry.ListRegistry;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.session.cache.RegistryCache;
+import org.geysermc.geyser.util.MinecraftKey;
+import org.geysermc.mcprotocollib.protocol.data.game.chat.ChatType;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Stores {@link JavaRegistryKey} for Java registries that are used for loading of data-driven objects, tags, or both. Read {@link JavaRegistryKey} for more information on how to use one.
+ */
+public class JavaRegistries {
+    private static final List<JavaRegistryKey<?>> VALUES = new ArrayList<>();
+
+    public static final JavaRegistryKey<Block> BLOCK = create("block", BlockRegistries.JAVA_BLOCKS, Block::javaId);
+    public static final JavaRegistryKey<Item> ITEM = create("item", Registries.JAVA_ITEMS, Item::javaId);
+    public static final JavaRegistryKey<ChatType> CHAT_TYPE = create("chat_type", RegistryCache::chatTypes);
+    public static final JavaRegistryKey<JavaDimension> DIMENSION_TYPE = create("dimension_type", RegistryCache::dimensions);
+    public static final JavaRegistryKey<Enchantment> ENCHANTMENT = create("enchantment", RegistryCache::enchantments);
+    public static final JavaRegistryKey<JukeboxSong> JUKEBOX_SONG = create("jukebox_song", RegistryCache::jukeboxSongs);
+    public static final JavaRegistryKey<PaintingType> PAINTING_VARIANT = create("painting_variant", RegistryCache::paintings);
+    public static final JavaRegistryKey<TrimMaterial> TRIM_MATERIAL = create("trim_material", RegistryCache::trimMaterials);
+    public static final JavaRegistryKey<TrimPattern> TRIM_PATTERN = create("trim_pattern", RegistryCache::trimPatterns);
+    /**
+     * This registry should not be used in holder sets, tags, etc. It's simply used as a mapping from Java biomes to Bedrock ones.
+     */
+    public static final JavaRegistryKey<Integer> BIOME = create("worldgen/biome");
+    public static final JavaRegistryKey<BannerPattern> BANNER_PATTERN = create("banner_pattern", RegistryCache::bannerPatterns);
+    public static final JavaRegistryKey<WolfEntity.BuiltInWolfVariant> WOLF_VARIANT = create("wolf_variant", RegistryCache::wolfVariants);
+
+    private static <T> JavaRegistryKey<T> create(String key, JavaRegistryKey.NetworkSerializer<T> networkSerializer, JavaRegistryKey.NetworkDeserializer<T> networkDeserializer) {
+        JavaRegistryKey<T> registry = new JavaRegistryKey<>(MinecraftKey.key(key), networkSerializer, networkDeserializer);
+        VALUES.add(registry);
+        return registry;
+    }
+
+    private static <T> JavaRegistryKey<T> create(String key, ListRegistry<T> registry, RegistryNetworkMapper<T> networkSerializer) {
+        return create(key, (session, object) -> networkSerializer.get(object), (session, id) -> registry.get(id));
+    }
+
+    private static <T> JavaRegistryKey<T> create(String key, RegistryGetter<T> getter) {
+        return create(key, (session, object) -> getter.get(session.getRegistryCache()).byValue(object), (session, id) -> getter.get(session.getRegistryCache()).byId(id));
+    }
+
+    private static <T> JavaRegistryKey<T> create(String key) {
+        // Cast for ambiguous call
+        return create(key, (JavaRegistryKey.NetworkSerializer<T>) null, null);
+    }
+
+    @Nullable
+    public static JavaRegistryKey<?> fromKey(Key registryKey) {
+        for (JavaRegistryKey<?> registry : VALUES) {
+            if (registry.registryKey().equals(registryKey)) {
+                return registry;
+            }
+        }
+        return null;
+    }
+
+    @FunctionalInterface
+    interface RegistryGetter<T> {
+
+        JavaRegistry<T> get(RegistryCache cache);
+    }
+
+    @FunctionalInterface
+    interface RegistryNetworkMapper<T> {
+
+        int get(T object);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistryKey.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistryKey.java
new file mode 100644
index 000000000..369bea7a4
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistryKey.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session.cache.registry;
+
+import net.kyori.adventure.key.Key;
+import org.geysermc.geyser.session.GeyserSession;
+
+import javax.annotation.Nullable;
+
+/**
+ * Defines a Java registry, which can be hardcoded or data-driven. This class doesn't store registry contents itself, that is handled by {@link org.geysermc.geyser.session.cache.RegistryCache} in the case of
+ * data-driven registries and other classes in the case of hardcoded registries.
+ *
+ * <p>This class is used when, for a Java registry, data-driven objects or tags need to be loaded. Only one instance of this class should be created for each Java registry. Instances of this
+ * class are kept in {@link JavaRegistries}, which also has useful methods for creating instances of this class. When only using a registry to load data-driven objects, the network (de)serializer parameters
+ * can be null. For tag loading however, these are required, as {@link org.geysermc.geyser.session.cache.TagCache} relies on their functionality.</p>
+ *
+ * @param registryKey the registry key, as it appears on Java.
+ * @param networkSerializer a method that converts an object in this registry to its network ID.
+ * @param networkDeserializer a method that converts a network ID to an object in this registry.
+ * @param <T> the object type this registry holds.
+ */
+public record JavaRegistryKey<T>(Key registryKey, @Nullable NetworkSerializer<T> networkSerializer, @Nullable NetworkDeserializer<T> networkDeserializer) {
+
+    /**
+     * Converts an object in this registry to its network ID. This will fail if this registry doesn't have a network serializer.
+     */
+    public int toNetworkId(GeyserSession session, T object) {
+        if (networkSerializer == null) {
+            throw new UnsupportedOperationException("Registry does not hava a network serializer");
+        }
+        return networkSerializer.toNetworkId(session, object);
+    }
+
+    /**
+     * Converts a network ID to an object in this registry. This will fail if this registry doesn't have a network deserializer.
+     */
+    public T fromNetworkId(GeyserSession session, int networkId) {
+        if (networkDeserializer == null) {
+            throw new UnsupportedOperationException("Registry does not hava a network deserializer");
+        }
+        return networkDeserializer.fromNetworkId(session, networkId);
+    }
+
+    /**
+     * @return true if this registry has a network serializer and deserializer.
+     */
+    public boolean shouldStoreTags() {
+        return networkSerializer != null && networkDeserializer != null;
+    }
+
+    @FunctionalInterface
+    public interface NetworkSerializer<T> {
+
+        int toNetworkId(GeyserSession session, T object);
+    }
+
+    @FunctionalInterface
+    public interface NetworkDeserializer<T> {
+
+        T fromNetworkId(GeyserSession session, int networkId);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java
index 1dca7843a..6ad666780 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java
@@ -25,214 +25,203 @@
 
 package org.geysermc.geyser.session.cache.tags;
 
-import net.kyori.adventure.key.Key;
-import org.geysermc.geyser.util.Ordered;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.util.MinecraftKey;
 
+/**
+ * Lists vanilla block tags.
+ */
 @SuppressWarnings("unused")
-public final class BlockTag implements Ordered {
-    public static final Map<Key, BlockTag> ALL_BLOCK_TAGS = new HashMap<>();
+public final class BlockTag {
+    public static final Tag<Block> WOOL = create("wool");
+    public static final Tag<Block> PLANKS = create("planks");
+    public static final Tag<Block> STONE_BRICKS = create("stone_bricks");
+    public static final Tag<Block> WOODEN_BUTTONS = create("wooden_buttons");
+    public static final Tag<Block> STONE_BUTTONS = create("stone_buttons");
+    public static final Tag<Block> BUTTONS = create("buttons");
+    public static final Tag<Block> WOOL_CARPETS = create("wool_carpets");
+    public static final Tag<Block> WOODEN_DOORS = create("wooden_doors");
+    public static final Tag<Block> MOB_INTERACTABLE_DOORS = create("mob_interactable_doors");
+    public static final Tag<Block> WOODEN_STAIRS = create("wooden_stairs");
+    public static final Tag<Block> WOODEN_SLABS = create("wooden_slabs");
+    public static final Tag<Block> WOODEN_FENCES = create("wooden_fences");
+    public static final Tag<Block> PRESSURE_PLATES = create("pressure_plates");
+    public static final Tag<Block> WOODEN_PRESSURE_PLATES = create("wooden_pressure_plates");
+    public static final Tag<Block> STONE_PRESSURE_PLATES = create("stone_pressure_plates");
+    public static final Tag<Block> WOODEN_TRAPDOORS = create("wooden_trapdoors");
+    public static final Tag<Block> DOORS = create("doors");
+    public static final Tag<Block> SAPLINGS = create("saplings");
+    public static final Tag<Block> LOGS_THAT_BURN = create("logs_that_burn");
+    public static final Tag<Block> OVERWORLD_NATURAL_LOGS = create("overworld_natural_logs");
+    public static final Tag<Block> LOGS = create("logs");
+    public static final Tag<Block> DARK_OAK_LOGS = create("dark_oak_logs");
+    public static final Tag<Block> OAK_LOGS = create("oak_logs");
+    public static final Tag<Block> BIRCH_LOGS = create("birch_logs");
+    public static final Tag<Block> ACACIA_LOGS = create("acacia_logs");
+    public static final Tag<Block> CHERRY_LOGS = create("cherry_logs");
+    public static final Tag<Block> JUNGLE_LOGS = create("jungle_logs");
+    public static final Tag<Block> SPRUCE_LOGS = create("spruce_logs");
+    public static final Tag<Block> MANGROVE_LOGS = create("mangrove_logs");
+    public static final Tag<Block> CRIMSON_STEMS = create("crimson_stems");
+    public static final Tag<Block> WARPED_STEMS = create("warped_stems");
+    public static final Tag<Block> BAMBOO_BLOCKS = create("bamboo_blocks");
+    public static final Tag<Block> WART_BLOCKS = create("wart_blocks");
+    public static final Tag<Block> BANNERS = create("banners");
+    public static final Tag<Block> SAND = create("sand");
+    public static final Tag<Block> SMELTS_TO_GLASS = create("smelts_to_glass");
+    public static final Tag<Block> STAIRS = create("stairs");
+    public static final Tag<Block> SLABS = create("slabs");
+    public static final Tag<Block> WALLS = create("walls");
+    public static final Tag<Block> ANVIL = create("anvil");
+    public static final Tag<Block> RAILS = create("rails");
+    public static final Tag<Block> LEAVES = create("leaves");
+    public static final Tag<Block> TRAPDOORS = create("trapdoors");
+    public static final Tag<Block> SMALL_FLOWERS = create("small_flowers");
+    public static final Tag<Block> BEDS = create("beds");
+    public static final Tag<Block> FENCES = create("fences");
+    public static final Tag<Block> TALL_FLOWERS = create("tall_flowers");
+    public static final Tag<Block> FLOWERS = create("flowers");
+    public static final Tag<Block> PIGLIN_REPELLENTS = create("piglin_repellents");
+    public static final Tag<Block> GOLD_ORES = create("gold_ores");
+    public static final Tag<Block> IRON_ORES = create("iron_ores");
+    public static final Tag<Block> DIAMOND_ORES = create("diamond_ores");
+    public static final Tag<Block> REDSTONE_ORES = create("redstone_ores");
+    public static final Tag<Block> LAPIS_ORES = create("lapis_ores");
+    public static final Tag<Block> COAL_ORES = create("coal_ores");
+    public static final Tag<Block> EMERALD_ORES = create("emerald_ores");
+    public static final Tag<Block> COPPER_ORES = create("copper_ores");
+    public static final Tag<Block> CANDLES = create("candles");
+    public static final Tag<Block> DIRT = create("dirt");
+    public static final Tag<Block> TERRACOTTA = create("terracotta");
+    public static final Tag<Block> BADLANDS_TERRACOTTA = create("badlands_terracotta");
+    public static final Tag<Block> CONCRETE_POWDER = create("concrete_powder");
+    public static final Tag<Block> COMPLETES_FIND_TREE_TUTORIAL = create("completes_find_tree_tutorial");
+    public static final Tag<Block> FLOWER_POTS = create("flower_pots");
+    public static final Tag<Block> ENDERMAN_HOLDABLE = create("enderman_holdable");
+    public static final Tag<Block> ICE = create("ice");
+    public static final Tag<Block> VALID_SPAWN = create("valid_spawn");
+    public static final Tag<Block> IMPERMEABLE = create("impermeable");
+    public static final Tag<Block> UNDERWATER_BONEMEALS = create("underwater_bonemeals");
+    public static final Tag<Block> CORAL_BLOCKS = create("coral_blocks");
+    public static final Tag<Block> WALL_CORALS = create("wall_corals");
+    public static final Tag<Block> CORAL_PLANTS = create("coral_plants");
+    public static final Tag<Block> CORALS = create("corals");
+    public static final Tag<Block> BAMBOO_PLANTABLE_ON = create("bamboo_plantable_on");
+    public static final Tag<Block> STANDING_SIGNS = create("standing_signs");
+    public static final Tag<Block> WALL_SIGNS = create("wall_signs");
+    public static final Tag<Block> SIGNS = create("signs");
+    public static final Tag<Block> CEILING_HANGING_SIGNS = create("ceiling_hanging_signs");
+    public static final Tag<Block> WALL_HANGING_SIGNS = create("wall_hanging_signs");
+    public static final Tag<Block> ALL_HANGING_SIGNS = create("all_hanging_signs");
+    public static final Tag<Block> ALL_SIGNS = create("all_signs");
+    public static final Tag<Block> DRAGON_IMMUNE = create("dragon_immune");
+    public static final Tag<Block> DRAGON_TRANSPARENT = create("dragon_transparent");
+    public static final Tag<Block> WITHER_IMMUNE = create("wither_immune");
+    public static final Tag<Block> WITHER_SUMMON_BASE_BLOCKS = create("wither_summon_base_blocks");
+    public static final Tag<Block> BEEHIVES = create("beehives");
+    public static final Tag<Block> CROPS = create("crops");
+    public static final Tag<Block> BEE_GROWABLES = create("bee_growables");
+    public static final Tag<Block> PORTALS = create("portals");
+    public static final Tag<Block> FIRE = create("fire");
+    public static final Tag<Block> NYLIUM = create("nylium");
+    public static final Tag<Block> BEACON_BASE_BLOCKS = create("beacon_base_blocks");
+    public static final Tag<Block> SOUL_SPEED_BLOCKS = create("soul_speed_blocks");
+    public static final Tag<Block> WALL_POST_OVERRIDE = create("wall_post_override");
+    public static final Tag<Block> CLIMBABLE = create("climbable");
+    public static final Tag<Block> FALL_DAMAGE_RESETTING = create("fall_damage_resetting");
+    public static final Tag<Block> SHULKER_BOXES = create("shulker_boxes");
+    public static final Tag<Block> HOGLIN_REPELLENTS = create("hoglin_repellents");
+    public static final Tag<Block> SOUL_FIRE_BASE_BLOCKS = create("soul_fire_base_blocks");
+    public static final Tag<Block> STRIDER_WARM_BLOCKS = create("strider_warm_blocks");
+    public static final Tag<Block> CAMPFIRES = create("campfires");
+    public static final Tag<Block> GUARDED_BY_PIGLINS = create("guarded_by_piglins");
+    public static final Tag<Block> PREVENT_MOB_SPAWNING_INSIDE = create("prevent_mob_spawning_inside");
+    public static final Tag<Block> FENCE_GATES = create("fence_gates");
+    public static final Tag<Block> UNSTABLE_BOTTOM_CENTER = create("unstable_bottom_center");
+    public static final Tag<Block> MUSHROOM_GROW_BLOCK = create("mushroom_grow_block");
+    public static final Tag<Block> INFINIBURN_OVERWORLD = create("infiniburn_overworld");
+    public static final Tag<Block> INFINIBURN_NETHER = create("infiniburn_nether");
+    public static final Tag<Block> INFINIBURN_END = create("infiniburn_end");
+    public static final Tag<Block> BASE_STONE_OVERWORLD = create("base_stone_overworld");
+    public static final Tag<Block> STONE_ORE_REPLACEABLES = create("stone_ore_replaceables");
+    public static final Tag<Block> DEEPSLATE_ORE_REPLACEABLES = create("deepslate_ore_replaceables");
+    public static final Tag<Block> BASE_STONE_NETHER = create("base_stone_nether");
+    public static final Tag<Block> OVERWORLD_CARVER_REPLACEABLES = create("overworld_carver_replaceables");
+    public static final Tag<Block> NETHER_CARVER_REPLACEABLES = create("nether_carver_replaceables");
+    public static final Tag<Block> CANDLE_CAKES = create("candle_cakes");
+    public static final Tag<Block> CAULDRONS = create("cauldrons");
+    public static final Tag<Block> CRYSTAL_SOUND_BLOCKS = create("crystal_sound_blocks");
+    public static final Tag<Block> INSIDE_STEP_SOUND_BLOCKS = create("inside_step_sound_blocks");
+    public static final Tag<Block> COMBINATION_STEP_SOUND_BLOCKS = create("combination_step_sound_blocks");
+    public static final Tag<Block> CAMEL_SAND_STEP_SOUND_BLOCKS = create("camel_sand_step_sound_blocks");
+    public static final Tag<Block> OCCLUDES_VIBRATION_SIGNALS = create("occludes_vibration_signals");
+    public static final Tag<Block> DAMPENS_VIBRATIONS = create("dampens_vibrations");
+    public static final Tag<Block> DRIPSTONE_REPLACEABLE_BLOCKS = create("dripstone_replaceable_blocks");
+    public static final Tag<Block> CAVE_VINES = create("cave_vines");
+    public static final Tag<Block> MOSS_REPLACEABLE = create("moss_replaceable");
+    public static final Tag<Block> LUSH_GROUND_REPLACEABLE = create("lush_ground_replaceable");
+    public static final Tag<Block> AZALEA_ROOT_REPLACEABLE = create("azalea_root_replaceable");
+    public static final Tag<Block> SMALL_DRIPLEAF_PLACEABLE = create("small_dripleaf_placeable");
+    public static final Tag<Block> BIG_DRIPLEAF_PLACEABLE = create("big_dripleaf_placeable");
+    public static final Tag<Block> SNOW = create("snow");
+    public static final Tag<Block> MINEABLE_AXE = create("mineable/axe");
+    public static final Tag<Block> MINEABLE_HOE = create("mineable/hoe");
+    public static final Tag<Block> MINEABLE_PICKAXE = create("mineable/pickaxe");
+    public static final Tag<Block> MINEABLE_SHOVEL = create("mineable/shovel");
+    public static final Tag<Block> SWORD_EFFICIENT = create("sword_efficient");
+    public static final Tag<Block> NEEDS_DIAMOND_TOOL = create("needs_diamond_tool");
+    public static final Tag<Block> NEEDS_IRON_TOOL = create("needs_iron_tool");
+    public static final Tag<Block> NEEDS_STONE_TOOL = create("needs_stone_tool");
+    public static final Tag<Block> INCORRECT_FOR_NETHERITE_TOOL = create("incorrect_for_netherite_tool");
+    public static final Tag<Block> INCORRECT_FOR_DIAMOND_TOOL = create("incorrect_for_diamond_tool");
+    public static final Tag<Block> INCORRECT_FOR_IRON_TOOL = create("incorrect_for_iron_tool");
+    public static final Tag<Block> INCORRECT_FOR_STONE_TOOL = create("incorrect_for_stone_tool");
+    public static final Tag<Block> INCORRECT_FOR_GOLD_TOOL = create("incorrect_for_gold_tool");
+    public static final Tag<Block> INCORRECT_FOR_WOODEN_TOOL = create("incorrect_for_wooden_tool");
+    public static final Tag<Block> FEATURES_CANNOT_REPLACE = create("features_cannot_replace");
+    public static final Tag<Block> LAVA_POOL_STONE_CANNOT_REPLACE = create("lava_pool_stone_cannot_replace");
+    public static final Tag<Block> GEODE_INVALID_BLOCKS = create("geode_invalid_blocks");
+    public static final Tag<Block> FROG_PREFER_JUMP_TO = create("frog_prefer_jump_to");
+    public static final Tag<Block> SCULK_REPLACEABLE = create("sculk_replaceable");
+    public static final Tag<Block> SCULK_REPLACEABLE_WORLD_GEN = create("sculk_replaceable_world_gen");
+    public static final Tag<Block> ANCIENT_CITY_REPLACEABLE = create("ancient_city_replaceable");
+    public static final Tag<Block> VIBRATION_RESONATORS = create("vibration_resonators");
+    public static final Tag<Block> ANIMALS_SPAWNABLE_ON = create("animals_spawnable_on");
+    public static final Tag<Block> ARMADILLO_SPAWNABLE_ON = create("armadillo_spawnable_on");
+    public static final Tag<Block> AXOLOTLS_SPAWNABLE_ON = create("axolotls_spawnable_on");
+    public static final Tag<Block> GOATS_SPAWNABLE_ON = create("goats_spawnable_on");
+    public static final Tag<Block> MOOSHROOMS_SPAWNABLE_ON = create("mooshrooms_spawnable_on");
+    public static final Tag<Block> PARROTS_SPAWNABLE_ON = create("parrots_spawnable_on");
+    public static final Tag<Block> POLAR_BEARS_SPAWNABLE_ON_ALTERNATE = create("polar_bears_spawnable_on_alternate");
+    public static final Tag<Block> RABBITS_SPAWNABLE_ON = create("rabbits_spawnable_on");
+    public static final Tag<Block> FOXES_SPAWNABLE_ON = create("foxes_spawnable_on");
+    public static final Tag<Block> WOLVES_SPAWNABLE_ON = create("wolves_spawnable_on");
+    public static final Tag<Block> FROGS_SPAWNABLE_ON = create("frogs_spawnable_on");
+    public static final Tag<Block> AZALEA_GROWS_ON = create("azalea_grows_on");
+    public static final Tag<Block> CONVERTABLE_TO_MUD = create("convertable_to_mud");
+    public static final Tag<Block> MANGROVE_LOGS_CAN_GROW_THROUGH = create("mangrove_logs_can_grow_through");
+    public static final Tag<Block> MANGROVE_ROOTS_CAN_GROW_THROUGH = create("mangrove_roots_can_grow_through");
+    public static final Tag<Block> DEAD_BUSH_MAY_PLACE_ON = create("dead_bush_may_place_on");
+    public static final Tag<Block> SNAPS_GOAT_HORN = create("snaps_goat_horn");
+    public static final Tag<Block> REPLACEABLE_BY_TREES = create("replaceable_by_trees");
+    public static final Tag<Block> SNOW_LAYER_CANNOT_SURVIVE_ON = create("snow_layer_cannot_survive_on");
+    public static final Tag<Block> SNOW_LAYER_CAN_SURVIVE_ON = create("snow_layer_can_survive_on");
+    public static final Tag<Block> INVALID_SPAWN_INSIDE = create("invalid_spawn_inside");
+    public static final Tag<Block> SNIFFER_DIGGABLE_BLOCK = create("sniffer_diggable_block");
+    public static final Tag<Block> SNIFFER_EGG_HATCH_BOOST = create("sniffer_egg_hatch_boost");
+    public static final Tag<Block> TRAIL_RUINS_REPLACEABLE = create("trail_ruins_replaceable");
+    public static final Tag<Block> REPLACEABLE = create("replaceable");
+    public static final Tag<Block> ENCHANTMENT_POWER_PROVIDER = create("enchantment_power_provider");
+    public static final Tag<Block> ENCHANTMENT_POWER_TRANSMITTER = create("enchantment_power_transmitter");
+    public static final Tag<Block> MAINTAINS_FARMLAND = create("maintains_farmland");
+    public static final Tag<Block> BLOCKS_WIND_CHARGE_EXPLOSIONS = create("blocks_wind_charge_explosions");
+    public static final Tag<Block> DOES_NOT_BLOCK_HOPPERS = create("does_not_block_hoppers");
+    public static final Tag<Block> AIR = create("air");
 
-    public static final BlockTag WOOL = new BlockTag("wool");
-    public static final BlockTag PLANKS = new BlockTag("planks");
-    public static final BlockTag STONE_BRICKS = new BlockTag("stone_bricks");
-    public static final BlockTag WOODEN_BUTTONS = new BlockTag("wooden_buttons");
-    public static final BlockTag STONE_BUTTONS = new BlockTag("stone_buttons");
-    public static final BlockTag BUTTONS = new BlockTag("buttons");
-    public static final BlockTag WOOL_CARPETS = new BlockTag("wool_carpets");
-    public static final BlockTag WOODEN_DOORS = new BlockTag("wooden_doors");
-    public static final BlockTag MOB_INTERACTABLE_DOORS = new BlockTag("mob_interactable_doors");
-    public static final BlockTag WOODEN_STAIRS = new BlockTag("wooden_stairs");
-    public static final BlockTag WOODEN_SLABS = new BlockTag("wooden_slabs");
-    public static final BlockTag WOODEN_FENCES = new BlockTag("wooden_fences");
-    public static final BlockTag PRESSURE_PLATES = new BlockTag("pressure_plates");
-    public static final BlockTag WOODEN_PRESSURE_PLATES = new BlockTag("wooden_pressure_plates");
-    public static final BlockTag STONE_PRESSURE_PLATES = new BlockTag("stone_pressure_plates");
-    public static final BlockTag WOODEN_TRAPDOORS = new BlockTag("wooden_trapdoors");
-    public static final BlockTag DOORS = new BlockTag("doors");
-    public static final BlockTag SAPLINGS = new BlockTag("saplings");
-    public static final BlockTag LOGS_THAT_BURN = new BlockTag("logs_that_burn");
-    public static final BlockTag OVERWORLD_NATURAL_LOGS = new BlockTag("overworld_natural_logs");
-    public static final BlockTag LOGS = new BlockTag("logs");
-    public static final BlockTag DARK_OAK_LOGS = new BlockTag("dark_oak_logs");
-    public static final BlockTag OAK_LOGS = new BlockTag("oak_logs");
-    public static final BlockTag BIRCH_LOGS = new BlockTag("birch_logs");
-    public static final BlockTag ACACIA_LOGS = new BlockTag("acacia_logs");
-    public static final BlockTag CHERRY_LOGS = new BlockTag("cherry_logs");
-    public static final BlockTag JUNGLE_LOGS = new BlockTag("jungle_logs");
-    public static final BlockTag SPRUCE_LOGS = new BlockTag("spruce_logs");
-    public static final BlockTag MANGROVE_LOGS = new BlockTag("mangrove_logs");
-    public static final BlockTag CRIMSON_STEMS = new BlockTag("crimson_stems");
-    public static final BlockTag WARPED_STEMS = new BlockTag("warped_stems");
-    public static final BlockTag BAMBOO_BLOCKS = new BlockTag("bamboo_blocks");
-    public static final BlockTag WART_BLOCKS = new BlockTag("wart_blocks");
-    public static final BlockTag BANNERS = new BlockTag("banners");
-    public static final BlockTag SAND = new BlockTag("sand");
-    public static final BlockTag SMELTS_TO_GLASS = new BlockTag("smelts_to_glass");
-    public static final BlockTag STAIRS = new BlockTag("stairs");
-    public static final BlockTag SLABS = new BlockTag("slabs");
-    public static final BlockTag WALLS = new BlockTag("walls");
-    public static final BlockTag ANVIL = new BlockTag("anvil");
-    public static final BlockTag RAILS = new BlockTag("rails");
-    public static final BlockTag LEAVES = new BlockTag("leaves");
-    public static final BlockTag TRAPDOORS = new BlockTag("trapdoors");
-    public static final BlockTag SMALL_FLOWERS = new BlockTag("small_flowers");
-    public static final BlockTag BEDS = new BlockTag("beds");
-    public static final BlockTag FENCES = new BlockTag("fences");
-    public static final BlockTag TALL_FLOWERS = new BlockTag("tall_flowers");
-    public static final BlockTag FLOWERS = new BlockTag("flowers");
-    public static final BlockTag PIGLIN_REPELLENTS = new BlockTag("piglin_repellents");
-    public static final BlockTag GOLD_ORES = new BlockTag("gold_ores");
-    public static final BlockTag IRON_ORES = new BlockTag("iron_ores");
-    public static final BlockTag DIAMOND_ORES = new BlockTag("diamond_ores");
-    public static final BlockTag REDSTONE_ORES = new BlockTag("redstone_ores");
-    public static final BlockTag LAPIS_ORES = new BlockTag("lapis_ores");
-    public static final BlockTag COAL_ORES = new BlockTag("coal_ores");
-    public static final BlockTag EMERALD_ORES = new BlockTag("emerald_ores");
-    public static final BlockTag COPPER_ORES = new BlockTag("copper_ores");
-    public static final BlockTag CANDLES = new BlockTag("candles");
-    public static final BlockTag DIRT = new BlockTag("dirt");
-    public static final BlockTag TERRACOTTA = new BlockTag("terracotta");
-    public static final BlockTag BADLANDS_TERRACOTTA = new BlockTag("badlands_terracotta");
-    public static final BlockTag CONCRETE_POWDER = new BlockTag("concrete_powder");
-    public static final BlockTag COMPLETES_FIND_TREE_TUTORIAL = new BlockTag("completes_find_tree_tutorial");
-    public static final BlockTag FLOWER_POTS = new BlockTag("flower_pots");
-    public static final BlockTag ENDERMAN_HOLDABLE = new BlockTag("enderman_holdable");
-    public static final BlockTag ICE = new BlockTag("ice");
-    public static final BlockTag VALID_SPAWN = new BlockTag("valid_spawn");
-    public static final BlockTag IMPERMEABLE = new BlockTag("impermeable");
-    public static final BlockTag UNDERWATER_BONEMEALS = new BlockTag("underwater_bonemeals");
-    public static final BlockTag CORAL_BLOCKS = new BlockTag("coral_blocks");
-    public static final BlockTag WALL_CORALS = new BlockTag("wall_corals");
-    public static final BlockTag CORAL_PLANTS = new BlockTag("coral_plants");
-    public static final BlockTag CORALS = new BlockTag("corals");
-    public static final BlockTag BAMBOO_PLANTABLE_ON = new BlockTag("bamboo_plantable_on");
-    public static final BlockTag STANDING_SIGNS = new BlockTag("standing_signs");
-    public static final BlockTag WALL_SIGNS = new BlockTag("wall_signs");
-    public static final BlockTag SIGNS = new BlockTag("signs");
-    public static final BlockTag CEILING_HANGING_SIGNS = new BlockTag("ceiling_hanging_signs");
-    public static final BlockTag WALL_HANGING_SIGNS = new BlockTag("wall_hanging_signs");
-    public static final BlockTag ALL_HANGING_SIGNS = new BlockTag("all_hanging_signs");
-    public static final BlockTag ALL_SIGNS = new BlockTag("all_signs");
-    public static final BlockTag DRAGON_IMMUNE = new BlockTag("dragon_immune");
-    public static final BlockTag DRAGON_TRANSPARENT = new BlockTag("dragon_transparent");
-    public static final BlockTag WITHER_IMMUNE = new BlockTag("wither_immune");
-    public static final BlockTag WITHER_SUMMON_BASE_BLOCKS = new BlockTag("wither_summon_base_blocks");
-    public static final BlockTag BEEHIVES = new BlockTag("beehives");
-    public static final BlockTag CROPS = new BlockTag("crops");
-    public static final BlockTag BEE_GROWABLES = new BlockTag("bee_growables");
-    public static final BlockTag PORTALS = new BlockTag("portals");
-    public static final BlockTag FIRE = new BlockTag("fire");
-    public static final BlockTag NYLIUM = new BlockTag("nylium");
-    public static final BlockTag BEACON_BASE_BLOCKS = new BlockTag("beacon_base_blocks");
-    public static final BlockTag SOUL_SPEED_BLOCKS = new BlockTag("soul_speed_blocks");
-    public static final BlockTag WALL_POST_OVERRIDE = new BlockTag("wall_post_override");
-    public static final BlockTag CLIMBABLE = new BlockTag("climbable");
-    public static final BlockTag FALL_DAMAGE_RESETTING = new BlockTag("fall_damage_resetting");
-    public static final BlockTag SHULKER_BOXES = new BlockTag("shulker_boxes");
-    public static final BlockTag HOGLIN_REPELLENTS = new BlockTag("hoglin_repellents");
-    public static final BlockTag SOUL_FIRE_BASE_BLOCKS = new BlockTag("soul_fire_base_blocks");
-    public static final BlockTag STRIDER_WARM_BLOCKS = new BlockTag("strider_warm_blocks");
-    public static final BlockTag CAMPFIRES = new BlockTag("campfires");
-    public static final BlockTag GUARDED_BY_PIGLINS = new BlockTag("guarded_by_piglins");
-    public static final BlockTag PREVENT_MOB_SPAWNING_INSIDE = new BlockTag("prevent_mob_spawning_inside");
-    public static final BlockTag FENCE_GATES = new BlockTag("fence_gates");
-    public static final BlockTag UNSTABLE_BOTTOM_CENTER = new BlockTag("unstable_bottom_center");
-    public static final BlockTag MUSHROOM_GROW_BLOCK = new BlockTag("mushroom_grow_block");
-    public static final BlockTag INFINIBURN_OVERWORLD = new BlockTag("infiniburn_overworld");
-    public static final BlockTag INFINIBURN_NETHER = new BlockTag("infiniburn_nether");
-    public static final BlockTag INFINIBURN_END = new BlockTag("infiniburn_end");
-    public static final BlockTag BASE_STONE_OVERWORLD = new BlockTag("base_stone_overworld");
-    public static final BlockTag STONE_ORE_REPLACEABLES = new BlockTag("stone_ore_replaceables");
-    public static final BlockTag DEEPSLATE_ORE_REPLACEABLES = new BlockTag("deepslate_ore_replaceables");
-    public static final BlockTag BASE_STONE_NETHER = new BlockTag("base_stone_nether");
-    public static final BlockTag OVERWORLD_CARVER_REPLACEABLES = new BlockTag("overworld_carver_replaceables");
-    public static final BlockTag NETHER_CARVER_REPLACEABLES = new BlockTag("nether_carver_replaceables");
-    public static final BlockTag CANDLE_CAKES = new BlockTag("candle_cakes");
-    public static final BlockTag CAULDRONS = new BlockTag("cauldrons");
-    public static final BlockTag CRYSTAL_SOUND_BLOCKS = new BlockTag("crystal_sound_blocks");
-    public static final BlockTag INSIDE_STEP_SOUND_BLOCKS = new BlockTag("inside_step_sound_blocks");
-    public static final BlockTag COMBINATION_STEP_SOUND_BLOCKS = new BlockTag("combination_step_sound_blocks");
-    public static final BlockTag CAMEL_SAND_STEP_SOUND_BLOCKS = new BlockTag("camel_sand_step_sound_blocks");
-    public static final BlockTag OCCLUDES_VIBRATION_SIGNALS = new BlockTag("occludes_vibration_signals");
-    public static final BlockTag DAMPENS_VIBRATIONS = new BlockTag("dampens_vibrations");
-    public static final BlockTag DRIPSTONE_REPLACEABLE_BLOCKS = new BlockTag("dripstone_replaceable_blocks");
-    public static final BlockTag CAVE_VINES = new BlockTag("cave_vines");
-    public static final BlockTag MOSS_REPLACEABLE = new BlockTag("moss_replaceable");
-    public static final BlockTag LUSH_GROUND_REPLACEABLE = new BlockTag("lush_ground_replaceable");
-    public static final BlockTag AZALEA_ROOT_REPLACEABLE = new BlockTag("azalea_root_replaceable");
-    public static final BlockTag SMALL_DRIPLEAF_PLACEABLE = new BlockTag("small_dripleaf_placeable");
-    public static final BlockTag BIG_DRIPLEAF_PLACEABLE = new BlockTag("big_dripleaf_placeable");
-    public static final BlockTag SNOW = new BlockTag("snow");
-    public static final BlockTag MINEABLE_AXE = new BlockTag("mineable/axe");
-    public static final BlockTag MINEABLE_HOE = new BlockTag("mineable/hoe");
-    public static final BlockTag MINEABLE_PICKAXE = new BlockTag("mineable/pickaxe");
-    public static final BlockTag MINEABLE_SHOVEL = new BlockTag("mineable/shovel");
-    public static final BlockTag SWORD_EFFICIENT = new BlockTag("sword_efficient");
-    public static final BlockTag NEEDS_DIAMOND_TOOL = new BlockTag("needs_diamond_tool");
-    public static final BlockTag NEEDS_IRON_TOOL = new BlockTag("needs_iron_tool");
-    public static final BlockTag NEEDS_STONE_TOOL = new BlockTag("needs_stone_tool");
-    public static final BlockTag INCORRECT_FOR_NETHERITE_TOOL = new BlockTag("incorrect_for_netherite_tool");
-    public static final BlockTag INCORRECT_FOR_DIAMOND_TOOL = new BlockTag("incorrect_for_diamond_tool");
-    public static final BlockTag INCORRECT_FOR_IRON_TOOL = new BlockTag("incorrect_for_iron_tool");
-    public static final BlockTag INCORRECT_FOR_STONE_TOOL = new BlockTag("incorrect_for_stone_tool");
-    public static final BlockTag INCORRECT_FOR_GOLD_TOOL = new BlockTag("incorrect_for_gold_tool");
-    public static final BlockTag INCORRECT_FOR_WOODEN_TOOL = new BlockTag("incorrect_for_wooden_tool");
-    public static final BlockTag FEATURES_CANNOT_REPLACE = new BlockTag("features_cannot_replace");
-    public static final BlockTag LAVA_POOL_STONE_CANNOT_REPLACE = new BlockTag("lava_pool_stone_cannot_replace");
-    public static final BlockTag GEODE_INVALID_BLOCKS = new BlockTag("geode_invalid_blocks");
-    public static final BlockTag FROG_PREFER_JUMP_TO = new BlockTag("frog_prefer_jump_to");
-    public static final BlockTag SCULK_REPLACEABLE = new BlockTag("sculk_replaceable");
-    public static final BlockTag SCULK_REPLACEABLE_WORLD_GEN = new BlockTag("sculk_replaceable_world_gen");
-    public static final BlockTag ANCIENT_CITY_REPLACEABLE = new BlockTag("ancient_city_replaceable");
-    public static final BlockTag VIBRATION_RESONATORS = new BlockTag("vibration_resonators");
-    public static final BlockTag ANIMALS_SPAWNABLE_ON = new BlockTag("animals_spawnable_on");
-    public static final BlockTag ARMADILLO_SPAWNABLE_ON = new BlockTag("armadillo_spawnable_on");
-    public static final BlockTag AXOLOTLS_SPAWNABLE_ON = new BlockTag("axolotls_spawnable_on");
-    public static final BlockTag GOATS_SPAWNABLE_ON = new BlockTag("goats_spawnable_on");
-    public static final BlockTag MOOSHROOMS_SPAWNABLE_ON = new BlockTag("mooshrooms_spawnable_on");
-    public static final BlockTag PARROTS_SPAWNABLE_ON = new BlockTag("parrots_spawnable_on");
-    public static final BlockTag POLAR_BEARS_SPAWNABLE_ON_ALTERNATE = new BlockTag("polar_bears_spawnable_on_alternate");
-    public static final BlockTag RABBITS_SPAWNABLE_ON = new BlockTag("rabbits_spawnable_on");
-    public static final BlockTag FOXES_SPAWNABLE_ON = new BlockTag("foxes_spawnable_on");
-    public static final BlockTag WOLVES_SPAWNABLE_ON = new BlockTag("wolves_spawnable_on");
-    public static final BlockTag FROGS_SPAWNABLE_ON = new BlockTag("frogs_spawnable_on");
-    public static final BlockTag AZALEA_GROWS_ON = new BlockTag("azalea_grows_on");
-    public static final BlockTag CONVERTABLE_TO_MUD = new BlockTag("convertable_to_mud");
-    public static final BlockTag MANGROVE_LOGS_CAN_GROW_THROUGH = new BlockTag("mangrove_logs_can_grow_through");
-    public static final BlockTag MANGROVE_ROOTS_CAN_GROW_THROUGH = new BlockTag("mangrove_roots_can_grow_through");
-    public static final BlockTag DEAD_BUSH_MAY_PLACE_ON = new BlockTag("dead_bush_may_place_on");
-    public static final BlockTag SNAPS_GOAT_HORN = new BlockTag("snaps_goat_horn");
-    public static final BlockTag REPLACEABLE_BY_TREES = new BlockTag("replaceable_by_trees");
-    public static final BlockTag SNOW_LAYER_CANNOT_SURVIVE_ON = new BlockTag("snow_layer_cannot_survive_on");
-    public static final BlockTag SNOW_LAYER_CAN_SURVIVE_ON = new BlockTag("snow_layer_can_survive_on");
-    public static final BlockTag INVALID_SPAWN_INSIDE = new BlockTag("invalid_spawn_inside");
-    public static final BlockTag SNIFFER_DIGGABLE_BLOCK = new BlockTag("sniffer_diggable_block");
-    public static final BlockTag SNIFFER_EGG_HATCH_BOOST = new BlockTag("sniffer_egg_hatch_boost");
-    public static final BlockTag TRAIL_RUINS_REPLACEABLE = new BlockTag("trail_ruins_replaceable");
-    public static final BlockTag REPLACEABLE = new BlockTag("replaceable");
-    public static final BlockTag ENCHANTMENT_POWER_PROVIDER = new BlockTag("enchantment_power_provider");
-    public static final BlockTag ENCHANTMENT_POWER_TRANSMITTER = new BlockTag("enchantment_power_transmitter");
-    public static final BlockTag MAINTAINS_FARMLAND = new BlockTag("maintains_farmland");
-    public static final BlockTag BLOCKS_WIND_CHARGE_EXPLOSIONS = new BlockTag("blocks_wind_charge_explosions");
-    public static final BlockTag DOES_NOT_BLOCK_HOPPERS = new BlockTag("does_not_block_hoppers");
-    public static final BlockTag AIR = new BlockTag("air");
+    private BlockTag() {}
 
-    private final int id;
-    
-    private BlockTag(String identifier) {
-        this.id = ALL_BLOCK_TAGS.size();
-        register(identifier, this);
-    }
-
-    @Override
-    public int ordinal() {
-        return id;
-    }
-
-    private static void register(String name, BlockTag tag) {
-        ALL_BLOCK_TAGS.put(Key.key(name), tag);
+    private static Tag<Block> create(String name) {
+        return new Tag<>(JavaRegistries.BLOCK, MinecraftKey.key(name));
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/EnchantmentTag.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/EnchantmentTag.java
index 0af690abd..1ef875642 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/EnchantmentTag.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/EnchantmentTag.java
@@ -25,67 +25,55 @@
 
 package org.geysermc.geyser.session.cache.tags;
 
-import net.kyori.adventure.key.Key;
+import org.geysermc.geyser.item.enchantment.Enchantment;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
 import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.geyser.util.Ordered;
-
-import java.util.HashMap;
-import java.util.Map;
 
+/**
+ * Lists vanilla enchantment tags.
+ */
 @SuppressWarnings("unused")
-public final class EnchantmentTag implements Ordered {
-    public static final Map<Key, EnchantmentTag> ALL_ENCHANTMENT_TAGS = new HashMap<>();
+public final class EnchantmentTag {
+    public static final Tag<Enchantment> TOOLTIP_ORDER = create("tooltip_order");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_ARMOR = create("exclusive_set/armor");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_BOOTS = create("exclusive_set/boots");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_BOW = create("exclusive_set/bow");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_CROSSBOW = create("exclusive_set/crossbow");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_DAMAGE = create("exclusive_set/damage");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_MINING = create("exclusive_set/mining");
+    public static final Tag<Enchantment> EXCLUSIVE_SET_RIPTIDE = create("exclusive_set/riptide");
+    public static final Tag<Enchantment> TRADEABLE = create("tradeable");
+    public static final Tag<Enchantment> DOUBLE_TRADE_PRICE = create("double_trade_price");
+    public static final Tag<Enchantment> IN_ENCHANTING_TABLE = create("in_enchanting_table");
+    public static final Tag<Enchantment> ON_MOB_SPAWN_EQUIPMENT = create("on_mob_spawn_equipment");
+    public static final Tag<Enchantment> ON_TRADED_EQUIPMENT = create("on_traded_equipment");
+    public static final Tag<Enchantment> ON_RANDOM_LOOT = create("on_random_loot");
+    public static final Tag<Enchantment> CURSE = create("curse");
+    public static final Tag<Enchantment> SMELTS_LOOT = create("smelts_loot");
+    public static final Tag<Enchantment> PREVENTS_BEE_SPAWNS_WHEN_MINING = create("prevents_bee_spawns_when_mining");
+    public static final Tag<Enchantment> PREVENTS_DECORATED_POT_SHATTERING = create("prevents_decorated_pot_shattering");
+    public static final Tag<Enchantment> PREVENTS_ICE_MELTING = create("prevents_ice_melting");
+    public static final Tag<Enchantment> PREVENTS_INFESTED_SPAWNS = create("prevents_infested_spawns");
+    public static final Tag<Enchantment> TREASURE = create("treasure");
+    public static final Tag<Enchantment> NON_TREASURE = create("non_treasure");
+    public static final Tag<Enchantment> TRADES_DESERT_COMMON = create("trades/desert_common");
+    public static final Tag<Enchantment> TRADES_JUNGLE_COMMON = create("trades/jungle_common");
+    public static final Tag<Enchantment> TRADES_PLAINS_COMMON = create("trades/plains_common");
+    public static final Tag<Enchantment> TRADES_SAVANNA_COMMON = create("trades/savanna_common");
+    public static final Tag<Enchantment> TRADES_SNOW_COMMON = create("trades/snow_common");
+    public static final Tag<Enchantment> TRADES_SWAMP_COMMON = create("trades/swamp_common");
+    public static final Tag<Enchantment> TRADES_TAIGA_COMMON = create("trades/taiga_common");
+    public static final Tag<Enchantment> TRADES_DESERT_SPECIAL = create("trades/desert_special");
+    public static final Tag<Enchantment> TRADES_JUNGLE_SPECIAL = create("trades/jungle_special");
+    public static final Tag<Enchantment> TRADES_PLAINS_SPECIAL = create("trades/plains_special");
+    public static final Tag<Enchantment> TRADES_SAVANNA_SPECIAL = create("trades/savanna_special");
+    public static final Tag<Enchantment> TRADES_SNOW_SPECIAL = create("trades/snow_special");
+    public static final Tag<Enchantment> TRADES_SWAMP_SPECIAL = create("trades/swamp_special");
+    public static final Tag<Enchantment> TRADES_TAIGA_SPECIAL = create("trades/taiga_special");
 
-    public static final EnchantmentTag TOOLTIP_ORDER = new EnchantmentTag("tooltip_order");
-    public static final EnchantmentTag EXCLUSIVE_SET_ARMOR = new EnchantmentTag("exclusive_set/armor");
-    public static final EnchantmentTag EXCLUSIVE_SET_BOOTS = new EnchantmentTag("exclusive_set/boots");
-    public static final EnchantmentTag EXCLUSIVE_SET_BOW = new EnchantmentTag("exclusive_set/bow");
-    public static final EnchantmentTag EXCLUSIVE_SET_CROSSBOW = new EnchantmentTag("exclusive_set/crossbow");
-    public static final EnchantmentTag EXCLUSIVE_SET_DAMAGE = new EnchantmentTag("exclusive_set/damage");
-    public static final EnchantmentTag EXCLUSIVE_SET_MINING = new EnchantmentTag("exclusive_set/mining");
-    public static final EnchantmentTag EXCLUSIVE_SET_RIPTIDE = new EnchantmentTag("exclusive_set/riptide");
-    public static final EnchantmentTag TRADEABLE = new EnchantmentTag("tradeable");
-    public static final EnchantmentTag DOUBLE_TRADE_PRICE = new EnchantmentTag("double_trade_price");
-    public static final EnchantmentTag IN_ENCHANTING_TABLE = new EnchantmentTag("in_enchanting_table");
-    public static final EnchantmentTag ON_MOB_SPAWN_EQUIPMENT = new EnchantmentTag("on_mob_spawn_equipment");
-    public static final EnchantmentTag ON_TRADED_EQUIPMENT = new EnchantmentTag("on_traded_equipment");
-    public static final EnchantmentTag ON_RANDOM_LOOT = new EnchantmentTag("on_random_loot");
-    public static final EnchantmentTag CURSE = new EnchantmentTag("curse");
-    public static final EnchantmentTag SMELTS_LOOT = new EnchantmentTag("smelts_loot");
-    public static final EnchantmentTag PREVENTS_BEE_SPAWNS_WHEN_MINING = new EnchantmentTag("prevents_bee_spawns_when_mining");
-    public static final EnchantmentTag PREVENTS_DECORATED_POT_SHATTERING = new EnchantmentTag("prevents_decorated_pot_shattering");
-    public static final EnchantmentTag PREVENTS_ICE_MELTING = new EnchantmentTag("prevents_ice_melting");
-    public static final EnchantmentTag PREVENTS_INFESTED_SPAWNS = new EnchantmentTag("prevents_infested_spawns");
-    public static final EnchantmentTag TREASURE = new EnchantmentTag("treasure");
-    public static final EnchantmentTag NON_TREASURE = new EnchantmentTag("non_treasure");
-    public static final EnchantmentTag TRADES_DESERT_COMMON = new EnchantmentTag("trades/desert_common");
-    public static final EnchantmentTag TRADES_JUNGLE_COMMON = new EnchantmentTag("trades/jungle_common");
-    public static final EnchantmentTag TRADES_PLAINS_COMMON = new EnchantmentTag("trades/plains_common");
-    public static final EnchantmentTag TRADES_SAVANNA_COMMON = new EnchantmentTag("trades/savanna_common");
-    public static final EnchantmentTag TRADES_SNOW_COMMON = new EnchantmentTag("trades/snow_common");
-    public static final EnchantmentTag TRADES_SWAMP_COMMON = new EnchantmentTag("trades/swamp_common");
-    public static final EnchantmentTag TRADES_TAIGA_COMMON = new EnchantmentTag("trades/taiga_common");
-    public static final EnchantmentTag TRADES_DESERT_SPECIAL = new EnchantmentTag("trades/desert_special");
-    public static final EnchantmentTag TRADES_JUNGLE_SPECIAL = new EnchantmentTag("trades/jungle_special");
-    public static final EnchantmentTag TRADES_PLAINS_SPECIAL = new EnchantmentTag("trades/plains_special");
-    public static final EnchantmentTag TRADES_SAVANNA_SPECIAL = new EnchantmentTag("trades/savanna_special");
-    public static final EnchantmentTag TRADES_SNOW_SPECIAL = new EnchantmentTag("trades/snow_special");
-    public static final EnchantmentTag TRADES_SWAMP_SPECIAL = new EnchantmentTag("trades/swamp_special");
-    public static final EnchantmentTag TRADES_TAIGA_SPECIAL = new EnchantmentTag("trades/taiga_special");
+    private EnchantmentTag() {}
 
-    private final int id;
-
-    private EnchantmentTag(String identifier) {
-        this.id = ALL_ENCHANTMENT_TAGS.size();
-        register(identifier, this);
-    }
-
-    @Override
-    public int ordinal() {
-        return id;
-    }
-
-    private static void register(String name, EnchantmentTag tag) {
-        ALL_ENCHANTMENT_TAGS.put(MinecraftKey.key(name), tag);
+    private static Tag<Enchantment> create(String name) {
+        return new Tag<>(JavaRegistries.ENCHANTMENT, MinecraftKey.key(name));
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
new file mode 100644
index 000000000..3c6e02e53
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session.cache.tags;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.function.ToIntFunction;
+
+import it.unimi.dsi.fastutil.ints.IntArrays;
+import lombok.Data;
+import net.kyori.adventure.key.Key;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.TagCache;
+import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
+
+/**
+ * Similar to vanilla Minecraft's HolderSets, stores either a tag or a list of IDs (this list can also be represented as a single ID in vanilla HolderSets).
+ *
+ * <p>Because HolderSets utilise tags, when loading a HolderSet, Geyser must store tags for the registry the HolderSet is for (see {@link JavaRegistryKey}).</p>
+ *
+ * <p>Use the {@link GeyserHolderSet#readHolderSet} method to easily read a HolderSet from NBT sent by a server. To turn the HolderSet into a list of network IDs, use the {@link GeyserHolderSet#resolveRaw} method.
+ * To turn the HolderSet into a list of objects, use the {@link GeyserHolderSet#resolve} method.</p>
+ */
+@Data
+public final class GeyserHolderSet<T> {
+
+    private final JavaRegistryKey<T> registry;
+    private final @Nullable Tag<T> tag;
+    private final int @Nullable [] holders;
+
+    public GeyserHolderSet(JavaRegistryKey<T> registry, int @NonNull [] holders) {
+        this.registry = registry;
+        this.tag = null;
+        this.holders = holders;
+    }
+
+    public GeyserHolderSet(JavaRegistryKey<T> registry, @NonNull Tag<T> tagId) {
+        this.registry = registry;
+        this.tag = tagId;
+        this.holders = null;
+    }
+
+    /**
+     * Resolves the HolderSet, and automatically maps the network IDs to their respective object types. If the HolderSet is a list of IDs, this will be returned. If it is a tag, the tag will be resolved from the tag cache.
+     *
+     * @return the HolderSet turned into a list of objects.
+     */
+    public List<T> resolve(GeyserSession session) {
+        return TagCache.mapRawArray(session, resolveRaw(session.getTagCache()), registry);
+    }
+
+    /**
+     * Resolves the HolderSet. If the HolderSet is a list of IDs, this will be returned. If it is a tag, the tag will be resolved from the tag cache.
+     *
+     * @return the HolderSet turned into a list of objects.
+     */
+    public int[] resolveRaw(TagCache tagCache) {
+        if (holders != null) {
+            return holders;
+        }
+
+        return tagCache.getRaw(Objects.requireNonNull(tag, "HolderSet must have a tag if it doesn't have a list of IDs"));
+    }
+
+    /**
+     * Reads a HolderSet from an object from NBT.
+     *
+     * @param session session, only used for logging purposes.
+     * @param registry the registry the HolderSet contains IDs from.
+     * @param holderSet the HolderSet as an object from NBT.
+     * @param keyIdMapping a function that maps resource location IDs in the HolderSet's registry to their network IDs.
+     */
+    public static <T> GeyserHolderSet<T> readHolderSet(GeyserSession session, JavaRegistryKey<T> registry, @Nullable Object holderSet, ToIntFunction<Key> keyIdMapping) {
+        if (holderSet == null) {
+            return new GeyserHolderSet<>(registry, IntArrays.EMPTY_ARRAY);
+        }
+
+        if (holderSet instanceof String stringTag) {
+            if (stringTag.startsWith("#")) {
+                // Tag
+                return new GeyserHolderSet<>(registry, new Tag<>(registry, Key.key(stringTag.substring(1)))); // Remove '#' at beginning that indicates tag
+            } else if (stringTag.isEmpty()) {
+                return new GeyserHolderSet<>(registry, IntArrays.EMPTY_ARRAY);
+            }
+            return new GeyserHolderSet<>(registry, new int[]{keyIdMapping.applyAsInt(Key.key(stringTag))});
+        } else if (holderSet instanceof List<?> list) {
+            // Assume the list is a list of strings
+            return new GeyserHolderSet<>(registry, list.stream().map(o -> (String) o).map(Key::key).mapToInt(keyIdMapping).toArray());
+        }
+        session.getGeyser().getLogger().warning("Failed parsing HolderSet for registry + " + registry + "! Expected either a tag, a string ID or a list of string IDs, found " + holderSet);
+        return new GeyserHolderSet<>(registry, IntArrays.EMPTY_ARRAY);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java
index a2e861dd6..4f42f146a 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java
@@ -25,178 +25,166 @@
 
 package org.geysermc.geyser.session.cache.tags;
 
-import net.kyori.adventure.key.Key;
+import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
 import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.geyser.util.Ordered;
-
-import java.util.HashMap;
-import java.util.Map;
 
+/**
+ * Lists vanilla item tags.
+ */
 @SuppressWarnings("unused")
-public final class ItemTag implements Ordered {
-    public static final Map<Key, ItemTag> ALL_ITEM_TAGS = new HashMap<>();
+public final class ItemTag {
+    public static final Tag<Item> WOOL = create("wool");
+    public static final Tag<Item> PLANKS = create("planks");
+    public static final Tag<Item> STONE_BRICKS = create("stone_bricks");
+    public static final Tag<Item> WOODEN_BUTTONS = create("wooden_buttons");
+    public static final Tag<Item> STONE_BUTTONS = create("stone_buttons");
+    public static final Tag<Item> BUTTONS = create("buttons");
+    public static final Tag<Item> WOOL_CARPETS = create("wool_carpets");
+    public static final Tag<Item> WOODEN_DOORS = create("wooden_doors");
+    public static final Tag<Item> WOODEN_STAIRS = create("wooden_stairs");
+    public static final Tag<Item> WOODEN_SLABS = create("wooden_slabs");
+    public static final Tag<Item> WOODEN_FENCES = create("wooden_fences");
+    public static final Tag<Item> FENCE_GATES = create("fence_gates");
+    public static final Tag<Item> WOODEN_PRESSURE_PLATES = create("wooden_pressure_plates");
+    public static final Tag<Item> WOODEN_TRAPDOORS = create("wooden_trapdoors");
+    public static final Tag<Item> DOORS = create("doors");
+    public static final Tag<Item> SAPLINGS = create("saplings");
+    public static final Tag<Item> LOGS_THAT_BURN = create("logs_that_burn");
+    public static final Tag<Item> LOGS = create("logs");
+    public static final Tag<Item> DARK_OAK_LOGS = create("dark_oak_logs");
+    public static final Tag<Item> OAK_LOGS = create("oak_logs");
+    public static final Tag<Item> BIRCH_LOGS = create("birch_logs");
+    public static final Tag<Item> ACACIA_LOGS = create("acacia_logs");
+    public static final Tag<Item> CHERRY_LOGS = create("cherry_logs");
+    public static final Tag<Item> JUNGLE_LOGS = create("jungle_logs");
+    public static final Tag<Item> SPRUCE_LOGS = create("spruce_logs");
+    public static final Tag<Item> MANGROVE_LOGS = create("mangrove_logs");
+    public static final Tag<Item> CRIMSON_STEMS = create("crimson_stems");
+    public static final Tag<Item> WARPED_STEMS = create("warped_stems");
+    public static final Tag<Item> BAMBOO_BLOCKS = create("bamboo_blocks");
+    public static final Tag<Item> WART_BLOCKS = create("wart_blocks");
+    public static final Tag<Item> BANNERS = create("banners");
+    public static final Tag<Item> SAND = create("sand");
+    public static final Tag<Item> SMELTS_TO_GLASS = create("smelts_to_glass");
+    public static final Tag<Item> STAIRS = create("stairs");
+    public static final Tag<Item> SLABS = create("slabs");
+    public static final Tag<Item> WALLS = create("walls");
+    public static final Tag<Item> ANVIL = create("anvil");
+    public static final Tag<Item> RAILS = create("rails");
+    public static final Tag<Item> LEAVES = create("leaves");
+    public static final Tag<Item> TRAPDOORS = create("trapdoors");
+    public static final Tag<Item> SMALL_FLOWERS = create("small_flowers");
+    public static final Tag<Item> BEDS = create("beds");
+    public static final Tag<Item> FENCES = create("fences");
+    public static final Tag<Item> TALL_FLOWERS = create("tall_flowers");
+    public static final Tag<Item> FLOWERS = create("flowers");
+    public static final Tag<Item> PIGLIN_REPELLENTS = create("piglin_repellents");
+    public static final Tag<Item> PIGLIN_LOVED = create("piglin_loved");
+    public static final Tag<Item> IGNORED_BY_PIGLIN_BABIES = create("ignored_by_piglin_babies");
+    public static final Tag<Item> MEAT = create("meat");
+    public static final Tag<Item> SNIFFER_FOOD = create("sniffer_food");
+    public static final Tag<Item> PIGLIN_FOOD = create("piglin_food");
+    public static final Tag<Item> FOX_FOOD = create("fox_food");
+    public static final Tag<Item> COW_FOOD = create("cow_food");
+    public static final Tag<Item> GOAT_FOOD = create("goat_food");
+    public static final Tag<Item> SHEEP_FOOD = create("sheep_food");
+    public static final Tag<Item> WOLF_FOOD = create("wolf_food");
+    public static final Tag<Item> CAT_FOOD = create("cat_food");
+    public static final Tag<Item> HORSE_FOOD = create("horse_food");
+    public static final Tag<Item> HORSE_TEMPT_ITEMS = create("horse_tempt_items");
+    public static final Tag<Item> CAMEL_FOOD = create("camel_food");
+    public static final Tag<Item> ARMADILLO_FOOD = create("armadillo_food");
+    public static final Tag<Item> BEE_FOOD = create("bee_food");
+    public static final Tag<Item> CHICKEN_FOOD = create("chicken_food");
+    public static final Tag<Item> FROG_FOOD = create("frog_food");
+    public static final Tag<Item> HOGLIN_FOOD = create("hoglin_food");
+    public static final Tag<Item> LLAMA_FOOD = create("llama_food");
+    public static final Tag<Item> LLAMA_TEMPT_ITEMS = create("llama_tempt_items");
+    public static final Tag<Item> OCELOT_FOOD = create("ocelot_food");
+    public static final Tag<Item> PANDA_FOOD = create("panda_food");
+    public static final Tag<Item> PIG_FOOD = create("pig_food");
+    public static final Tag<Item> RABBIT_FOOD = create("rabbit_food");
+    public static final Tag<Item> STRIDER_FOOD = create("strider_food");
+    public static final Tag<Item> STRIDER_TEMPT_ITEMS = create("strider_tempt_items");
+    public static final Tag<Item> TURTLE_FOOD = create("turtle_food");
+    public static final Tag<Item> PARROT_FOOD = create("parrot_food");
+    public static final Tag<Item> PARROT_POISONOUS_FOOD = create("parrot_poisonous_food");
+    public static final Tag<Item> AXOLOTL_FOOD = create("axolotl_food");
+    public static final Tag<Item> GOLD_ORES = create("gold_ores");
+    public static final Tag<Item> IRON_ORES = create("iron_ores");
+    public static final Tag<Item> DIAMOND_ORES = create("diamond_ores");
+    public static final Tag<Item> REDSTONE_ORES = create("redstone_ores");
+    public static final Tag<Item> LAPIS_ORES = create("lapis_ores");
+    public static final Tag<Item> COAL_ORES = create("coal_ores");
+    public static final Tag<Item> EMERALD_ORES = create("emerald_ores");
+    public static final Tag<Item> COPPER_ORES = create("copper_ores");
+    public static final Tag<Item> NON_FLAMMABLE_WOOD = create("non_flammable_wood");
+    public static final Tag<Item> SOUL_FIRE_BASE_BLOCKS = create("soul_fire_base_blocks");
+    public static final Tag<Item> CANDLES = create("candles");
+    public static final Tag<Item> DIRT = create("dirt");
+    public static final Tag<Item> TERRACOTTA = create("terracotta");
+    public static final Tag<Item> COMPLETES_FIND_TREE_TUTORIAL = create("completes_find_tree_tutorial");
+    public static final Tag<Item> BOATS = create("boats");
+    public static final Tag<Item> CHEST_BOATS = create("chest_boats");
+    public static final Tag<Item> FISHES = create("fishes");
+    public static final Tag<Item> SIGNS = create("signs");
+    public static final Tag<Item> CREEPER_DROP_MUSIC_DISCS = create("creeper_drop_music_discs");
+    public static final Tag<Item> COALS = create("coals");
+    public static final Tag<Item> ARROWS = create("arrows");
+    public static final Tag<Item> LECTERN_BOOKS = create("lectern_books");
+    public static final Tag<Item> BOOKSHELF_BOOKS = create("bookshelf_books");
+    public static final Tag<Item> BEACON_PAYMENT_ITEMS = create("beacon_payment_items");
+    public static final Tag<Item> STONE_TOOL_MATERIALS = create("stone_tool_materials");
+    public static final Tag<Item> STONE_CRAFTING_MATERIALS = create("stone_crafting_materials");
+    public static final Tag<Item> FREEZE_IMMUNE_WEARABLES = create("freeze_immune_wearables");
+    public static final Tag<Item> DAMPENS_VIBRATIONS = create("dampens_vibrations");
+    public static final Tag<Item> CLUSTER_MAX_HARVESTABLES = create("cluster_max_harvestables");
+    public static final Tag<Item> COMPASSES = create("compasses");
+    public static final Tag<Item> HANGING_SIGNS = create("hanging_signs");
+    public static final Tag<Item> CREEPER_IGNITERS = create("creeper_igniters");
+    public static final Tag<Item> NOTEBLOCK_TOP_INSTRUMENTS = create("noteblock_top_instruments");
+    public static final Tag<Item> FOOT_ARMOR = create("foot_armor");
+    public static final Tag<Item> LEG_ARMOR = create("leg_armor");
+    public static final Tag<Item> CHEST_ARMOR = create("chest_armor");
+    public static final Tag<Item> HEAD_ARMOR = create("head_armor");
+    public static final Tag<Item> SKULLS = create("skulls");
+    public static final Tag<Item> TRIMMABLE_ARMOR = create("trimmable_armor");
+    public static final Tag<Item> TRIM_MATERIALS = create("trim_materials");
+    public static final Tag<Item> TRIM_TEMPLATES = create("trim_templates");
+    public static final Tag<Item> DECORATED_POT_SHERDS = create("decorated_pot_sherds");
+    public static final Tag<Item> DECORATED_POT_INGREDIENTS = create("decorated_pot_ingredients");
+    public static final Tag<Item> SWORDS = create("swords");
+    public static final Tag<Item> AXES = create("axes");
+    public static final Tag<Item> HOES = create("hoes");
+    public static final Tag<Item> PICKAXES = create("pickaxes");
+    public static final Tag<Item> SHOVELS = create("shovels");
+    public static final Tag<Item> BREAKS_DECORATED_POTS = create("breaks_decorated_pots");
+    public static final Tag<Item> VILLAGER_PLANTABLE_SEEDS = create("villager_plantable_seeds");
+    public static final Tag<Item> DYEABLE = create("dyeable");
+    public static final Tag<Item> ENCHANTABLE_FOOT_ARMOR = create("enchantable/foot_armor");
+    public static final Tag<Item> ENCHANTABLE_LEG_ARMOR = create("enchantable/leg_armor");
+    public static final Tag<Item> ENCHANTABLE_CHEST_ARMOR = create("enchantable/chest_armor");
+    public static final Tag<Item> ENCHANTABLE_HEAD_ARMOR = create("enchantable/head_armor");
+    public static final Tag<Item> ENCHANTABLE_ARMOR = create("enchantable/armor");
+    public static final Tag<Item> ENCHANTABLE_SWORD = create("enchantable/sword");
+    public static final Tag<Item> ENCHANTABLE_FIRE_ASPECT = create("enchantable/fire_aspect");
+    public static final Tag<Item> ENCHANTABLE_SHARP_WEAPON = create("enchantable/sharp_weapon");
+    public static final Tag<Item> ENCHANTABLE_WEAPON = create("enchantable/weapon");
+    public static final Tag<Item> ENCHANTABLE_MINING = create("enchantable/mining");
+    public static final Tag<Item> ENCHANTABLE_MINING_LOOT = create("enchantable/mining_loot");
+    public static final Tag<Item> ENCHANTABLE_FISHING = create("enchantable/fishing");
+    public static final Tag<Item> ENCHANTABLE_TRIDENT = create("enchantable/trident");
+    public static final Tag<Item> ENCHANTABLE_DURABILITY = create("enchantable/durability");
+    public static final Tag<Item> ENCHANTABLE_BOW = create("enchantable/bow");
+    public static final Tag<Item> ENCHANTABLE_EQUIPPABLE = create("enchantable/equippable");
+    public static final Tag<Item> ENCHANTABLE_CROSSBOW = create("enchantable/crossbow");
+    public static final Tag<Item> ENCHANTABLE_VANISHING = create("enchantable/vanishing");
+    public static final Tag<Item> ENCHANTABLE_MACE = create("enchantable/mace");
 
-    public static final ItemTag WOOL = new ItemTag("wool");
-    public static final ItemTag PLANKS = new ItemTag("planks");
-    public static final ItemTag STONE_BRICKS = new ItemTag("stone_bricks");
-    public static final ItemTag WOODEN_BUTTONS = new ItemTag("wooden_buttons");
-    public static final ItemTag STONE_BUTTONS = new ItemTag("stone_buttons");
-    public static final ItemTag BUTTONS = new ItemTag("buttons");
-    public static final ItemTag WOOL_CARPETS = new ItemTag("wool_carpets");
-    public static final ItemTag WOODEN_DOORS = new ItemTag("wooden_doors");
-    public static final ItemTag WOODEN_STAIRS = new ItemTag("wooden_stairs");
-    public static final ItemTag WOODEN_SLABS = new ItemTag("wooden_slabs");
-    public static final ItemTag WOODEN_FENCES = new ItemTag("wooden_fences");
-    public static final ItemTag FENCE_GATES = new ItemTag("fence_gates");
-    public static final ItemTag WOODEN_PRESSURE_PLATES = new ItemTag("wooden_pressure_plates");
-    public static final ItemTag WOODEN_TRAPDOORS = new ItemTag("wooden_trapdoors");
-    public static final ItemTag DOORS = new ItemTag("doors");
-    public static final ItemTag SAPLINGS = new ItemTag("saplings");
-    public static final ItemTag LOGS_THAT_BURN = new ItemTag("logs_that_burn");
-    public static final ItemTag LOGS = new ItemTag("logs");
-    public static final ItemTag DARK_OAK_LOGS = new ItemTag("dark_oak_logs");
-    public static final ItemTag OAK_LOGS = new ItemTag("oak_logs");
-    public static final ItemTag BIRCH_LOGS = new ItemTag("birch_logs");
-    public static final ItemTag ACACIA_LOGS = new ItemTag("acacia_logs");
-    public static final ItemTag CHERRY_LOGS = new ItemTag("cherry_logs");
-    public static final ItemTag JUNGLE_LOGS = new ItemTag("jungle_logs");
-    public static final ItemTag SPRUCE_LOGS = new ItemTag("spruce_logs");
-    public static final ItemTag MANGROVE_LOGS = new ItemTag("mangrove_logs");
-    public static final ItemTag CRIMSON_STEMS = new ItemTag("crimson_stems");
-    public static final ItemTag WARPED_STEMS = new ItemTag("warped_stems");
-    public static final ItemTag BAMBOO_BLOCKS = new ItemTag("bamboo_blocks");
-    public static final ItemTag WART_BLOCKS = new ItemTag("wart_blocks");
-    public static final ItemTag BANNERS = new ItemTag("banners");
-    public static final ItemTag SAND = new ItemTag("sand");
-    public static final ItemTag SMELTS_TO_GLASS = new ItemTag("smelts_to_glass");
-    public static final ItemTag STAIRS = new ItemTag("stairs");
-    public static final ItemTag SLABS = new ItemTag("slabs");
-    public static final ItemTag WALLS = new ItemTag("walls");
-    public static final ItemTag ANVIL = new ItemTag("anvil");
-    public static final ItemTag RAILS = new ItemTag("rails");
-    public static final ItemTag LEAVES = new ItemTag("leaves");
-    public static final ItemTag TRAPDOORS = new ItemTag("trapdoors");
-    public static final ItemTag SMALL_FLOWERS = new ItemTag("small_flowers");
-    public static final ItemTag BEDS = new ItemTag("beds");
-    public static final ItemTag FENCES = new ItemTag("fences");
-    public static final ItemTag TALL_FLOWERS = new ItemTag("tall_flowers");
-    public static final ItemTag FLOWERS = new ItemTag("flowers");
-    public static final ItemTag PIGLIN_REPELLENTS = new ItemTag("piglin_repellents");
-    public static final ItemTag PIGLIN_LOVED = new ItemTag("piglin_loved");
-    public static final ItemTag IGNORED_BY_PIGLIN_BABIES = new ItemTag("ignored_by_piglin_babies");
-    public static final ItemTag MEAT = new ItemTag("meat");
-    public static final ItemTag SNIFFER_FOOD = new ItemTag("sniffer_food");
-    public static final ItemTag PIGLIN_FOOD = new ItemTag("piglin_food");
-    public static final ItemTag FOX_FOOD = new ItemTag("fox_food");
-    public static final ItemTag COW_FOOD = new ItemTag("cow_food");
-    public static final ItemTag GOAT_FOOD = new ItemTag("goat_food");
-    public static final ItemTag SHEEP_FOOD = new ItemTag("sheep_food");
-    public static final ItemTag WOLF_FOOD = new ItemTag("wolf_food");
-    public static final ItemTag CAT_FOOD = new ItemTag("cat_food");
-    public static final ItemTag HORSE_FOOD = new ItemTag("horse_food");
-    public static final ItemTag HORSE_TEMPT_ITEMS = new ItemTag("horse_tempt_items");
-    public static final ItemTag CAMEL_FOOD = new ItemTag("camel_food");
-    public static final ItemTag ARMADILLO_FOOD = new ItemTag("armadillo_food");
-    public static final ItemTag BEE_FOOD = new ItemTag("bee_food");
-    public static final ItemTag CHICKEN_FOOD = new ItemTag("chicken_food");
-    public static final ItemTag FROG_FOOD = new ItemTag("frog_food");
-    public static final ItemTag HOGLIN_FOOD = new ItemTag("hoglin_food");
-    public static final ItemTag LLAMA_FOOD = new ItemTag("llama_food");
-    public static final ItemTag LLAMA_TEMPT_ITEMS = new ItemTag("llama_tempt_items");
-    public static final ItemTag OCELOT_FOOD = new ItemTag("ocelot_food");
-    public static final ItemTag PANDA_FOOD = new ItemTag("panda_food");
-    public static final ItemTag PIG_FOOD = new ItemTag("pig_food");
-    public static final ItemTag RABBIT_FOOD = new ItemTag("rabbit_food");
-    public static final ItemTag STRIDER_FOOD = new ItemTag("strider_food");
-    public static final ItemTag STRIDER_TEMPT_ITEMS = new ItemTag("strider_tempt_items");
-    public static final ItemTag TURTLE_FOOD = new ItemTag("turtle_food");
-    public static final ItemTag PARROT_FOOD = new ItemTag("parrot_food");
-    public static final ItemTag PARROT_POISONOUS_FOOD = new ItemTag("parrot_poisonous_food");
-    public static final ItemTag AXOLOTL_FOOD = new ItemTag("axolotl_food");
-    public static final ItemTag GOLD_ORES = new ItemTag("gold_ores");
-    public static final ItemTag IRON_ORES = new ItemTag("iron_ores");
-    public static final ItemTag DIAMOND_ORES = new ItemTag("diamond_ores");
-    public static final ItemTag REDSTONE_ORES = new ItemTag("redstone_ores");
-    public static final ItemTag LAPIS_ORES = new ItemTag("lapis_ores");
-    public static final ItemTag COAL_ORES = new ItemTag("coal_ores");
-    public static final ItemTag EMERALD_ORES = new ItemTag("emerald_ores");
-    public static final ItemTag COPPER_ORES = new ItemTag("copper_ores");
-    public static final ItemTag NON_FLAMMABLE_WOOD = new ItemTag("non_flammable_wood");
-    public static final ItemTag SOUL_FIRE_BASE_BLOCKS = new ItemTag("soul_fire_base_blocks");
-    public static final ItemTag CANDLES = new ItemTag("candles");
-    public static final ItemTag DIRT = new ItemTag("dirt");
-    public static final ItemTag TERRACOTTA = new ItemTag("terracotta");
-    public static final ItemTag COMPLETES_FIND_TREE_TUTORIAL = new ItemTag("completes_find_tree_tutorial");
-    public static final ItemTag BOATS = new ItemTag("boats");
-    public static final ItemTag CHEST_BOATS = new ItemTag("chest_boats");
-    public static final ItemTag FISHES = new ItemTag("fishes");
-    public static final ItemTag SIGNS = new ItemTag("signs");
-    public static final ItemTag CREEPER_DROP_MUSIC_DISCS = new ItemTag("creeper_drop_music_discs");
-    public static final ItemTag COALS = new ItemTag("coals");
-    public static final ItemTag ARROWS = new ItemTag("arrows");
-    public static final ItemTag LECTERN_BOOKS = new ItemTag("lectern_books");
-    public static final ItemTag BOOKSHELF_BOOKS = new ItemTag("bookshelf_books");
-    public static final ItemTag BEACON_PAYMENT_ITEMS = new ItemTag("beacon_payment_items");
-    public static final ItemTag STONE_TOOL_MATERIALS = new ItemTag("stone_tool_materials");
-    public static final ItemTag STONE_CRAFTING_MATERIALS = new ItemTag("stone_crafting_materials");
-    public static final ItemTag FREEZE_IMMUNE_WEARABLES = new ItemTag("freeze_immune_wearables");
-    public static final ItemTag DAMPENS_VIBRATIONS = new ItemTag("dampens_vibrations");
-    public static final ItemTag CLUSTER_MAX_HARVESTABLES = new ItemTag("cluster_max_harvestables");
-    public static final ItemTag COMPASSES = new ItemTag("compasses");
-    public static final ItemTag HANGING_SIGNS = new ItemTag("hanging_signs");
-    public static final ItemTag CREEPER_IGNITERS = new ItemTag("creeper_igniters");
-    public static final ItemTag NOTEBLOCK_TOP_INSTRUMENTS = new ItemTag("noteblock_top_instruments");
-    public static final ItemTag FOOT_ARMOR = new ItemTag("foot_armor");
-    public static final ItemTag LEG_ARMOR = new ItemTag("leg_armor");
-    public static final ItemTag CHEST_ARMOR = new ItemTag("chest_armor");
-    public static final ItemTag HEAD_ARMOR = new ItemTag("head_armor");
-    public static final ItemTag SKULLS = new ItemTag("skulls");
-    public static final ItemTag TRIMMABLE_ARMOR = new ItemTag("trimmable_armor");
-    public static final ItemTag TRIM_MATERIALS = new ItemTag("trim_materials");
-    public static final ItemTag TRIM_TEMPLATES = new ItemTag("trim_templates");
-    public static final ItemTag DECORATED_POT_SHERDS = new ItemTag("decorated_pot_sherds");
-    public static final ItemTag DECORATED_POT_INGREDIENTS = new ItemTag("decorated_pot_ingredients");
-    public static final ItemTag SWORDS = new ItemTag("swords");
-    public static final ItemTag AXES = new ItemTag("axes");
-    public static final ItemTag HOES = new ItemTag("hoes");
-    public static final ItemTag PICKAXES = new ItemTag("pickaxes");
-    public static final ItemTag SHOVELS = new ItemTag("shovels");
-    public static final ItemTag BREAKS_DECORATED_POTS = new ItemTag("breaks_decorated_pots");
-    public static final ItemTag VILLAGER_PLANTABLE_SEEDS = new ItemTag("villager_plantable_seeds");
-    public static final ItemTag DYEABLE = new ItemTag("dyeable");
-    public static final ItemTag ENCHANTABLE_FOOT_ARMOR = new ItemTag("enchantable/foot_armor");
-    public static final ItemTag ENCHANTABLE_LEG_ARMOR = new ItemTag("enchantable/leg_armor");
-    public static final ItemTag ENCHANTABLE_CHEST_ARMOR = new ItemTag("enchantable/chest_armor");
-    public static final ItemTag ENCHANTABLE_HEAD_ARMOR = new ItemTag("enchantable/head_armor");
-    public static final ItemTag ENCHANTABLE_ARMOR = new ItemTag("enchantable/armor");
-    public static final ItemTag ENCHANTABLE_SWORD = new ItemTag("enchantable/sword");
-    public static final ItemTag ENCHANTABLE_FIRE_ASPECT = new ItemTag("enchantable/fire_aspect");
-    public static final ItemTag ENCHANTABLE_SHARP_WEAPON = new ItemTag("enchantable/sharp_weapon");
-    public static final ItemTag ENCHANTABLE_WEAPON = new ItemTag("enchantable/weapon");
-    public static final ItemTag ENCHANTABLE_MINING = new ItemTag("enchantable/mining");
-    public static final ItemTag ENCHANTABLE_MINING_LOOT = new ItemTag("enchantable/mining_loot");
-    public static final ItemTag ENCHANTABLE_FISHING = new ItemTag("enchantable/fishing");
-    public static final ItemTag ENCHANTABLE_TRIDENT = new ItemTag("enchantable/trident");
-    public static final ItemTag ENCHANTABLE_DURABILITY = new ItemTag("enchantable/durability");
-    public static final ItemTag ENCHANTABLE_BOW = new ItemTag("enchantable/bow");
-    public static final ItemTag ENCHANTABLE_EQUIPPABLE = new ItemTag("enchantable/equippable");
-    public static final ItemTag ENCHANTABLE_CROSSBOW = new ItemTag("enchantable/crossbow");
-    public static final ItemTag ENCHANTABLE_VANISHING = new ItemTag("enchantable/vanishing");
-    public static final ItemTag ENCHANTABLE_MACE = new ItemTag("enchantable/mace");
+    private ItemTag() {}
 
-    private final int id;
-    
-    private ItemTag(String identifier) {
-        this.id = ALL_ITEM_TAGS.size();
-        register(identifier, this);
-    }
-
-    @Override
-    public int ordinal() {
-        return id;
-    }
-
-    private static void register(String name, ItemTag tag) {
-        ALL_ITEM_TAGS.put(MinecraftKey.key(name), tag);
+    private static Tag<Item> create(String name) {
+        return new Tag<>(JavaRegistries.ITEM, MinecraftKey.key(name));
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/Tag.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/Tag.java
new file mode 100644
index 000000000..276e30b9f
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/Tag.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session.cache.tags;
+
+import net.kyori.adventure.key.Key;
+import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
+
+/**
+ * A tag in any of the registries that tags are loaded for by Geyser.
+ */
+public record Tag<T>(JavaRegistryKey<T> registry, Key tag) {
+}

From e00ef21af454722ddf0e13aecf4dfd37ccdb50e9 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Tue, 22 Oct 2024 23:22:47 -0400
Subject: [PATCH 012/165] Work on recipes

---
 .../geyser/inventory/recipe/GeyserRecipe.java |   2 +-
 .../inventory/recipe/GeyserShapedRecipe.java  |   7 +-
 .../recipe/GeyserShapelessRecipe.java         |   9 +-
 .../geysermc/geyser/registry/Registries.java  |  21 +-
 .../registry/loader/RecipeRegistryLoader.java |  76 +++--
 .../geyser/session/GeyserSession.java         |   7 +-
 .../java/JavaRecipeBookAddTranslator.java     | 273 +++++++++++++++---
 .../java/JavaRecipeBookRemoveTranslator.java  |  65 +++++
 .../JavaContainerSetSlotTranslator.java       |   3 +
 9 files changed, 365 insertions(+), 98 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookRemoveTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
index 8b7fa9522..3037b725e 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
@@ -29,7 +29,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 
 /**
- * A more compact version of {@link org.geysermc.mcprotocollib.protocol.data.game.recipe.Recipe}.
+ * A more compact version of {link org.geysermc.mcprotocollib.protocol.data.game.recipe.Recipe}.
  */
 public interface GeyserRecipe {
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
index ac9fa3ab4..413041ba7 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
@@ -28,13 +28,12 @@ package org.geysermc.geyser.inventory.recipe;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.data.ShapedRecipeData;
 
 public record GeyserShapedRecipe(int width, int height, Ingredient[] ingredients, @Nullable ItemStack result) implements GeyserRecipe {
 
-    public GeyserShapedRecipe(ShapedRecipeData data) {
-        this(data.getWidth(), data.getHeight(), data.getIngredients(), data.getResult());
-    }
+//    public GeyserShapedRecipe(ShapedRecipeData data) {
+//        this(data.getWidth(), data.getHeight(), data.getIngredients(), data.getResult());
+//    }
 
     @Override
     public boolean isShaped() {
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
index 388831d4c..6b9e36956 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
@@ -25,16 +25,15 @@
 
 package org.geysermc.geyser.inventory.recipe;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.data.ShapelessRecipeData;
-import org.checkerframework.checker.nullness.qual.Nullable;
 
 public record GeyserShapelessRecipe(Ingredient[] ingredients, @Nullable ItemStack result) implements GeyserRecipe {
 
-    public GeyserShapelessRecipe(ShapelessRecipeData data) {
-        this(data.getIngredients(), data.getResult());
-    }
+//    public GeyserShapelessRecipe(ShapelessRecipeData data) {
+//        this(data.getIngredients(), data.getResult());
+//    }
 
     @Override
     public boolean isShaped() {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index 30d3c0763..3f9ad6815 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -37,10 +37,17 @@ import org.geysermc.geyser.api.pack.ResourcePack;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
 import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.loader.*;
+import org.geysermc.geyser.registry.loader.BiomeIdentifierRegistryLoader;
+import org.geysermc.geyser.registry.loader.BlockEntityRegistryLoader;
+import org.geysermc.geyser.registry.loader.ParticleTypesRegistryLoader;
+import org.geysermc.geyser.registry.loader.PotionMixRegistryLoader;
+import org.geysermc.geyser.registry.loader.ProviderRegistryLoader;
+import org.geysermc.geyser.registry.loader.RegistryLoaders;
+import org.geysermc.geyser.registry.loader.SoundEventsRegistryLoader;
+import org.geysermc.geyser.registry.loader.SoundRegistryLoader;
+import org.geysermc.geyser.registry.loader.SoundTranslatorRegistryLoader;
 import org.geysermc.geyser.registry.populator.ItemRegistryPopulator;
 import org.geysermc.geyser.registry.populator.PacketRegistryPopulator;
-import org.geysermc.geyser.registry.loader.RecipeRegistryLoader;
 import org.geysermc.geyser.registry.provider.ProviderSupplier;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.registry.type.ParticleMapping;
@@ -54,9 +61,13 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
 import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityType;
 import org.geysermc.mcprotocollib.protocol.data.game.level.event.LevelEvent;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.RecipeType;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * Holds all the common registries in Geyser.
@@ -140,7 +151,7 @@ public final class Registries {
     /**
      * A versioned registry holding all the recipes, with the net ID being the key, and {@link GeyserRecipe} as the value.
      */
-    public static final SimpleMappedRegistry<RecipeType, List<GeyserRecipe>> RECIPES = SimpleMappedRegistry.create("mappings/recipes.nbt", RecipeRegistryLoader::new);
+    //public static final SimpleMappedRegistry<RecipeType, List<GeyserRecipe>> RECIPES = SimpleMappedRegistry.create("mappings/recipes.nbt", RecipeRegistryLoader::new);
 
     /**
      * A mapped registry holding {@link ResourcePack}'s with the pack uuid as keys.
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
index 1af6a8661..f061ed070 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
@@ -27,29 +27,19 @@ package org.geysermc.geyser.registry.loader;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import it.unimi.dsi.fastutil.Pair;
-import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-import org.cloudburstmc.nbt.NBTInputStream;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtType;
-import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
-import org.geysermc.geyser.text.GeyserLocale;
-import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodec;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.RecipeType;
 
-import java.io.DataInputStream;
-import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Base64;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -57,41 +47,41 @@ import java.util.Map;
  * Populates the recipe registry with some recipes that Java does not send, to ensure they show up as intended
  * in the recipe book.
  */
-public final class RecipeRegistryLoader implements RegistryLoader<String, Map<RecipeType, List<GeyserRecipe>>> {
+public abstract class RecipeRegistryLoader implements RegistryLoader<String, Map<Object, List<GeyserRecipe>>> {
 
-    @Override
-    public Map<RecipeType, List<GeyserRecipe>> load(String input) {
-        if (true) {
-            return Collections.emptyMap();
-        }
-        Map<RecipeType, List<GeyserRecipe>> deserializedRecipes = new Object2ObjectOpenHashMap<>();
+//    @Override
+//    public Map<RecipeType, List<GeyserRecipe>> load(String input) {
+//        if (true) {
+//            return Collections.emptyMap();
+//        }
+//        Map<RecipeType, List<GeyserRecipe>> deserializedRecipes = new Object2ObjectOpenHashMap<>();
+//
+//        List<NbtMap> recipes;
+//        try (InputStream stream = GeyserImpl.getInstance().getBootstrap().getResourceOrThrow("mappings/recipes.nbt")) {
+//            try (NBTInputStream nbtStream = new NBTInputStream(new DataInputStream(stream))) {
+//                recipes = ((NbtMap) nbtStream.readTag()).getList("recipes", NbtType.COMPOUND);
+//            }
+//        } catch (Exception e) {
+//            throw new AssertionError(GeyserLocale.getLocaleStringLog("geyser.toolbox.fail.runtime_java"), e);
+//        }
+//
+//        MinecraftCodecHelper helper = MinecraftCodec.CODEC.getHelperFactory().get();
+//        for (NbtMap recipeCollection : recipes) {
+//            var pair = getRecipes(recipeCollection, helper);
+//            deserializedRecipes.put(pair.key(), pair.value());
+//        }
+//        return deserializedRecipes;
+//    }
 
-        List<NbtMap> recipes;
-        try (InputStream stream = GeyserImpl.getInstance().getBootstrap().getResourceOrThrow("mappings/recipes.nbt")) {
-            try (NBTInputStream nbtStream = new NBTInputStream(new DataInputStream(stream))) {
-                recipes = ((NbtMap) nbtStream.readTag()).getList("recipes", NbtType.COMPOUND);
-            }
-        } catch (Exception e) {
-            throw new AssertionError(GeyserLocale.getLocaleStringLog("geyser.toolbox.fail.runtime_java"), e);
-        }
-
-        MinecraftCodecHelper helper = MinecraftCodec.CODEC.getHelperFactory().get();
-        for (NbtMap recipeCollection : recipes) {
-            var pair = getRecipes(recipeCollection, helper);
-            deserializedRecipes.put(pair.key(), pair.value());
-        }
-        return deserializedRecipes;
-    }
-
-    private static Pair<RecipeType, List<GeyserRecipe>> getRecipes(NbtMap recipes, MinecraftCodecHelper helper) {
-        List<NbtMap> typedRecipes = recipes.getList("recipes", NbtType.COMPOUND);
-        RecipeType recipeType = RecipeType.from(recipes.getInt("recipe_type", -1));
-        if (recipeType == RecipeType.CRAFTING_SPECIAL_TIPPEDARROW) {
-            return Pair.of(recipeType, getShapedRecipes(typedRecipes, helper));
-        } else {
-            return Pair.of(recipeType, getShapelessRecipes(typedRecipes, helper));
-        }
-    }
+//    private static Pair<RecipeType, List<GeyserRecipe>> getRecipes(NbtMap recipes, MinecraftCodecHelper helper) {
+//        List<NbtMap> typedRecipes = recipes.getList("recipes", NbtType.COMPOUND);
+//        RecipeType recipeType = RecipeType.from(recipes.getInt("recipe_type", -1));
+//        if (recipeType == RecipeType.CRAFTING_SPECIAL_TIPPEDARROW) {
+//            return Pair.of(recipeType, getShapedRecipes(typedRecipes, helper));
+//        } else {
+//            return Pair.of(recipeType, getShapelessRecipes(typedRecipes, helper));
+//        }
+//    }
 
     private static List<GeyserRecipe> getShapelessRecipes(List<NbtMap> recipes, MinecraftCodecHelper helper) {
         List<GeyserRecipe> deserializedRecipes = new ObjectArrayList<>(recipes.size());
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index fb64cfc41..211486963 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -441,10 +441,9 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private Entity mouseoverEntity;
 
     /**
-     * Stores all Java recipes by recipe identifier, and matches them to all possible Bedrock recipe identifiers.
-     * They are not 1:1, since Bedrock can have multiple recipes for the same Java recipe.
+     * Stores all Java recipes by ID, and matches them to all possible Bedrock recipe identifiers.
      */
-    private final Map<String, List<String>> javaToBedrockRecipeIds;
+    private final Int2ObjectMap<List<String>> javaToBedrockRecipeIds;
 
     @Setter
     private Int2ObjectMap<GeyserRecipe> craftingRecipes;
@@ -694,7 +693,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         this.playerInventory = new PlayerInventory();
         this.openInventory = null;
         this.craftingRecipes = new Int2ObjectOpenHashMap<>();
-        this.javaToBedrockRecipeIds = new Object2ObjectOpenHashMap<>();
+        this.javaToBedrockRecipeIds = new Int2ObjectOpenHashMap<>();
         this.lastRecipeNetId = new AtomicInteger(1);
 
         this.spawned = false;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 74fb11814..49c62989c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -25,57 +25,258 @@
 
 package org.geysermc.geyser.translator.protocol.java;
 
+import it.unimi.dsi.fastutil.Pair;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
+import net.kyori.adventure.key.Key;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
+import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
+import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
+import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.item.type.BedrockRequiresTagItem;
+import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.session.cache.tags.Tag;
+import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.RecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.RecipeDisplayEntry;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapedCraftingRecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapelessCraftingRecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.CompositeSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookAddPacket;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.UUID;
+
 @Translator(packet = ClientboundRecipeBookAddPacket.class)
 public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRecipeBookAddPacket> {
 
     @Override
     public void translate(GeyserSession session, ClientboundRecipeBookAddPacket packet) {
+        System.out.println(packet);
+        int netId = session.getLastRecipeNetId().get();
+        Int2ObjectMap<List<String>> javaToBedrockRecipeIds = session.getJavaToBedrockRecipeIds();
+        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
+        // Check if we should set cleanRecipes here or not.
+
+
         UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
         recipesPacket.setAction(packet.isReplace() ? UnlockedRecipesPacket.ActionType.INITIALLY_UNLOCKED : UnlockedRecipesPacket.ActionType.NEWLY_UNLOCKED);
-//        List<String> recipes = getBedrockRecipes(session, packet.getEntries());
-//        if (recipes.isEmpty() && !packet.isReplace()) {
-//            // Sending an empty list here packet will crash the client as of 1.20.60
-//            return;
-//        }
-//        switch (packet.getAction()) {
-//            case INIT -> {
-//                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.INITIALLY_UNLOCKED);
-//                recipesPacket.getUnlockedRecipes().addAll(getBedrockRecipes(session, packet.getAlreadyKnownRecipes()));
-//            }
-//            case ADD -> {
-//
-//                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.NEWLY_UNLOCKED);
-//                recipesPacket.getUnlockedRecipes().addAll(recipes);
-//            }
-//            case REMOVE -> {
-//                List<String> recipes = getBedrockRecipes(session, packet.getRecipes());
-//                if (recipes.isEmpty()) {
-//                    // Sending an empty list here will crash the client as of 1.20.60
-//                    return;
-//                }
-//                recipesPacket.setAction(UnlockedRecipesPacket.ActionType.REMOVE_UNLOCKED);
-//                recipesPacket.getUnlockedRecipes().addAll(recipes);
-//            }
-//        }
-//        session.sendUpstreamPacket(recipesPacket);
+
+        for (ClientboundRecipeBookAddPacket.Entry entry : packet.getEntries()) {
+            RecipeDisplayEntry contents = entry.contents();
+            RecipeDisplay display = contents.display();
+
+            switch (display.getType()) {
+                case CRAFTING_SHAPED -> {
+                    ShapedCraftingRecipeDisplay shapedRecipe = (ShapedCraftingRecipeDisplay) display;
+                    Pair<Item, ItemData> pair = translateToOutput(session, shapedRecipe.result());
+                    if (pair == null || !pair.right().isValid()) {
+                        // Likely modded item Bedrock will complain about
+                        continue;
+                    }
+
+                    ItemData output = pair.right();
+                    if (!(pair.left() instanceof BedrockRequiresTagItem)) {
+                        // Strip NBT - tools won't appear in the recipe book otherwise
+                        output = output.toBuilder().tag(null).build();
+                    }
+
+                    boolean empty = true;
+                    boolean complexInputs = false;
+                    List<ItemDescriptorWithCount[]> inputs = new ArrayList<>(shapedRecipe.ingredients().size());
+                    for (SlotDisplay input : shapedRecipe.ingredients()) {
+                        ItemDescriptorWithCount[] translated = translateToInput(session, input);
+                        if (translated == null) {
+                            continue;
+                        }
+                        inputs.add(translated);
+                        if (translated.length != 1 || translated[0] != ItemDescriptorWithCount.EMPTY) {
+                            empty = false;
+                        }
+                        complexInputs |= translated.length > 1;
+                    }
+                    if (empty) {
+                        // Crashes Bedrock 1.19.70 otherwise
+                        // Fixes https://github.com/GeyserMC/Geyser/issues/3549
+                        continue;
+                    }
+
+                    if (complexInputs) {
+
+                    } else {
+                        String recipeId = Integer.toString(contents.id());
+                        craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
+                                shapedRecipe.width(), shapedRecipe.height(), inputs.stream().map(descriptors -> descriptors[0]).toList(),
+                                Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
+                        recipesPacket.getUnlockedRecipes().add(recipeId);
+                        javaToBedrockRecipeIds.put(contents.id(), Collections.singletonList(recipeId));
+                    }
+                }
+                case CRAFTING_SHAPELESS -> {
+                    ShapelessCraftingRecipeDisplay shapelessRecipe = (ShapelessCraftingRecipeDisplay) display;
+                    Pair<Item, ItemData> pair = translateToOutput(session, shapelessRecipe.result());
+                    if (pair == null || !pair.right().isValid()) {
+                        // Likely modded item Bedrock will complain about
+                        continue;
+                    }
+
+                    ItemData output = pair.right();
+                    if (!(pair.left() instanceof BedrockRequiresTagItem)) {
+                        // Strip NBT - tools won't appear in the recipe book otherwise
+                        output = output.toBuilder().tag(null).build();
+                    }
+                }
+            }
+        }
+
+        System.out.println(craftingDataPacket);
+        session.sendUpstreamPacket(craftingDataPacket);
+        session.sendUpstreamPacket(recipesPacket);
+        session.getLastRecipeNetId().set(netId);
+
+        // Multi-version can mean different Bedrock item IDs
+        TAG_TO_ITEM_DESCRIPTOR_CACHE.remove();
     }
 
-//    private List<String> getBedrockRecipes(GeyserSession session, List<ClientboundRecipeBookAddPacket.Entry> entry) {
-//        List<String> recipes = new ArrayList<>();
-//        for (String javaIdentifier : javaRecipeIdentifiers) {
-//            List<String> bedrockRecipes = session.getJavaToBedrockRecipeIds().get(javaIdentifier);
-//            // Some recipes are not (un)lockable on Bedrock edition, like furnace or stonecutter recipes.
-//            // So we don't store/send these.
-//            if (bedrockRecipes != null) {
-//                recipes.addAll(bedrockRecipes);
-//            }
+    private static final ThreadLocal<Map<int[], ItemDescriptorWithCount[]>> TAG_TO_ITEM_DESCRIPTOR_CACHE = ThreadLocal.withInitial(Object2ObjectOpenHashMap::new);
+
+    private ItemDescriptorWithCount[] translateToInput(GeyserSession session, SlotDisplay slotDisplay) {
+        if (slotDisplay instanceof EmptySlotDisplay) {
+            return new ItemDescriptorWithCount[] {ItemDescriptorWithCount.EMPTY};
+        }
+        if (slotDisplay instanceof CompositeSlotDisplay composite) {
+            if (composite.contents().size() == 1) {
+                return translateToInput(session, composite.contents().get(0));
+            }
+            return composite.contents().stream()
+                .map(subDisplay -> translateToInput(session, subDisplay))
+                .filter(Objects::nonNull)
+                .flatMap(Arrays::stream)
+                .toArray(ItemDescriptorWithCount[]::new);
+        }
+        if (slotDisplay instanceof ItemSlotDisplay itemSlot) {
+            return new ItemDescriptorWithCount[] {fromItem(session, itemSlot.item())};
+        }
+        if (slotDisplay instanceof ItemStackSlotDisplay itemStackSlot) {
+            ItemData item = ItemTranslator.translateToBedrock(session, itemStackSlot.itemStack());
+            return new ItemDescriptorWithCount[] {ItemDescriptorWithCount.fromItem(item)};
+        }
+        if (slotDisplay instanceof TagSlotDisplay tagSlot) {
+            Key tag = tagSlot.tag();
+            int[] items = session.getTagCache().getRaw(new Tag<>(JavaRegistries.ITEM, tag)); // I don't like this...
+            if (items == null || items.length == 0) {
+                return new ItemDescriptorWithCount[] {ItemDescriptorWithCount.EMPTY};
+            } else if (items.length == 1) {
+                return new ItemDescriptorWithCount[] {fromItem(session, items[0])};
+            } else {
+                // Cache is implemented as, presumably, an item tag will be used multiple times in succession
+                // (E.G. a chest with planks tags)
+                return TAG_TO_ITEM_DESCRIPTOR_CACHE.get().computeIfAbsent(items, key -> {
+//                    String molang = "q.is_item_name_any('', "
+//                        + Arrays.stream(items).mapToObj(item -> {
+//                            ItemMapping mapping = session.getItemMappings().getMapping(item);
+//                            return "'" + mapping.getBedrockIdentifier() + "'";
+//                        }).collect(Collectors.joining(", "))
+//                        + ")";
+//                    String molang = Arrays.stream(items).mapToObj(item -> {
+//                        ItemMapping mapping = session.getItemMappings().getMapping(item);
+//                        return "q.identifier == '" + mapping.getBedrockIdentifier() + "'";
+//                    }).collect(Collectors.joining(" || "));
+//                    if ("minecraft:planks".equals(tag.toString())) {
+//                        String molang = "q.any_tag('minecraft:planks')";
+//                        return new ItemDescriptorWithCount[] {new ItemDescriptorWithCount(new MolangDescriptor(molang, 10), 1)};
+//                    }
+                    return null;
+//                    Set<ItemDescriptorWithCount> itemDescriptors = new HashSet<>();
+//                    for (int item : key) {
+//                        itemDescriptors.add(fromItem(session, item));
+//                    }
+//                    return itemDescriptors.toArray(ItemDescriptorWithCount[]::new);
+                });
+            }
+        }
+        session.getGeyser().getLogger().warning("Unimplemented slot display type for input: " + slotDisplay);
+        return null;
+    }
+
+    private Pair<Item, ItemData> translateToOutput(GeyserSession session, SlotDisplay slotDisplay) {
+        if (slotDisplay instanceof EmptySlotDisplay) {
+            return null;
+        }
+        if (slotDisplay instanceof ItemSlotDisplay itemSlot) {
+            int item = itemSlot.item();
+            return Pair.of(Registries.JAVA_ITEMS.get(item), ItemTranslator.translateToBedrock(session, new ItemStack(item)));
+        }
+        if (slotDisplay instanceof ItemStackSlotDisplay itemStackSlot) {
+            ItemStack stack = itemStackSlot.itemStack();
+            return Pair.of(Registries.JAVA_ITEMS.get(stack.getId()), ItemTranslator.translateToBedrock(session, stack));
+        }
+        session.getGeyser().getLogger().warning("Unimplemented slot display type for output: " + slotDisplay);
+        return null;
+    }
+
+    private ItemDescriptorWithCount fromItem(GeyserSession session, int item) {
+        if (item == Items.AIR_ID) {
+            return ItemDescriptorWithCount.EMPTY;
+        }
+        ItemMapping mapping = session.getItemMappings().getMapping(item);
+        return new ItemDescriptorWithCount(new DefaultDescriptor(mapping.getBedrockDefinition(), mapping.getBedrockData()), 1); // Need to check count
+    }
+
+//    private static ItemDescriptorWithCount[][] combinations(ItemDescriptorWithCount[] itemDescriptors) {
+//        int totalCombinations = 1;
+//        for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
+//            totalCombinations *= optionSet.size();
+//        }
+//        if (totalCombinations > 500) {
+//            ItemDescriptorWithCount[] translatedItems = new ItemDescriptorWithCount[ingredients.length];
+//            for (int i = 0; i < ingredients.length; i++) {
+//                if (ingredients[i].getOptions().length > 0) {
+//                    translatedItems[i] = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, ingredients[i].getOptions()[0]));
+//                } else {
+//                    translatedItems[i] = ItemDescriptorWithCount.EMPTY;
+//                }
+//            }
+//            return new ItemDescriptorWithCount[][]{translatedItems};
+//        }
+//        List<Set<ItemDescriptorWithCount>> sortedSets = new ArrayList<>(squashedOptions.keySet());
+//        sortedSets.sort(Comparator.comparing(Set::size, Comparator.reverseOrder()));
+//        ItemDescriptorWithCount[][] combinations = new ItemDescriptorWithCount[totalCombinations][ingredients.length];
+//        int x = 1;
+//        for (Set<ItemDescriptorWithCount> set : sortedSets) {
+//            IntSet slotSet = squashedOptions.get(set);
+//            int i = 0;
+//            for (ItemDescriptorWithCount item : set) {
+//                for (int j = 0; j < totalCombinations / set.size(); j++) {
+//                    final int comboIndex = (i * x) + (j % x) + ((j / x) * set.size() * x);
+//                    for (IntIterator it = slotSet.iterator(); it.hasNext(); ) {
+//                        combinations[comboIndex][it.nextInt()] = item;
+//                    }
+//                }
+//                i++;
+//            }
+//            x *= set.size();
 //        }
-//        return recipes;
 //    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookRemoveTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookRemoveTranslator.java
new file mode 100644
index 000000000..27faecef7
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookRemoveTranslator.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java;
+
+import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookRemovePacket;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Translator(packet = ClientboundRecipeBookRemovePacket.class)
+public class JavaRecipeBookRemoveTranslator extends PacketTranslator<ClientboundRecipeBookRemovePacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundRecipeBookRemovePacket packet) {
+        List<String> recipes = getBedrockRecipes(session, packet.getRecipes());
+        if (recipes.isEmpty()) {
+            // Sending an empty list here will crash the client as of 1.20.60
+            return;
+        }
+        UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
+        recipesPacket.setAction(UnlockedRecipesPacket.ActionType.REMOVE_UNLOCKED);
+        recipesPacket.getUnlockedRecipes().addAll(recipes);
+        session.sendUpstreamPacket(recipesPacket);
+    }
+
+    private List<String> getBedrockRecipes(GeyserSession session, int[] javaRecipeIds) {
+        List<String> recipes = new ArrayList<>();
+        for (int javaIdentifier : javaRecipeIds) {
+            List<String> bedrockRecipes = session.getJavaToBedrockRecipeIds().get(javaIdentifier);
+            // Some recipes are not (un)lockable on Bedrock edition, like furnace or stonecutter recipes.
+            // So we don't store/send these.
+            if (bedrockRecipes != null) {
+                recipes.addAll(bedrockRecipes);
+            }
+        }
+        return recipes;
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index f5dab4cd0..2ea116de5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -109,6 +109,9 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
      * Checks for a changed output slot in the crafting grid, and ensures Bedrock sees the recipe.
      */
     private static void updateCraftingGrid(GeyserSession session, int slot, ItemStack item, Inventory inventory, InventoryTranslator translator) {
+        if (true) {
+            return;
+        }
         // Check if it's the crafting grid result slot.
         if (slot != 0) {
             return;

From 52ce17dee6f1dd894ca0037dc292b2b06a3ddcd0 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Wed, 23 Oct 2024 20:40:46 -0400
Subject: [PATCH 013/165] Re-implement stonecutter recipes

---
 .../geyser/session/GeyserSession.java         |  2 +-
 .../java/JavaUpdateRecipesTranslator.java     | 87 ++++++++++++++++++-
 2 files changed, 87 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 211486963..df5c3d7a8 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -451,7 +451,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     /**
      * Saves a list of all stonecutter recipes, for use in a stonecutter inventory.
-     * The key is the Java ID of the item; the values are all the possible outputs' Java IDs sorted by their string identifier
+     * The key is the Bedrock recipe net ID; the values are their respective output and button ID.
      */
     @Setter
     private Int2ObjectMap<GeyserStonecutterData> stonecutterRecipes;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index e6e875791..729ff965b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -25,15 +25,35 @@
 
 package org.geysermc.geyser.translator.protocol.java;
 
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.MultiRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.RecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
+import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
+import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
+import org.geysermc.geyser.inventory.recipe.GeyserStonecutterData;
+import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.MinecraftKey;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundUpdateRecipesPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundUpdateRecipesPacket.SelectableRecipe;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.UUID;
@@ -84,7 +104,72 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
 
     @Override
     public void translate(GeyserSession session, ClientboundUpdateRecipesPacket packet) {
-        // :(
+        int netId = session.getLastRecipeNetId().get();
+        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
+        System.out.println(packet);
+        Int2ObjectMap<List<SelectableRecipe>> unsortedStonecutterData = new Int2ObjectOpenHashMap<>();
+
+        List<SelectableRecipe> stonecutterRecipes = packet.getStonecutterRecipes();
+        for (SelectableRecipe recipe : stonecutterRecipes) {
+            // Hardcoding the heck out of this until we see different examples of how this works.
+            HolderSet ingredient = recipe.input().getValues();
+            if (ingredient.getHolders() == null || ingredient.getHolders().length != 1) {
+                session.getGeyser().getLogger().debug("Ignoring stonecutter recipe for weird input: " + recipe);
+                continue;
+            }
+            if (!(recipe.recipe() instanceof ItemStackSlotDisplay)) {
+                session.getGeyser().getLogger().debug("Ignoring stonecutter recipe for weird output: " + recipe);
+                continue;
+            }
+            unsortedStonecutterData.computeIfAbsent(ingredient.getHolders()[0], $ -> new ArrayList<>()).add(recipe);
+        }
+
+        Int2ObjectMap<GeyserStonecutterData> stonecutterRecipeMap = new Int2ObjectOpenHashMap<>();
+        for (Int2ObjectMap.Entry<List<SelectableRecipe>> data : unsortedStonecutterData.int2ObjectEntrySet()) {
+            // Sort the list by each output item's Java identifier - this is how it's sorted on Java, and therefore
+            // We can get the correct order for button pressing
+            data.getValue().sort(Comparator.comparing((stoneCuttingRecipeData ->
+                Registries.JAVA_ITEMS.get().get(((ItemStackSlotDisplay) stoneCuttingRecipeData.recipe()).itemStack().getId())
+                    // See RecipeManager#getRecipesFor as of 1.21
+                    .translationKey())));
+
+            // Now that it's sorted, let's translate these recipes
+            int buttonId = 0;
+            for (SelectableRecipe recipe : data.getValue()) {
+                // As of 1.16.4, all stonecutter recipes have one ingredient option
+                HolderSet ingredient = recipe.input().getValues();
+                int javaInput = ingredient.getHolders()[0];
+                ItemMapping mapping = session.getItemMappings().getMapping(javaInput);
+                if (mapping.getJavaItem() == Items.AIR) {
+                    // Modded ?
+                    continue;
+                }
+                ItemDescriptorWithCount descriptor = new ItemDescriptorWithCount(new DefaultDescriptor(mapping.getBedrockDefinition(), mapping.getBedrockData()), 1);
+                ItemStack javaOutput = ((ItemStackSlotDisplay) recipe.recipe()).itemStack();
+                ItemData output = ItemTranslator.translateToBedrock(session, javaOutput);
+                if (!output.isValid()) {
+                    // Probably modded items
+                    continue;
+                }
+                int recipeNetId = netId++;
+                UUID uuid = UUID.randomUUID();
+                // We need to register stonecutting recipes, so they show up on Bedrock
+                // (Implementation note: recipe ID creates the order which stonecutting recipes are shown in stonecutter
+                craftingDataPacket.getCraftingData().add(ShapelessRecipeData.shapeless("stonecutter_" + javaInput + "_" + buttonId,
+                    Collections.singletonList(descriptor), Collections.singletonList(output), uuid, "stonecutter", 0, recipeNetId, RecipeUnlockingRequirement.INVALID));
+                session.getGeyser().getLogger().info(mapping.getJavaItem().javaIdentifier() + " " + buttonId + " " + recipeNetId);
+
+                // Save the recipe list for reference when crafting
+                // Add the net ID as the key and the button required + output for the value
+                stonecutterRecipeMap.put(recipeNetId, new GeyserStonecutterData(buttonId++, javaOutput));
+
+                // Currently, stone cutter recipes are not locked/unlocked on Bedrock; so no need to cache their identifiers.
+            }
+        }
+
+        session.sendUpstreamPacket(craftingDataPacket);
+        session.setStonecutterRecipes(stonecutterRecipeMap);
+        session.getLastRecipeNetId().set(netId);
     }
 //        boolean sendTrimRecipes = false;
 //        Map<String, List<String>> recipeIDs = session.getJavaToBedrockRecipeIds();

From 29fe033257d78e92cf7f3c957b809599d3f83b06 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Fri, 25 Oct 2024 00:55:19 +0800
Subject: [PATCH 014/165] Don't attempt to clear registry that hasn't been
 loaded yet (#5101)

---
 core/src/main/java/org/geysermc/geyser/GeyserImpl.java     | 4 +++-
 .../org/geysermc/geyser/registry/DeferredRegistry.java     | 7 +++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
index 9df1d2189..4672aef5b 100644
--- a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
@@ -723,7 +723,9 @@ public class GeyserImpl implements GeyserApi, EventRegistrar {
         runIfNonNull(newsHandler, NewsHandler::shutdown);
         runIfNonNull(erosionUnixListener, UnixSocketClientListener::close);
 
-        Registries.RESOURCE_PACKS.get().clear();
+        if (Registries.RESOURCE_PACKS.loaded()) {
+            Registries.RESOURCE_PACKS.get().clear();
+        }
 
         this.setEnabled(false);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java
index 6a2f2ae37..ce77261ae 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java
@@ -112,6 +112,13 @@ public final class DeferredRegistry<M> implements IRegistry<M> {
         this.loaded = true;
     }
 
+    /**
+     * Whether this registry was loaded.
+     */
+    public boolean loaded() {
+        return this.loaded;
+    }
+
     /**
      * Creates a new deferred registry.
      *

From e17ad64d8ca4e5e9b4eff351baee0ebcd0388043 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 24 Oct 2024 13:47:03 -0400
Subject: [PATCH 015/165] Migrate to SERVER-AUTHORITATIVE MOVEMENT dun dun
 dunnnn

---
 .../level/physics/CollisionManager.java       |  14 +-
 .../geyser/level/physics/CollisionResult.java |   3 +-
 .../geyser/network/CodecProcessor.java        |   3 +-
 .../geyser/network/UpstreamPacketHandler.java |   2 +-
 .../geyser/session/GeyserSession.java         |  24 +-
 .../geyser/session/cache/InputCache.java      |  80 +++++++
 ...BedrockInventoryTransactionTranslator.java |  73 ++-----
 ...anslator.java => BedrockBlockActions.java} | 181 ++--------------
 .../player/BedrockMovePlayerTranslator.java   |  51 +++--
 .../player/BedrockPlayerActionTranslator.java | 108 +++++++++
 .../BedrockPlayerAuthInputTranslator.java     | 205 ++++++++++++++++++
 .../java/JavaRecipeBookAddTranslator.java     | 150 +++++++------
 .../java/JavaUpdateRecipesTranslator.java     |   3 +-
 13 files changed, 557 insertions(+), 340 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/{BedrockActionTranslator.java => BedrockBlockActions.java} (58%)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
index a0fb312b4..5c87993df 100644
--- a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.level.physics;
 
 import lombok.Getter;
 import lombok.Setter;
+import net.kyori.adventure.util.TriState;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.GenericMath;
 import org.cloudburstmc.math.vector.Vector3d;
@@ -153,11 +154,10 @@ public class CollisionManager {
      * the two versions. Will also send corrected movement packets back to Bedrock if they collide with pistons.
      *
      * @param bedrockPosition the current Bedrock position of the client
-     * @param onGround whether the Bedrock player is on the ground
      * @param teleported whether the Bedrock player has teleported to a new position. If true, movement correction is skipped.
      * @return the position to send to the Java server, or null to cancel sending the packet
      */
-    public @Nullable Vector3d adjustBedrockPosition(Vector3f bedrockPosition, boolean onGround, boolean teleported) {
+    public @Nullable CollisionResult adjustBedrockPosition(Vector3f bedrockPosition, boolean teleported) {
         PistonCache pistonCache = session.getPistonCache();
         // Bedrock clients tend to fall off of honey blocks, so we need to teleport them to the new position
         if (pistonCache.isPlayerAttachedToHoney()) {
@@ -176,7 +176,7 @@ public class CollisionManager {
             playerBoundingBox.setMiddleY(position.getY() + playerBoundingBox.getSizeY() / 2);
             playerBoundingBox.setMiddleZ(position.getZ());
 
-            return playerBoundingBox.getBottomCenter();
+            return new CollisionResult(playerBoundingBox.getBottomCenter(), TriState.NOT_SET);
         }
 
         Vector3d startingPos = playerBoundingBox.getBottomCenter();
@@ -198,9 +198,9 @@ public class CollisionManager {
 
         position = playerBoundingBox.getBottomCenter();
 
-        boolean newOnGround = adjustedMovement.getY() != movement.getY() && movement.getY() < 0 || onGround;
+        boolean newOnGround = adjustedMovement.getY() != movement.getY() && movement.getY() < 0;
         // Send corrected position to Bedrock if they differ by too much to prevent de-syncs
-        if (onGround != newOnGround || movement.distanceSquared(adjustedMovement) > INCORRECT_MOVEMENT_THRESHOLD) {
+        if (/*onGround != newOnGround || */movement.distanceSquared(adjustedMovement) > INCORRECT_MOVEMENT_THRESHOLD) {
             PlayerEntity playerEntity = session.getPlayerEntity();
             // Client will dismount if on a vehicle
             if (playerEntity.getVehicle() == null && pistonCache.getPlayerMotion().equals(Vector3f.ZERO) && !pistonCache.isPlayerSlimeCollision()) {
@@ -208,12 +208,12 @@ public class CollisionManager {
             }
         }
 
-        if (!onGround) {
+        if (!newOnGround) {
             // Trim the position to prevent rounding errors that make Java think we are clipping into a block
             position = Vector3d.from(position.getX(), Double.parseDouble(DECIMAL_FORMAT.format(position.getY())), position.getZ());
         }
 
-        return position;
+        return new CollisionResult(position, TriState.byBoolean(newOnGround));
     }
 
     // TODO: This makes the player look upwards for some reason, rotation values must be wrong
diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java
index 8ba5f895b..3c8271cd9 100644
--- a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java
+++ b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionResult.java
@@ -25,10 +25,11 @@
 
 package org.geysermc.geyser.level.physics;
 
+import net.kyori.adventure.util.TriState;
 import org.cloudburstmc.math.vector.Vector3d;
 
 /**
  * Holds the result of a collision check.
  */
-public record CollisionResult(Vector3d correctedMovement, boolean horizontalCollision) {
+public record CollisionResult(Vector3d correctedMovement, TriState onGround) {
 }
diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
index cdbeef143..d5a4dd246 100644
--- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
+++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
@@ -71,7 +71,6 @@ import org.cloudburstmc.protocol.bedrock.packet.MultiplayerSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.NpcRequestPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PhotoInfoRequestPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PhotoTransferPacket;
-import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerHotbarPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerSkinPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PurchaseReceiptPacket;
@@ -318,7 +317,7 @@ class CodecProcessor {
             .updateSerializer(ClientCheatAbilityPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(CraftingEventPacket.class, ILLEGAL_SERIALIZER)
             // Illegal unusued serverbound packets that relate to unused features
-            .updateSerializer(PlayerAuthInputPacket.class, ILLEGAL_SERIALIZER)
+            //.updateSerializer(PlayerAuthInputPacket.class, ILLEGAL_SERIALIZER) TODO keeping until we determine which packets should replace
             .updateSerializer(ClientCacheBlobStatusPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(SubClientLoginPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(SubChunkRequestPacket.class, ILLEGAL_SERIALIZER)
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index 48f1dee5f..19e56c8a8 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -290,7 +290,7 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     }
 
     @Override
-    public PacketSignal handle(MovePlayerPacket packet) {
+    public PacketSignal handle(MovePlayerPacket packet) { // TODO
         if (session.isLoggingIn()) {
             SetTitlePacket titlePacket = new SetTitlePacket();
             titlePacket.setType(SetTitlePacket.Type.ACTIONBAR);
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index df5c3d7a8..9b9e86bb2 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -161,6 +161,7 @@ import org.geysermc.geyser.session.cache.ChunkCache;
 import org.geysermc.geyser.session.cache.EntityCache;
 import org.geysermc.geyser.session.cache.EntityEffectCache;
 import org.geysermc.geyser.session.cache.FormCache;
+import org.geysermc.geyser.session.cache.InputCache;
 import org.geysermc.geyser.session.cache.LodestoneCache;
 import org.geysermc.geyser.session.cache.PistonCache;
 import org.geysermc.geyser.session.cache.PreferencesCache;
@@ -210,7 +211,6 @@ import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.Serverbound
 import org.geysermc.mcprotocollib.protocol.packet.handshake.serverbound.ClientIntentionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatCommandSignedPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerAbilitiesPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemPacket;
@@ -276,6 +276,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private final EntityCache entityCache;
     private final EntityEffectCache effectCache;
     private final FormCache formCache;
+    private final InputCache inputCache;
     private final LodestoneCache lodestoneCache;
     private final PistonCache pistonCache;
     private final PreferencesCache preferencesCache;
@@ -523,12 +524,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     @Setter
     private boolean placedBucket;
 
-    /**
-     * Used to send a movement packet every three seconds if the player hasn't moved. Prevents timeouts when AFK in certain instances.
-     */
-    @Setter
-    private long lastMovementTimestamp = System.currentTimeMillis();
-
     /**
      * Used to send a ServerboundMoveVehiclePacket for every PlayerInputPacket after idling on a boat/horse for more than 100ms
      */
@@ -672,6 +667,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         this.entityCache = new EntityCache(this);
         this.effectCache = new EntityEffectCache();
         this.formCache = new FormCache(this);
+        this.inputCache = new InputCache(this);
         this.lodestoneCache = new LodestoneCache();
         this.pistonCache = new PistonCache(this);
         this.preferencesCache = new PreferencesCache(this);
@@ -1266,18 +1262,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     protected void tick() {
         try {
             pistonCache.tick();
-            // Check to see if the player's position needs updating - a position update should be sent once every 3 seconds
-            if (spawned && (System.currentTimeMillis() - lastMovementTimestamp) > 3000) {
-                // Recalculate in case something else changed position
-                Vector3d position = collisionManager.adjustBedrockPosition(playerEntity.getPosition(), playerEntity.isOnGround(), false);
-                // A null return value cancels the packet
-                if (position != null) {
-                    ServerboundMovePlayerPosPacket packet = new ServerboundMovePlayerPosPacket(playerEntity.isOnGround(), false, //FIXME
-                            position.getX(), position.getY(), position.getZ());
-                    sendDownstreamGamePacket(packet);
-                }
-                lastMovementTimestamp = System.currentTimeMillis();
-            }
 
             if (worldBorder.isResizing()) {
                 worldBorder.resize();
@@ -1668,7 +1652,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
         startGamePacket.setChatRestrictionLevel(ChatRestrictionLevel.NONE);
 
-        startGamePacket.setAuthoritativeMovementMode(AuthoritativeMovementMode.CLIENT);
+        startGamePacket.setAuthoritativeMovementMode(AuthoritativeMovementMode.SERVER);
         startGamePacket.setRewindHistorySize(0);
         startGamePacket.setServerAuthoritativeBlockBreaking(false);
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
new file mode 100644
index 000000000..b59df0c16
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session.cache;
+
+import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundPlayerInputPacket;
+
+import java.util.Set;
+
+public final class InputCache {
+    private final GeyserSession session;
+    private ServerboundPlayerInputPacket inputPacket = new ServerboundPlayerInputPacket(false, false, false, false, false, false, false);
+    private boolean lastHorizontalCollision;
+    private int ticksSinceLastMovePacket;
+
+    public InputCache(GeyserSession session) {
+        this.session = session;
+    }
+
+    public void processInputs(PlayerAuthInputPacket packet) {
+        // Input is sent to the server before packet positions, as of 1.21.2
+        Set<PlayerAuthInputData> bedrockInput = packet.getInputData();
+        var oldInputPacket = this.inputPacket;
+        // TODO when is UP_LEFT, etc. used?
+        this.inputPacket = this.inputPacket
+            .withForward(bedrockInput.contains(PlayerAuthInputData.UP))
+            .withBackward(bedrockInput.contains(PlayerAuthInputData.DOWN))
+            .withLeft(bedrockInput.contains(PlayerAuthInputData.LEFT))
+            .withRight(bedrockInput.contains(PlayerAuthInputData.RIGHT))
+            .withJump(bedrockInput.contains(PlayerAuthInputData.JUMPING)) // Looks like this only triggers when the JUMP key input is being pressed. There's also JUMP_DOWN?
+            .withShift(bedrockInput.contains(PlayerAuthInputData.SNEAKING))
+            .withSprint(bedrockInput.contains(PlayerAuthInputData.SPRINTING)); // SPRINTING will trigger even if the player isn't moving
+
+        if (oldInputPacket != this.inputPacket) { // Simple equality check is fine since we're checking for an instance change.
+            session.sendDownstreamGamePacket(this.inputPacket);
+        }
+    }
+
+    public void markPositionPacketSent() {
+        this.ticksSinceLastMovePacket = 0;
+    }
+
+    public boolean shouldSendPositionReminder() {
+        // NOTE: if we implement spectating entities, DO NOT TICK THIS LOGIC THEN.
+        return ++this.ticksSinceLastMovePacket >= 20;
+    }
+
+    public boolean lastHorizontalCollision() {
+        return lastHorizontalCollision;
+    }
+
+    public void setLastHorizontalCollision(boolean lastHorizontalCollision) {
+        this.lastHorizontalCollision = lastHorizontalCollision;
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
index 7ed4ac72c..421e082b1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
@@ -30,7 +30,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMaps;
 import org.cloudburstmc.math.vector.Vector3d;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.math.vector.Vector3i;
-import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
@@ -42,7 +41,6 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.transaction.InventoryTra
 import org.cloudburstmc.protocol.bedrock.data.inventory.transaction.LegacySetItemSlotData;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerOpenPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryTransactionPacket;
-import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateBlockPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
@@ -187,7 +185,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                                 default -> false;
                             };
                             if (isGodBridging) {
-                                restoreCorrectBlock(session, blockPos, packet);
+                                restoreCorrectBlock(session, blockPos);
                                 return;
                             }
                         }
@@ -207,7 +205,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                                 int belowBlock = session.getGeyser().getWorldManager().getBlockAt(session, belowBlockPos);
                                 BlockDefinition extendedCollisionDefinition = session.getBlockMappings().getExtendedCollisionBoxes().get(belowBlock);
                                 if (extendedCollisionDefinition != null && (System.currentTimeMillis() - session.getLastInteractionTime()) < 200) {
-                                    restoreCorrectBlock(session, blockPos, packet);
+                                    restoreCorrectBlock(session, blockPos);
                                     return;
                                 }
                             }
@@ -227,7 +225,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                         }
 
                         if (isIncorrectHeldItem(session, packet)) {
-                            restoreCorrectBlock(session, blockPos, packet);
+                            restoreCorrectBlock(session, blockPos);
                             return;
                         }
 
@@ -247,7 +245,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                          */
                         // Blocks cannot be placed or destroyed outside of the world border
                         if (!session.getWorldBorder().isInsideBorderBoundaries()) {
-                            restoreCorrectBlock(session, blockPos, packet);
+                            restoreCorrectBlock(session, blockPos);
                             return;
                         }
 
@@ -256,7 +254,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                         playerPosition = playerPosition.down(EntityDefinitions.PLAYER.offset() - session.getEyeHeight());
 
                         if (!canInteractWithBlock(session, playerPosition, packetBlockPosition)) {
-                            restoreCorrectBlock(session, blockPos, packet);
+                            restoreCorrectBlock(session, blockPos);
                             return;
                         }
 
@@ -270,7 +268,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                         double clickDistanceY = clickPositionFullY - blockCenter.getY();
                         double clickDistanceZ = clickPositionFullZ - blockCenter.getZ();
                         if (!(Math.abs(clickDistanceX) < 1.0000001D && Math.abs(clickDistanceY) < 1.0000001D && Math.abs(clickDistanceZ) < 1.0000001D)) {
-                            restoreCorrectBlock(session, blockPos, packet);
+                            restoreCorrectBlock(session, blockPos);
                             return;
                         }
 
@@ -424,53 +422,6 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                             }
                         }
                     }
-                    case 2 -> {
-                        int blockState = session.getGameMode() == GameMode.CREATIVE ?
-                                session.getGeyser().getWorldManager().getBlockAt(session, packet.getBlockPosition()) : session.getBreakingBlock();
-
-                        session.setLastBlockPlaced(null);
-                        session.setLastBlockPlacePosition(null);
-
-                        // Same deal with vanilla block placing as above.
-                        if (!session.getWorldBorder().isInsideBorderBoundaries()) {
-                            restoreCorrectBlock(session, packet.getBlockPosition(), packet);
-                            return;
-                        }
-
-                        Vector3f playerPosition = session.getPlayerEntity().getPosition();
-                        playerPosition = playerPosition.down(EntityDefinitions.PLAYER.offset() - session.getEyeHeight());
-
-                        if (!canInteractWithBlock(session, playerPosition, packet.getBlockPosition())) {
-                            restoreCorrectBlock(session, packet.getBlockPosition(), packet);
-                            return;
-                        }
-
-                        int sequence = session.getWorldCache().nextPredictionSequence();
-                        session.getWorldCache().markPositionInSequence(packet.getBlockPosition());
-                        // -1 means we don't know what block they're breaking
-                        if (blockState == -1) {
-                            blockState = Block.JAVA_AIR_ID;
-                        }
-
-                        LevelEventPacket blockBreakPacket = new LevelEventPacket();
-                        blockBreakPacket.setType(LevelEvent.PARTICLE_DESTROY_BLOCK);
-                        blockBreakPacket.setPosition(packet.getBlockPosition().toFloat());
-                        blockBreakPacket.setData(session.getBlockMappings().getBedrockBlockId(blockState));
-                        session.sendUpstreamPacket(blockBreakPacket);
-                        session.setBreakingBlock(-1);
-
-                        Entity itemFrameEntity = ItemFrameEntity.getItemFrameEntity(session, packet.getBlockPosition());
-                        if (itemFrameEntity != null) {
-                            ServerboundInteractPacket attackPacket = new ServerboundInteractPacket(itemFrameEntity.getEntityId(),
-                                    InteractAction.ATTACK, session.isSneaking());
-                            session.sendDownstreamGamePacket(attackPacket);
-                            break;
-                        }
-
-                        PlayerAction action = session.getGameMode() == GameMode.CREATIVE ? PlayerAction.START_DIGGING : PlayerAction.FINISH_DIGGING;
-                        ServerboundPlayerActionPacket breakPacket = new ServerboundPlayerActionPacket(action, packet.getBlockPosition(), Direction.VALUES[packet.getBlockFace()], sequence);
-                        session.sendDownstreamGamePacket(breakPacket);
-                    }
                 }
                 break;
             case ITEM_RELEASE:
@@ -550,7 +501,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
         }
     }
 
-    private boolean canInteractWithBlock(GeyserSession session, Vector3f playerPosition, Vector3i packetBlockPosition) {
+    public static boolean canInteractWithBlock(GeyserSession session, Vector3f playerPosition, Vector3i packetBlockPosition) {
         // ViaVersion sends this 1.20.5+ attribute also, so older servers will have correct range checks.
         double blockInteractionRange = session.getPlayerEntity().getBlockInteractionRange();
 
@@ -578,7 +529,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
      * @param session the session of the Bedrock client
      * @param blockPos the block position to restore
      */
-    private void restoreCorrectBlock(GeyserSession session, Vector3i blockPos, InventoryTransactionPacket packet) {
+    public static void restoreCorrectBlock(GeyserSession session, Vector3i blockPos) {
         BlockState javaBlockState = session.getGeyser().getWorldManager().blockAt(session, blockPos);
         BlockDefinition bedrockBlock = session.getBlockMappings().getBedrockBlock(javaBlockState);
 
@@ -605,7 +556,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
         session.sendUpstreamPacket(updateWaterPacket);
 
         // Reset the item in hand to prevent "missing" blocks
-        InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), session.getPlayerInventory().getOffsetForHotbar(packet.getHotbarSlot()));
+        InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), session.getPlayerInventory().getHeldItemSlot()); // TODO test
     }
 
     private boolean isIncorrectHeldItem(GeyserSession session, InventoryTransactionPacket packet) {
@@ -699,9 +650,11 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
         float pitch = (float) -Math.toDegrees(Math.atan2(yDiff, xzHypot));
 
         SessionPlayerEntity entity = session.getPlayerEntity();
-        ServerboundMovePlayerPosRotPacket returnPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), false, playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), entity.getYaw(), entity.getPitch());
+        ServerboundMovePlayerPosRotPacket returnPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), session.getInputCache().lastHorizontalCollision(),
+            playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), entity.getYaw(), entity.getPitch());
         // This matches Java edition behavior
-        ServerboundMovePlayerPosRotPacket movementPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), false, playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), yaw, pitch);
+        ServerboundMovePlayerPosRotPacket movementPacket = new ServerboundMovePlayerPosRotPacket(entity.isOnGround(), session.getInputCache().lastHorizontalCollision(),
+            playerPosition.getX(), playerPosition.getY(), playerPosition.getZ(), yaw, pitch);
         session.sendDownstreamGamePacket(movementPacket);
 
         if (session.getLookBackScheduledFuture() != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
similarity index 58%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
index 669481747..0d4da1cb1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockActionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
@@ -29,14 +29,11 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.data.PlayerActionType;
+import org.cloudburstmc.protocol.bedrock.data.PlayerBlockActionData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
-import org.cloudburstmc.protocol.bedrock.data.entity.EntityEventType;
-import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.packet.AnimatePacket;
-import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
-import org.cloudburstmc.protocol.bedrock.packet.PlayerActionPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
 import org.geysermc.geyser.api.block.custom.CustomBlockState;
 import org.geysermc.geyser.entity.type.Entity;
@@ -44,7 +41,6 @@ import org.geysermc.geyser.entity.type.ItemFrameEntity;
 import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.level.block.Blocks;
-import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.registry.BlockRegistries;
@@ -52,8 +48,6 @@ import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.SkullCache;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.BlockUtils;
 import org.geysermc.geyser.util.CooldownUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
@@ -61,107 +55,36 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerAction;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerAbilitiesPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerCommandPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundSwingPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemOnPacket;
 
-@Translator(packet = PlayerActionPacket.class)
-public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket> {
+import java.util.List;
 
-    @Override
-    public void translate(GeyserSession session, PlayerActionPacket packet) {
+final class BedrockBlockActions {
+
+    static void translate(GeyserSession session, List<PlayerBlockActionData> playerActions) {
         SessionPlayerEntity entity = session.getPlayerEntity();
 
         // Send book update before any player action
-        if (packet.getAction() != PlayerActionType.RESPAWN) {
-            session.getBookEditCache().checkForSend();
+        session.getBookEditCache().checkForSend();
+
+        for (PlayerBlockActionData blockActionData : playerActions) {
+            handle(session, entity, blockActionData);
         }
+    }
 
-        Vector3i vector = packet.getBlockPosition();
+    private static void handle(GeyserSession session, SessionPlayerEntity entity, PlayerBlockActionData blockActionData) {
+        PlayerActionType action = blockActionData.getAction();
+        Vector3i vector = blockActionData.getBlockPosition();
+        int blockFace = blockActionData.getFace();
 
-        switch (packet.getAction()) {
-            case RESPAWN -> {
-                // Respawn process is finished and the server and client are both OK with respawning.
-                EntityEventPacket eventPacket = new EntityEventPacket();
-                eventPacket.setRuntimeEntityId(entity.getGeyserId());
-                eventPacket.setType(EntityEventType.RESPAWN);
-                eventPacket.setData(0);
-                session.sendUpstreamPacket(eventPacket);
-                // Resend attributes or else in rare cases the user can think they're not dead when they are, upon joining the server
-                UpdateAttributesPacket attributesPacket = new UpdateAttributesPacket();
-                attributesPacket.setRuntimeEntityId(entity.getGeyserId());
-                attributesPacket.getAttributes().addAll(entity.getAttributes().values());
-                session.sendUpstreamPacket(attributesPacket);
-
-                // Bounding box must be sent after a player dies and respawns since 1.19.40
-                entity.updateBoundingBox();
-
-                // Needed here since 1.19.81 for dimension switching
-                session.getEntityCache().updateBossBars();
-            }
-            case START_SWIMMING -> {
-                if (!entity.getFlag(EntityFlag.SWIMMING)) {
-                    ServerboundPlayerCommandPacket startSwimPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SPRINTING);
-                    session.sendDownstreamGamePacket(startSwimPacket);
-
-                    session.setSwimming(true);
-                }
-            }
-            case STOP_SWIMMING -> {
-                // Prevent packet spam when Bedrock players are crawling near the edge of a block
-                if (!session.getCollisionManager().mustPlayerCrawlHere()) {
-                    ServerboundPlayerCommandPacket stopSwimPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SPRINTING);
-                    session.sendDownstreamGamePacket(stopSwimPacket);
-
-                    session.setSwimming(false);
-                }
-            }
-            case START_GLIDE -> {
-                // Otherwise gliding will not work in creative
-                ServerboundPlayerAbilitiesPacket playerAbilitiesPacket = new ServerboundPlayerAbilitiesPacket(false);
-                session.sendDownstreamGamePacket(playerAbilitiesPacket);
-                sendPlayerGlideToggle(session, entity);
-            }
-            case STOP_GLIDE -> sendPlayerGlideToggle(session, entity);
-            case START_SNEAK -> {
-                ServerboundPlayerCommandPacket startSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SNEAKING);
-                session.sendDownstreamGamePacket(startSneakPacket);
-
-                session.startSneaking();
-            }
-            case STOP_SNEAK -> {
-                ServerboundPlayerCommandPacket stopSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SNEAKING);
-                session.sendDownstreamGamePacket(stopSneakPacket);
-
-                session.stopSneaking();
-            }
-            case START_SPRINT -> {
-                if (!entity.getFlag(EntityFlag.SWIMMING)) {
-                    ServerboundPlayerCommandPacket startSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SPRINTING);
-                    session.sendDownstreamGamePacket(startSprintPacket);
-                    session.setSprinting(true);
-                }
-            }
-            case STOP_SPRINT -> {
-                if (!entity.getFlag(EntityFlag.SWIMMING)) {
-                    ServerboundPlayerCommandPacket stopSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SPRINTING);
-                    session.sendDownstreamGamePacket(stopSprintPacket);
-                }
-                session.setSprinting(false);
-            }
+        switch (action) {
             case DROP_ITEM -> {
                 ServerboundPlayerActionPacket dropItemPacket = new ServerboundPlayerActionPacket(PlayerAction.DROP_ITEM,
-                    vector, Direction.VALUES[packet.getFace()], 0);
+                    vector, Direction.VALUES[blockFace], 0);
                 session.sendDownstreamGamePacket(dropItemPacket);
             }
-            case STOP_SLEEP -> {
-                ServerboundPlayerCommandPacket stopSleepingPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.LEAVE_BED);
-                session.sendDownstreamGamePacket(stopSleepingPacket);
-            }
             case START_BREAK -> {
                 // Ignore START_BREAK when the player is CREATIVE to avoid Spigot receiving 2 packets it interpets as block breaking. https://github.com/GeyserMC/Geyser/issues/4021
                 if (session.getGameMode() == GameMode.CREATIVE) {
@@ -191,9 +114,9 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
                 session.sendUpstreamPacket(startBreak);
 
                 // Account for fire - the client likes to hit the block behind.
-                Vector3i fireBlockPos = BlockUtils.getBlockPosition(vector, packet.getFace());
+                Vector3i fireBlockPos = BlockUtils.getBlockPosition(vector, blockFace);
                 Block block = session.getGeyser().getWorldManager().blockAt(session, fireBlockPos).block();
-                Direction direction = Direction.VALUES[packet.getFace()];
+                Direction direction = Direction.VALUES[blockFace];
                 if (block == Blocks.FIRE || block == Blocks.SOUL_FIRE) {
                     ServerboundPlayerActionPacket startBreakingPacket = new ServerboundPlayerActionPacket(PlayerAction.START_DIGGING, fireBlockPos,
                         direction, session.getWorldCache().nextPredictionSequence());
@@ -218,7 +141,7 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
                 Vector3f vectorFloat = vector.toFloat();
 
                 BlockState breakingBlockState = BlockState.of(breakingBlock);
-                Direction direction = Direction.VALUES[packet.getFace()];
+                Direction direction = Direction.VALUES[blockFace];
                 spawnBlockBreakParticles(session, direction, vector, breakingBlockState);
 
                 double breakTime = BlockUtils.getSessionBreakTime(session, breakingBlockState.block()) * 20;
@@ -304,69 +227,10 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
                     session.sendUpstreamPacket(animatePacket);
                 }
             }
-            case START_FLYING -> { // Since 1.20.30
-                if (session.isCanFly()) {
-                    if (session.getGameMode() == GameMode.SPECTATOR) {
-                        // should already be flying
-                        session.sendAdventureSettings();
-                        break;
-                    }
-
-                    if (session.getPlayerEntity().getFlag(EntityFlag.SWIMMING) && session.getCollisionManager().isPlayerInWater()) {
-                        // As of 1.18.1, Java Edition cannot fly while in water, but it can fly while crawling
-                        // If this isn't present, swimming on a 1.13.2 server and then attempting to fly will put you into a flying/swimming state that is invalid on JE
-                        session.sendAdventureSettings();
-                        break;
-                    }
-
-                    session.setFlying(true);
-                    session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(true));
-                } else {
-                    // update whether we can fly
-                    session.sendAdventureSettings();
-                    // stop flying
-                    PlayerActionPacket stopFlyingPacket = new PlayerActionPacket();
-                    stopFlyingPacket.setRuntimeEntityId(session.getPlayerEntity().getGeyserId());
-                    stopFlyingPacket.setAction(PlayerActionType.STOP_FLYING);
-                    stopFlyingPacket.setBlockPosition(Vector3i.ZERO);
-                    stopFlyingPacket.setResultPosition(Vector3i.ZERO);
-                    stopFlyingPacket.setFace(0);
-                    session.sendUpstreamPacket(stopFlyingPacket);
-                }
-            }
-            case STOP_FLYING -> {
-                session.setFlying(false);
-                session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(false));
-            }
-            case DIMENSION_CHANGE_REQUEST_OR_CREATIVE_DESTROY_BLOCK -> { // Used by client to get book from lecterns and items from item frame in creative mode since 1.20.70
-                BlockState state = session.getGeyser().getWorldManager().blockAt(session, vector);
-
-                if (state.getValue(Properties.HAS_BOOK, false)) {
-                    session.setDroppingLecternBook(true);
-
-                    ServerboundUseItemOnPacket blockPacket = new ServerboundUseItemOnPacket(
-                        vector,
-                        Direction.DOWN,
-                        Hand.MAIN_HAND,
-                        0, 0, 0,
-                        false,
-                        false,
-                        session.getWorldCache().nextPredictionSequence());
-                    session.sendDownstreamGamePacket(blockPacket);
-                    break;
-                }
-
-                Entity itemFrame = ItemFrameEntity.getItemFrameEntity(session, packet.getBlockPosition());
-                if (itemFrame != null) {
-                    ServerboundInteractPacket interactPacket = new ServerboundInteractPacket(itemFrame.getEntityId(),
-                        InteractAction.ATTACK, Hand.MAIN_HAND, session.isSneaking());
-                    session.sendDownstreamGamePacket(interactPacket);
-                }
-            }
         }
     }
 
-    private void spawnBlockBreakParticles(GeyserSession session, Direction direction, Vector3i position, BlockState blockState) {
+    private static void spawnBlockBreakParticles(GeyserSession session, Direction direction, Vector3i position, BlockState blockState) {
         LevelEventPacket levelEventPacket = new LevelEventPacket();
         switch (direction) {
             case UP -> levelEventPacket.setType(LevelEvent.PARTICLE_BREAK_BLOCK_UP);
@@ -380,9 +244,4 @@ public class BedrockActionTranslator extends PacketTranslator<PlayerActionPacket
         levelEventPacket.setData(session.getBlockMappings().getBedrockBlock(blockState).getRuntimeId());
         session.sendUpstreamPacket(levelEventPacket);
     }
-
-    private void sendPlayerGlideToggle(GeyserSession session, Entity entity) {
-        ServerboundPlayerCommandPacket glidePacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_ELYTRA_FLYING);
-        session.sendDownstreamGamePacket(glidePacket);
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
index c4cb10127..22732ad01 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
@@ -27,34 +27,33 @@ package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
 
 import org.cloudburstmc.math.vector.Vector3d;
 import org.cloudburstmc.math.vector.Vector3f;
-import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
+import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.entity.vehicle.ClientVehicle;
+import org.geysermc.geyser.level.physics.CollisionResult;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.mcprotocollib.network.packet.Packet;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosRotPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerRotPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerStatusOnlyPacket;
 
-@Translator(packet = MovePlayerPacket.class)
-public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPacket> {
 
-    @Override
-    public void translate(GeyserSession session, MovePlayerPacket packet) {
+public final class BedrockMovePlayerTranslator {
+
+    static void translate(GeyserSession session, PlayerAuthInputPacket packet) {
         SessionPlayerEntity entity = session.getPlayerEntity();
         if (!session.isSpawned()) return;
 
-        session.setLastMovementTimestamp(System.currentTimeMillis());
-
         // Send book update before the player moves
         session.getBookEditCache().checkForSend();
 
+        boolean actualPositionChanged = !entity.getPosition().equals(packet.getPosition());
         // Ignore movement packets until Bedrock's position matches the teleported position
-        if (session.getUnconfirmedTeleport() != null) {
+        if (session.getUnconfirmedTeleport() != null && actualPositionChanged) {
             session.confirmTeleport(packet.getPosition().toDouble().sub(0, EntityDefinitions.PLAYER.offset(), 0));
             return;
         }
@@ -70,7 +69,8 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
         float pitch = packet.getRotation().getX();
         float headYaw = packet.getRotation().getY();
 
-        boolean positionChanged = !entity.getPosition().equals(packet.getPosition());
+        // shouldSendPositionReminder also increments a tick counter, so make sure it's always called.
+        boolean positionChanged = session.getInputCache().shouldSendPositionReminder() || actualPositionChanged;
         boolean rotationChanged = entity.getYaw() != yaw || entity.getPitch() != pitch || entity.getHeadYaw() != headYaw;
 
         if (session.getLookBackScheduledFuture() != null) {
@@ -80,19 +80,22 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
             session.setLookBackScheduledFuture(null);
         }
 
+        // This takes into account no movement sent from the client, but the player is trying to move anyway.
+        // (Press into a wall in a corner - you're trying to move but nothing actually happens)
+        boolean horizontalCollision = packet.getInputData().contains(PlayerAuthInputData.HORIZONTAL_COLLISION);
+
         // If only the pitch and yaw changed
         // This isn't needed, but it makes the packets closer to vanilla
         // It also means you can't "lag back" while only looking, in theory
         if (!positionChanged && rotationChanged) {
-            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(packet.isOnGround(), false, yaw, pitch);
+            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(entity.isOnGround(), horizontalCollision, yaw, pitch);
 
             entity.setYaw(yaw);
             entity.setPitch(pitch);
             entity.setHeadYaw(headYaw);
-            entity.setOnGround(packet.isOnGround());
 
             session.sendDownstreamGamePacket(playerRotationPacket);
-        } else {
+        } else if (positionChanged) {
             // World border collision will be handled by client vehicle
             if (!(entity.getVehicle() instanceof ClientVehicle clientVehicle && clientVehicle.isClientControlled())
                     && session.getWorldBorder().isPassingIntoBorderBoundaries(packet.getPosition(), true)) {
@@ -100,9 +103,10 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
             }
 
             if (isValidMove(session, entity.getPosition(), packet.getPosition())) {
-                Vector3d position = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), packet.isOnGround(), packet.getMode() == MovePlayerPacket.Mode.TELEPORT);
-                if (position != null) { // A null return value cancels the packet
-                    boolean onGround = packet.isOnGround();
+                CollisionResult result = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), packet.getInputData().contains(PlayerAuthInputData.HANDLE_TELEPORT));
+                if (result != null) { // A null return value cancels the packet
+                    Vector3d position = result.correctedMovement();
+                    boolean onGround = result.onGround().toBooleanOrElse(entity.isOnGround());
                     boolean isBelowVoid = entity.isVoidPositionDesynched();
 
                     boolean teleportThroughVoidFloor, mustResyncPosition;
@@ -138,7 +142,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
                         // Send rotation updates as well
                         movePacket = new ServerboundMovePlayerPosRotPacket(
                                 onGround,
-                                false,
+                                horizontalCollision,
                                 position.getX(), yPosition, position.getZ(),
                                 yaw, pitch
                         );
@@ -147,7 +151,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
                         entity.setHeadYaw(headYaw);
                     } else {
                         // Rotation did not change; don't send an update with rotation
-                        movePacket = new ServerboundMovePlayerPosPacket(onGround, false, position.getX(), yPosition, position.getZ());
+                        movePacket = new ServerboundMovePlayerPosPacket(onGround, horizontalCollision, position.getX(), yPosition, position.getZ());
                     }
 
                     entity.setPositionManual(packet.getPosition());
@@ -162,6 +166,7 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
                         entity.teleportVoidFloorFix(true);
                     }
 
+                    session.getInputCache().markPositionPacketSent();
                     session.getSkullCache().updateVisibleSkulls();
                 }
             } else {
@@ -169,8 +174,12 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
                 session.getGeyser().getLogger().debug("Recalculating position...");
                 session.getCollisionManager().recalculatePosition();
             }
+        } else if (horizontalCollision != session.getInputCache().lastHorizontalCollision()) {
+            session.sendDownstreamGamePacket(new ServerboundMovePlayerStatusOnlyPacket(entity.isOnGround(), horizontalCollision));
         }
 
+        session.getInputCache().setLastHorizontalCollision(horizontalCollision);
+
         // Move parrots to match if applicable
         if (entity.getLeftParrot() != null) {
             entity.getLeftParrot().moveAbsolute(entity.getPosition(), entity.getYaw(), entity.getPitch(), entity.getHeadYaw(), true, false);
@@ -180,11 +189,11 @@ public class BedrockMovePlayerTranslator extends PacketTranslator<MovePlayerPack
         }
     }
 
-    private boolean isInvalidNumber(float val) {
+    private static boolean isInvalidNumber(float val) {
         return Float.isNaN(val) || Float.isInfinite(val);
     }
 
-    private boolean isValidMove(GeyserSession session, Vector3f currentPosition, Vector3f newPosition) {
+    private static boolean isValidMove(GeyserSession session, Vector3f currentPosition, Vector3f newPosition) {
         if (isInvalidNumber(newPosition.getX()) || isInvalidNumber(newPosition.getY()) || isInvalidNumber(newPosition.getZ())) {
             return false;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java
new file mode 100644
index 000000000..39f773418
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
+
+import org.cloudburstmc.math.vector.Vector3i;
+import org.cloudburstmc.protocol.bedrock.data.entity.EntityEventType;
+import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerActionPacket;
+import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
+import org.geysermc.geyser.entity.type.Entity;
+import org.geysermc.geyser.entity.type.ItemFrameEntity;
+import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
+import org.geysermc.geyser.level.block.property.Properties;
+import org.geysermc.geyser.level.block.type.BlockState;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerCommandPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemOnPacket;
+
+@Translator(packet = PlayerActionPacket.class)
+public class BedrockPlayerActionTranslator extends PacketTranslator<PlayerActionPacket> {
+
+    @Override
+    public void translate(GeyserSession session, PlayerActionPacket packet) {
+        // This packet was used more before server auth movement was needed, but it's still used for a couple things...
+        switch (packet.getAction()) {
+            case RESPAWN -> {
+                SessionPlayerEntity entity = session.getPlayerEntity();
+                // Respawn process is finished and the server and client are both OK with respawning.
+                EntityEventPacket eventPacket = new EntityEventPacket();
+                eventPacket.setRuntimeEntityId(entity.getGeyserId());
+                eventPacket.setType(EntityEventType.RESPAWN);
+                eventPacket.setData(0);
+                session.sendUpstreamPacket(eventPacket);
+                // Resend attributes or else in rare cases the user can think they're not dead when they are, upon joining the server
+                UpdateAttributesPacket attributesPacket = new UpdateAttributesPacket();
+                attributesPacket.setRuntimeEntityId(entity.getGeyserId());
+                attributesPacket.getAttributes().addAll(entity.getAttributes().values());
+                session.sendUpstreamPacket(attributesPacket);
+
+                // Bounding box must be sent after a player dies and respawns since 1.19.40
+                entity.updateBoundingBox();
+
+                // Needed here since 1.19.81 for dimension switching
+                session.getEntityCache().updateBossBars();
+            }
+            case STOP_SLEEP -> {
+                ServerboundPlayerCommandPacket stopSleepingPacket = new ServerboundPlayerCommandPacket(session.getPlayerEntity().getEntityId(), PlayerState.LEAVE_BED);
+                session.sendDownstreamGamePacket(stopSleepingPacket);
+            }
+            case DIMENSION_CHANGE_REQUEST_OR_CREATIVE_DESTROY_BLOCK -> { // Used by client to get book from lecterns and items from item frame in creative mode since 1.20.70
+                Vector3i vector = packet.getBlockPosition();
+                BlockState state = session.getGeyser().getWorldManager().blockAt(session, vector);
+
+                if (state.getValue(Properties.HAS_BOOK, false)) {
+                    session.setDroppingLecternBook(true);
+
+                    ServerboundUseItemOnPacket blockPacket = new ServerboundUseItemOnPacket(
+                        vector,
+                        Direction.DOWN,
+                        Hand.MAIN_HAND,
+                        0, 0, 0,
+                        false,
+                        false,
+                        session.getWorldCache().nextPredictionSequence());
+                    session.sendDownstreamGamePacket(blockPacket);
+                    break;
+                }
+
+                Entity itemFrame = ItemFrameEntity.getItemFrameEntity(session, vector);
+                if (itemFrame != null) {
+                    ServerboundInteractPacket interactPacket = new ServerboundInteractPacket(itemFrame.getEntityId(),
+                        InteractAction.ATTACK, Hand.MAIN_HAND, session.isSneaking());
+                    session.sendDownstreamGamePacket(interactPacket);
+                }
+            }
+        }
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
new file mode 100644
index 000000000..5465de51c
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
+
+import org.cloudburstmc.math.vector.Vector3f;
+import org.cloudburstmc.math.vector.Vector3i;
+import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
+import org.cloudburstmc.protocol.bedrock.data.PlayerActionType;
+import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
+import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
+import org.cloudburstmc.protocol.bedrock.data.inventory.transaction.ItemUseTransaction;
+import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerActionPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
+import org.geysermc.geyser.entity.EntityDefinitions;
+import org.geysermc.geyser.entity.type.Entity;
+import org.geysermc.geyser.entity.type.ItemFrameEntity;
+import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
+import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.geyser.translator.protocol.bedrock.BedrockInventoryTransactionTranslator;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerAction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerAbilitiesPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerCommandPacket;
+
+import java.util.Set;
+
+@Translator(packet = PlayerAuthInputPacket.class)
+public class BedrockPlayerAuthInputTranslator extends PacketTranslator<PlayerAuthInputPacket> {
+
+    @Override
+    public void translate(GeyserSession session, PlayerAuthInputPacket packet) {
+        SessionPlayerEntity entity = session.getPlayerEntity();
+        session.getInputCache().processInputs(packet);
+
+        BedrockMovePlayerTranslator.translate(session, packet);
+
+        Set<PlayerAuthInputData> inputData = packet.getInputData();
+        if (!inputData.isEmpty()) {
+            for (PlayerAuthInputData input : inputData) {
+                switch (input) {
+                    case PERFORM_ITEM_INTERACTION -> processItemUseTransaction(session, packet.getItemUseTransaction());
+                    case PERFORM_BLOCK_ACTIONS -> BedrockBlockActions.translate(session, packet.getPlayerActions());
+                    case START_SNEAKING -> {
+                        ServerboundPlayerCommandPacket startSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SNEAKING);
+                        session.sendDownstreamGamePacket(startSneakPacket);
+
+                        session.startSneaking();
+                    }
+                    case STOP_SNEAKING -> {
+                        ServerboundPlayerCommandPacket stopSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SNEAKING);
+                        session.sendDownstreamGamePacket(stopSneakPacket);
+
+                        session.stopSneaking();
+                    }
+                    case START_SPRINTING -> {
+                        if (!entity.getFlag(EntityFlag.SWIMMING)) {
+                            ServerboundPlayerCommandPacket startSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SPRINTING);
+                            session.sendDownstreamGamePacket(startSprintPacket);
+                            session.setSprinting(true);
+                        }
+                    }
+                    case STOP_SPRINTING -> {
+                        if (!entity.getFlag(EntityFlag.SWIMMING)) {
+                            ServerboundPlayerCommandPacket stopSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SPRINTING);
+                            session.sendDownstreamGamePacket(stopSprintPacket);
+                        }
+                        session.setSprinting(false);
+                    }
+                    case START_SWIMMING -> session.setSwimming(true);
+                    case STOP_SWIMMING -> session.setSwimming(false);
+                    case START_FLYING -> { // Since 1.20.30
+                        if (session.isCanFly()) {
+                            if (session.getGameMode() == GameMode.SPECTATOR) {
+                                // should already be flying
+                                session.sendAdventureSettings();
+                                break;
+                            }
+
+                            if (session.getPlayerEntity().getFlag(EntityFlag.SWIMMING) && session.getCollisionManager().isPlayerInWater()) {
+                                // As of 1.18.1, Java Edition cannot fly while in water, but it can fly while crawling
+                                // If this isn't present, swimming on a 1.13.2 server and then attempting to fly will put you into a flying/swimming state that is invalid on JE
+                                session.sendAdventureSettings();
+                                break;
+                            }
+
+                            session.setFlying(true);
+                            session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(true));
+                        } else {
+                            // update whether we can fly
+                            session.sendAdventureSettings();
+                            // stop flying
+                            PlayerActionPacket stopFlyingPacket = new PlayerActionPacket();
+                            stopFlyingPacket.setRuntimeEntityId(session.getPlayerEntity().getGeyserId());
+                            stopFlyingPacket.setAction(PlayerActionType.STOP_FLYING);
+                            stopFlyingPacket.setBlockPosition(Vector3i.ZERO);
+                            stopFlyingPacket.setResultPosition(Vector3i.ZERO);
+                            stopFlyingPacket.setFace(0);
+                            session.sendUpstreamPacket(stopFlyingPacket);
+                        }
+                    }
+                    case STOP_FLYING -> {
+                        session.setFlying(false);
+                        session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(false));
+                    }
+                    case START_GLIDING -> {
+                        // Otherwise gliding will not work in creative
+                        ServerboundPlayerAbilitiesPacket playerAbilitiesPacket = new ServerboundPlayerAbilitiesPacket(false);
+                        session.sendDownstreamGamePacket(playerAbilitiesPacket);
+                        sendPlayerGlideToggle(session, entity);
+                    }
+                    case STOP_GLIDING -> sendPlayerGlideToggle(session, entity);
+                }
+            }
+        }
+    }
+
+    private static void sendPlayerGlideToggle(GeyserSession session, Entity entity) {
+        ServerboundPlayerCommandPacket glidePacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_ELYTRA_FLYING);
+        session.sendDownstreamGamePacket(glidePacket);
+    }
+
+    private static void processItemUseTransaction(GeyserSession session, ItemUseTransaction transaction) {
+        if (transaction.getActionType() == 2) {
+            int blockState = session.getGameMode() == GameMode.CREATIVE ?
+                session.getGeyser().getWorldManager().getBlockAt(session, transaction.getBlockPosition()) : session.getBreakingBlock();
+
+            session.setLastBlockPlaced(null);
+            session.setLastBlockPlacePosition(null);
+
+            // Same deal with vanilla block placing as above.
+            if (!session.getWorldBorder().isInsideBorderBoundaries()) {
+                BedrockInventoryTransactionTranslator.restoreCorrectBlock(session, transaction.getBlockPosition());
+                return;
+            }
+
+            Vector3f playerPosition = session.getPlayerEntity().getPosition();
+            playerPosition = playerPosition.down(EntityDefinitions.PLAYER.offset() - session.getEyeHeight());
+
+            if (!BedrockInventoryTransactionTranslator.canInteractWithBlock(session, playerPosition, transaction.getBlockPosition())) {
+                BedrockInventoryTransactionTranslator.restoreCorrectBlock(session, transaction.getBlockPosition());
+                return;
+            }
+
+            int sequence = session.getWorldCache().nextPredictionSequence();
+            session.getWorldCache().markPositionInSequence(transaction.getBlockPosition());
+            // -1 means we don't know what block they're breaking
+            if (blockState == -1) {
+                blockState = Block.JAVA_AIR_ID;
+            }
+
+            LevelEventPacket blockBreakPacket = new LevelEventPacket();
+            blockBreakPacket.setType(LevelEvent.PARTICLE_DESTROY_BLOCK);
+            blockBreakPacket.setPosition(transaction.getBlockPosition().toFloat());
+            blockBreakPacket.setData(session.getBlockMappings().getBedrockBlockId(blockState));
+            session.sendUpstreamPacket(blockBreakPacket);
+            session.setBreakingBlock(-1);
+
+            Entity itemFrameEntity = ItemFrameEntity.getItemFrameEntity(session, transaction.getBlockPosition());
+            if (itemFrameEntity != null) {
+                ServerboundInteractPacket attackPacket = new ServerboundInteractPacket(itemFrameEntity.getEntityId(),
+                    InteractAction.ATTACK, session.isSneaking());
+                session.sendDownstreamGamePacket(attackPacket);
+                return;
+            }
+
+            PlayerAction action = session.getGameMode() == GameMode.CREATIVE ? PlayerAction.START_DIGGING : PlayerAction.FINISH_DIGGING;
+            ServerboundPlayerActionPacket breakPacket = new ServerboundPlayerActionPacket(action, transaction.getBlockPosition(), Direction.VALUES[transaction.getBlockFace()], sequence);
+            session.sendDownstreamGamePacket(breakPacket);
+        } else {
+            session.getGeyser().getLogger().error("Unhandled item use transaction type!");
+        }
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 49c62989c..9cb238c71 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.java;
 
+import com.google.common.collect.Lists;
 import it.unimi.dsi.fastutil.Pair;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
@@ -32,6 +33,7 @@ import net.kyori.adventure.key.Key;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
 import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
@@ -52,6 +54,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.RecipeDispla
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.RecipeDisplayEntry;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapedCraftingRecipeDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapelessCraftingRecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.SmithingRecipeDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.CompositeSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
@@ -61,11 +64,12 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlot
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookAddPacket;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Set;
 import java.util.UUID;
 
 @Translator(packet = ClientboundRecipeBookAddPacket.class)
@@ -104,17 +108,17 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
 
                     boolean empty = true;
                     boolean complexInputs = false;
-                    List<ItemDescriptorWithCount[]> inputs = new ArrayList<>(shapedRecipe.ingredients().size());
+                    List<List<ItemDescriptorWithCount>> inputs = new ArrayList<>(shapedRecipe.ingredients().size());
                     for (SlotDisplay input : shapedRecipe.ingredients()) {
-                        ItemDescriptorWithCount[] translated = translateToInput(session, input);
+                        List<ItemDescriptorWithCount> translated = translateToInput(session, input);
                         if (translated == null) {
                             continue;
                         }
                         inputs.add(translated);
-                        if (translated.length != 1 || translated[0] != ItemDescriptorWithCount.EMPTY) {
+                        if (translated.size() != 1 || translated.get(0) != ItemDescriptorWithCount.EMPTY) {
                             empty = false;
                         }
-                        complexInputs |= translated.length > 1;
+                        complexInputs |= translated.size() > 1;
                     }
                     if (empty) {
                         // Crashes Bedrock 1.19.70 otherwise
@@ -123,15 +127,31 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     }
 
                     if (complexInputs) {
-
-                    } else {
-                        String recipeId = Integer.toString(contents.id());
-                        craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
-                                shapedRecipe.width(), shapedRecipe.height(), inputs.stream().map(descriptors -> descriptors[0]).toList(),
-                                Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
-                        recipesPacket.getUnlockedRecipes().add(recipeId);
-                        javaToBedrockRecipeIds.put(contents.id(), Collections.singletonList(recipeId));
+                        System.out.println(inputs);
+                        if (true) continue;
+                        List<List<ItemDescriptorWithCount>> processedInputs = Lists.cartesianProduct(inputs);
+                        System.out.println(processedInputs.size());
+                        if (processedInputs.size() <= 500) { // Do not let us process giant lists.
+                            List<String> bedrockRecipeIds = new ArrayList<>();
+                            for (int i = 0; i < processedInputs.size(); i++) {
+                                List<ItemDescriptorWithCount> possibleInput = processedInputs.get(i);
+                                String recipeId = contents.id() + "_" + i;
+                                craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
+                                    shapedRecipe.width(), shapedRecipe.height(), possibleInput,
+                                    Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
+                                recipesPacket.getUnlockedRecipes().add(recipeId);
+                                bedrockRecipeIds.add(recipeId);
+                            }
+                            javaToBedrockRecipeIds.put(contents.id(), bedrockRecipeIds);
+                            continue;
+                        }
                     }
+                    String recipeId = Integer.toString(contents.id());
+                    craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
+                        shapedRecipe.width(), shapedRecipe.height(), inputs.stream().map(descriptors -> descriptors.get(0)).toList(),
+                        Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
+                    recipesPacket.getUnlockedRecipes().add(recipeId);
+                    javaToBedrockRecipeIds.put(contents.id(), Collections.singletonList(recipeId));
                 }
                 case CRAFTING_SHAPELESS -> {
                     ShapelessCraftingRecipeDisplay shapelessRecipe = (ShapelessCraftingRecipeDisplay) display;
@@ -147,6 +167,42 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                         output = output.toBuilder().tag(null).build();
                     }
                 }
+                case SMITHING -> {
+                    if (true) {
+                        System.out.println(display);
+                        continue;
+                    }
+                    SmithingRecipeDisplay smithingRecipe = (SmithingRecipeDisplay) display;
+                    Pair<Item, ItemData> output = translateToOutput(session, smithingRecipe.result());
+                    if (output == null) {
+                        continue;
+                    }
+
+                    List<ItemDescriptorWithCount> bases = translateToInput(session, smithingRecipe.base());
+                    List<ItemDescriptorWithCount> templates = translateToInput(session, smithingRecipe.template());
+                    List<ItemDescriptorWithCount> additions = translateToInput(session, smithingRecipe.addition());
+
+                    if (bases == null || templates == null || additions == null) {
+                        continue;
+                    }
+
+                    int i = 0;
+                    List<String> bedrockRecipeIds = new ArrayList<>();
+                    for (ItemDescriptorWithCount template : templates) {
+                        for (ItemDescriptorWithCount base : bases) {
+                            for (ItemDescriptorWithCount addition : additions) {
+                                String id = contents.id() + "_" + i++;
+                                // Note: vanilla inputs use aux value of Short.MAX_VALUE
+                                craftingDataPacket.getCraftingData().add(SmithingTransformRecipeData.of(id,
+                                        template, base, addition, output.right(), "smithing_table", netId++));
+
+                                recipesPacket.getUnlockedRecipes().add(id);
+                                bedrockRecipeIds.add(id);
+                            }
+                        }
+                    }
+                    javaToBedrockRecipeIds.put(contents.id(), bedrockRecipeIds);
+                }
             }
         }
 
@@ -159,11 +215,11 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         TAG_TO_ITEM_DESCRIPTOR_CACHE.remove();
     }
 
-    private static final ThreadLocal<Map<int[], ItemDescriptorWithCount[]>> TAG_TO_ITEM_DESCRIPTOR_CACHE = ThreadLocal.withInitial(Object2ObjectOpenHashMap::new);
+    private static final ThreadLocal<Map<int[], List<ItemDescriptorWithCount>>> TAG_TO_ITEM_DESCRIPTOR_CACHE = ThreadLocal.withInitial(Object2ObjectOpenHashMap::new);
 
-    private ItemDescriptorWithCount[] translateToInput(GeyserSession session, SlotDisplay slotDisplay) {
+    private List<ItemDescriptorWithCount> translateToInput(GeyserSession session, SlotDisplay slotDisplay) {
         if (slotDisplay instanceof EmptySlotDisplay) {
-            return new ItemDescriptorWithCount[] {ItemDescriptorWithCount.EMPTY};
+            return Collections.singletonList(ItemDescriptorWithCount.EMPTY);
         }
         if (slotDisplay instanceof CompositeSlotDisplay composite) {
             if (composite.contents().size() == 1) {
@@ -172,23 +228,23 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
             return composite.contents().stream()
                 .map(subDisplay -> translateToInput(session, subDisplay))
                 .filter(Objects::nonNull)
-                .flatMap(Arrays::stream)
-                .toArray(ItemDescriptorWithCount[]::new);
+                .flatMap(List::stream)
+                .toList();
         }
         if (slotDisplay instanceof ItemSlotDisplay itemSlot) {
-            return new ItemDescriptorWithCount[] {fromItem(session, itemSlot.item())};
+            return Collections.singletonList(fromItem(session, itemSlot.item()));
         }
         if (slotDisplay instanceof ItemStackSlotDisplay itemStackSlot) {
             ItemData item = ItemTranslator.translateToBedrock(session, itemStackSlot.itemStack());
-            return new ItemDescriptorWithCount[] {ItemDescriptorWithCount.fromItem(item)};
+            return Collections.singletonList(ItemDescriptorWithCount.fromItem(item));
         }
         if (slotDisplay instanceof TagSlotDisplay tagSlot) {
             Key tag = tagSlot.tag();
             int[] items = session.getTagCache().getRaw(new Tag<>(JavaRegistries.ITEM, tag)); // I don't like this...
             if (items == null || items.length == 0) {
-                return new ItemDescriptorWithCount[] {ItemDescriptorWithCount.EMPTY};
+                return Collections.singletonList(ItemDescriptorWithCount.EMPTY);
             } else if (items.length == 1) {
-                return new ItemDescriptorWithCount[] {fromItem(session, items[0])};
+                return Collections.singletonList(fromItem(session, items[0]));
             } else {
                 // Cache is implemented as, presumably, an item tag will be used multiple times in succession
                 // (E.G. a chest with planks tags)
@@ -205,14 +261,14 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
 //                    }).collect(Collectors.joining(" || "));
 //                    if ("minecraft:planks".equals(tag.toString())) {
 //                        String molang = "q.any_tag('minecraft:planks')";
-//                        return new ItemDescriptorWithCount[] {new ItemDescriptorWithCount(new MolangDescriptor(molang, 10), 1)};
+//                        return Collections.singletonList(new ItemDescriptorWithCount(new MolangDescriptor(molang, 10), 1));
 //                    }
-                    return null;
-//                    Set<ItemDescriptorWithCount> itemDescriptors = new HashSet<>();
-//                    for (int item : key) {
-//                        itemDescriptors.add(fromItem(session, item));
-//                    }
-//                    return itemDescriptors.toArray(ItemDescriptorWithCount[]::new);
+
+                    Set<ItemDescriptorWithCount> itemDescriptors = new HashSet<>();
+                    for (int item : key) {
+                        itemDescriptors.add(fromItem(session, item));
+                    }
+                    return new ArrayList<>(itemDescriptors); // This, or a list from the start with contains -> add?
                 });
             }
         }
@@ -243,40 +299,4 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         ItemMapping mapping = session.getItemMappings().getMapping(item);
         return new ItemDescriptorWithCount(new DefaultDescriptor(mapping.getBedrockDefinition(), mapping.getBedrockData()), 1); // Need to check count
     }
-
-//    private static ItemDescriptorWithCount[][] combinations(ItemDescriptorWithCount[] itemDescriptors) {
-//        int totalCombinations = 1;
-//        for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
-//            totalCombinations *= optionSet.size();
-//        }
-//        if (totalCombinations > 500) {
-//            ItemDescriptorWithCount[] translatedItems = new ItemDescriptorWithCount[ingredients.length];
-//            for (int i = 0; i < ingredients.length; i++) {
-//                if (ingredients[i].getOptions().length > 0) {
-//                    translatedItems[i] = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, ingredients[i].getOptions()[0]));
-//                } else {
-//                    translatedItems[i] = ItemDescriptorWithCount.EMPTY;
-//                }
-//            }
-//            return new ItemDescriptorWithCount[][]{translatedItems};
-//        }
-//        List<Set<ItemDescriptorWithCount>> sortedSets = new ArrayList<>(squashedOptions.keySet());
-//        sortedSets.sort(Comparator.comparing(Set::size, Comparator.reverseOrder()));
-//        ItemDescriptorWithCount[][] combinations = new ItemDescriptorWithCount[totalCombinations][ingredients.length];
-//        int x = 1;
-//        for (Set<ItemDescriptorWithCount> set : sortedSets) {
-//            IntSet slotSet = squashedOptions.get(set);
-//            int i = 0;
-//            for (ItemDescriptorWithCount item : set) {
-//                for (int j = 0; j < totalCombinations / set.size(); j++) {
-//                    final int comboIndex = (i * x) + (j % x) + ((j / x) * set.size() * x);
-//                    for (IntIterator it = slotSet.iterator(); it.hasNext(); ) {
-//                        combinations[comboIndex][it.nextInt()] = item;
-//                    }
-//                }
-//                i++;
-//            }
-//            x *= set.size();
-//        }
-//    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index 729ff965b..de62fb922 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -154,10 +154,9 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
                 int recipeNetId = netId++;
                 UUID uuid = UUID.randomUUID();
                 // We need to register stonecutting recipes, so they show up on Bedrock
-                // (Implementation note: recipe ID creates the order which stonecutting recipes are shown in stonecutter
+                // (Implementation note: recipe ID creates the order which stonecutting recipes are shown in stonecutter)
                 craftingDataPacket.getCraftingData().add(ShapelessRecipeData.shapeless("stonecutter_" + javaInput + "_" + buttonId,
                     Collections.singletonList(descriptor), Collections.singletonList(output), uuid, "stonecutter", 0, recipeNetId, RecipeUnlockingRequirement.INVALID));
-                session.getGeyser().getLogger().info(mapping.getJavaItem().javaIdentifier() + " " + buttonId + " " + recipeNetId);
 
                 // Save the recipe list for reference when crafting
                 // Add the net ID as the key and the button required + output for the value

From 1a04aa6ea6c44071a84f3e8022d7f35e9f91fb5a Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Fri, 25 Oct 2024 02:15:51 +0800
Subject: [PATCH 016/165] Initial 1.21.3 changes for mod platforms

---
 .../platform/fabric/GeyserFabricBootstrap.java      |  4 ++--
 .../mod/fabric/src/main/resources/fabric.mod.json   |  4 ++--
 .../platform/neoforge/GeyserNeoForgeBootstrap.java  |  8 +++++---
 .../platform/mod/GeyserModCompressionDisabler.java  |  4 ++--
 .../platform/mod/GeyserModUpdateListener.java       |  4 ++--
 .../platform/mod/world/GeyserModWorldManager.java   |  4 ++--
 ...geyser.modrinth-uploading-conventions.gradle.kts |  2 +-
 core/build.gradle.kts                               |  4 ++++
 core/src/main/resources/mappings                    |  2 +-
 gradle.properties                                   |  5 ++++-
 gradle/libs.versions.toml                           | 13 +++++++------
 11 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/bootstrap/mod/fabric/src/main/java/org/geysermc/geyser/platform/fabric/GeyserFabricBootstrap.java b/bootstrap/mod/fabric/src/main/java/org/geysermc/geyser/platform/fabric/GeyserFabricBootstrap.java
index 149246d59..96a60322b 100644
--- a/bootstrap/mod/fabric/src/main/java/org/geysermc/geyser/platform/fabric/GeyserFabricBootstrap.java
+++ b/bootstrap/mod/fabric/src/main/java/org/geysermc/geyser/platform/fabric/GeyserFabricBootstrap.java
@@ -32,7 +32,7 @@ import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
 import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
 import net.fabricmc.loader.api.FabricLoader;
 import net.minecraft.commands.CommandSourceStack;
-import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.command.CommandRegistry;
 import org.geysermc.geyser.command.CommandSourceConverter;
@@ -80,7 +80,7 @@ public class GeyserFabricBootstrap extends GeyserModBootstrap implements ModInit
         var sourceConverter = CommandSourceConverter.layered(
                 CommandSourceStack.class,
                 id -> getServer().getPlayerList().getPlayer(id),
-                Player::createCommandSourceStack,
+                ServerPlayer::createCommandSourceStack,
                 () -> getServer().createCommandSourceStack(), // NPE if method reference is used, since server is not available yet
                 ModCommandSource::new
         );
diff --git a/bootstrap/mod/fabric/src/main/resources/fabric.mod.json b/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
index 262f9833a..a801eb207 100644
--- a/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
+++ b/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
@@ -23,8 +23,8 @@
     "geyser.mixins.json"
   ],
   "depends": {
-    "fabricloader": ">=0.15.11",
+    "fabricloader": ">=0.16.7",
     "fabric": "*",
-    "minecraft": ">=1.21"
+    "minecraft": ">=1.21.2"
   }
 }
diff --git a/bootstrap/mod/neoforge/src/main/java/org/geysermc/geyser/platform/neoforge/GeyserNeoForgeBootstrap.java b/bootstrap/mod/neoforge/src/main/java/org/geysermc/geyser/platform/neoforge/GeyserNeoForgeBootstrap.java
index ad56eda39..aa731befc 100644
--- a/bootstrap/mod/neoforge/src/main/java/org/geysermc/geyser/platform/neoforge/GeyserNeoForgeBootstrap.java
+++ b/bootstrap/mod/neoforge/src/main/java/org/geysermc/geyser/platform/neoforge/GeyserNeoForgeBootstrap.java
@@ -26,7 +26,7 @@
 package org.geysermc.geyser.platform.neoforge;
 
 import net.minecraft.commands.CommandSourceStack;
-import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
 import net.neoforged.bus.api.EventPriority;
 import net.neoforged.fml.ModContainer;
 import net.neoforged.fml.common.Mod;
@@ -72,7 +72,7 @@ public class GeyserNeoForgeBootstrap extends GeyserModBootstrap {
         var sourceConverter = CommandSourceConverter.layered(
                 CommandSourceStack.class,
                 id -> getServer().getPlayerList().getPlayer(id),
-                Player::createCommandSourceStack,
+                ServerPlayer::createCommandSourceStack,
                 () -> getServer().createCommandSourceStack(),
                 ModCommandSource::new
         );
@@ -104,7 +104,9 @@ public class GeyserNeoForgeBootstrap extends GeyserModBootstrap {
     }
 
     private void onPlayerJoin(PlayerEvent.PlayerLoggedInEvent event) {
-        GeyserModUpdateListener.onPlayReady(event.getEntity());
+        if (event.getEntity() instanceof ServerPlayer player) {
+            GeyserModUpdateListener.onPlayReady(player);
+        }
     }
 
     @Override
diff --git a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModCompressionDisabler.java b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModCompressionDisabler.java
index 631a21510..89ca53544 100644
--- a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModCompressionDisabler.java
+++ b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModCompressionDisabler.java
@@ -28,8 +28,8 @@ package org.geysermc.geyser.platform.mod;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelOutboundHandlerAdapter;
 import io.netty.channel.ChannelPromise;
-import net.minecraft.network.protocol.login.ClientboundGameProfilePacket;
 import net.minecraft.network.protocol.login.ClientboundLoginCompressionPacket;
+import net.minecraft.network.protocol.login.ClientboundLoginFinishedPacket;
 
 /**
  * Disables the compression packet (and the compression handlers from being added to the pipeline) for Geyser clients
@@ -45,7 +45,7 @@ public class GeyserModCompressionDisabler extends ChannelOutboundHandlerAdapter
         Class<?> msgClass = msg.getClass();
         // Don't let any compression packet get through
         if (!ClientboundLoginCompressionPacket.class.isAssignableFrom(msgClass)) {
-            if (ClientboundGameProfilePacket.class.isAssignableFrom(msgClass)) {
+            if (ClientboundLoginFinishedPacket.class.isAssignableFrom(msgClass)) {
 
                 // We're past the point that a compression packet can be sent, so we can safely yeet ourselves away
                 ctx.channel().pipeline().remove(this);
diff --git a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModUpdateListener.java b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModUpdateListener.java
index 6a724155f..ec34766dc 100644
--- a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModUpdateListener.java
+++ b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/GeyserModUpdateListener.java
@@ -25,13 +25,13 @@
 
 package org.geysermc.geyser.platform.mod;
 
-import net.minecraft.world.entity.player.Player;
+import net.minecraft.server.level.ServerPlayer;
 import org.geysermc.geyser.Permissions;
 import org.geysermc.geyser.platform.mod.command.ModCommandSource;
 import org.geysermc.geyser.util.VersionCheckUtils;
 
 public final class GeyserModUpdateListener {
-    public static void onPlayReady(Player player) {
+    public static void onPlayReady(ServerPlayer player) {
         // Should be creating this in the supplier, but we need it for the permission check.
         // Not a big deal currently because ModCommandSource doesn't load locale, so don't need to try to wait for it.
         ModCommandSource source = new ModCommandSource(player.createCommandSourceStack());
diff --git a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
index 89452eba3..ec41a0d79 100644
--- a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
+++ b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
@@ -84,7 +84,7 @@ public class GeyserModWorldManager extends GeyserWorldManager {
         }
 
         Level level = player.level();
-        if (y < level.getMinBuildHeight()) {
+        if (y < level.getMinY()) {
             return 0;
         }
 
@@ -93,7 +93,7 @@ public class GeyserModWorldManager extends GeyserWorldManager {
             return 0;
         }
 
-        int worldOffset = level.getMinBuildHeight() >> 4;
+        int worldOffset = level.getMinY() >> 4;
         int chunkOffset = (y >> 4) - worldOffset;
         if (chunkOffset < chunk.getSections().length) {
             LevelChunkSection section = chunk.getSections()[chunkOffset];
diff --git a/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts b/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
index d2e207fa4..3c0d102f7 100644
--- a/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
+++ b/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
@@ -12,7 +12,7 @@ modrinth {
     versionNumber.set(projectVersion(project))
     versionType.set("beta")
     changelog.set(System.getenv("CHANGELOG") ?: "")
-    gameVersions.addAll("1.21", libs.minecraft.get().version as String)
+    gameVersions.addAll("1.21.2", libs.minecraft.get().version as String)
     failSilently.set(true)
 
     syncBodyFrom.set(rootProject.file("README.md").readText())
diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index b0ea5fdf6..ff1de4dc0 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -6,6 +6,10 @@ plugins {
     id("io.freefair.lombok")
 }
 
+tasks.test {
+    enabled = false
+}
+
 dependencies {
     constraints {
         implementation(libs.raknet) // Ensure protocol does not override the RakNet version
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 93f207e7e..4594e8f88 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 93f207e7e9d73f58a7c8902f7deda9dcb0524c8e
+Subproject commit 4594e8f88738d2e623d0854a8831b9033e60154a
diff --git a/gradle.properties b/gradle.properties
index 1ee0e12cc..09943725b 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,7 +6,10 @@ org.gradle.parallel=true
 org.gradle.caching=true
 org.gradle.vfs.watch=false
 
+# TODO remove once architectury loom updates to 1.8
+loom.ignoreDependencyLoomVersionValidation=true
+
 group=org.geysermc
 id=geyser
-version=2.4.3-SNAPSHOT
+version=2.5.0-SNAPSHOT
 description=Allows for players from Minecraft: Bedrock Edition to join Minecraft: Java Edition servers.
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e5582e5c1..a88862965 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -33,12 +33,12 @@ commodore = "2.2"
 bungeecord = "a7c6ede"
 velocity = "3.3.0-SNAPSHOT"
 viaproxy = "3.3.2-SNAPSHOT"
-fabric-loader = "0.15.11"
-fabric-api = "0.100.1+1.21"
-neoforge-minecraft = "21.1.1"
+fabric-loader = "0.16.7"
+fabric-api = "0.106.1+1.21.3"
+neoforge-minecraft = "21.3.0-beta"
 mixin = "0.8.5"
 mixinextras = "0.3.5"
-minecraft = "1.21.1"
+minecraft = "1.21.3"
 mockito = "5.+"
 
 # plugin versions
@@ -105,7 +105,7 @@ mixinextras = { module = "io.github.llamalad7:mixinextras-common", version.ref =
 
 minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft" }
 
-# Check these on https://modmuss50.me/fabric.html
+# Check these on https://fabricmc.net/develop/
 fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" }
 fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" }
 
@@ -120,7 +120,8 @@ guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
 gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
 junit = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit" }
 minecraftauth = { group = "net.raphimc", name = "MinecraftAuth", version.ref = "minecraftauth" }
-mcprotocollib = { group = "org.geysermc.mcprotocollib", name = "protocol", version.ref = "mcprotocollib" }
+#mcprotocollib = { group = "org.geysermc.mcprotocollib", name = "protocol", version.ref = "mcprotocollib" }
+mcprotocollib = { group = "com.github.geysermc", name = "mcprotocollib", version = "feature~1.21.2-SNAPSHOT"}
 raknet = { group = "org.cloudburstmc.netty", name = "netty-transport-raknet", version.ref = "raknet" }
 terminalconsoleappender = { group = "net.minecrell", name = "terminalconsoleappender", version.ref = "terminalconsoleappender" }
 velocity-api = { group = "com.velocitypowered", name = "velocity-api", version.ref = "velocity" }

From 787dc244c86531bc8ad19f6b888129be143500e0 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 24 Oct 2024 19:27:12 -0400
Subject: [PATCH 017/165] onGround works

---
 .../level/physics/CollisionManager.java       | 78 +++++++++----------
 .../player/BedrockMovePlayerTranslator.java   | 17 ++--
 .../org/geysermc/geyser/util/BlockUtils.java  |  4 -
 3 files changed, 46 insertions(+), 53 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
index 5c87993df..c5f986499 100644
--- a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
@@ -198,22 +198,22 @@ public class CollisionManager {
 
         position = playerBoundingBox.getBottomCenter();
 
-        boolean newOnGround = adjustedMovement.getY() != movement.getY() && movement.getY() < 0;
+        boolean onGround = (adjustedMovement.getY() != movement.getY() && movement.getY() < 0) || isOnGround();
         // Send corrected position to Bedrock if they differ by too much to prevent de-syncs
-        if (/*onGround != newOnGround || */movement.distanceSquared(adjustedMovement) > INCORRECT_MOVEMENT_THRESHOLD) {
+        if (movement.distanceSquared(adjustedMovement) > INCORRECT_MOVEMENT_THRESHOLD) {
             PlayerEntity playerEntity = session.getPlayerEntity();
             // Client will dismount if on a vehicle
             if (playerEntity.getVehicle() == null && pistonCache.getPlayerMotion().equals(Vector3f.ZERO) && !pistonCache.isPlayerSlimeCollision()) {
-                playerEntity.moveAbsolute(position.toFloat(), playerEntity.getYaw(), playerEntity.getPitch(), playerEntity.getHeadYaw(), newOnGround, true);
+                playerEntity.moveAbsolute(position.toFloat(), playerEntity.getYaw(), playerEntity.getPitch(), playerEntity.getHeadYaw(), onGround, true);
             }
         }
 
-        if (!newOnGround) {
+        if (!onGround) {
             // Trim the position to prevent rounding errors that make Java think we are clipping into a block
             position = Vector3d.from(position.getX(), Double.parseDouble(DECIMAL_FORMAT.format(position.getY())), position.getZ());
         }
 
-        return new CollisionResult(position, TriState.byBoolean(newOnGround));
+        return new CollisionResult(position, TriState.byBoolean(onGround));
     }
 
     // TODO: This makes the player look upwards for some reason, rotation values must be wrong
@@ -415,44 +415,38 @@ public class CollisionManager {
         return BlockUtils.getCollision(blockId);
     }
 
-    /**
-     * @return true if the block located at the player's floor position plus 1 would intersect with the player,
-     * were they not sneaking
-     */
-    public boolean mustPlayerSneakHere() {
-        return checkPose(EntityDefinitions.PLAYER.height());
-    }
-
-    /**
-     * @return true if the block located at the player's floor position plus 1 would intersect with the player,
-     * were they not crawling
-     */
-    public boolean mustPlayerCrawlHere() {
-        return checkPose(PlayerEntity.SNEAKING_POSE_HEIGHT);
-    }
-
-    /**
-     * @param height check and see if this height is invalid in the current player position
-     */
-    private boolean checkPose(float height) {
-        Vector3i position = session.getPlayerEntity().getPosition().toInt();
-        BlockCollision collision = BlockUtils.getCollisionAt(session, position);
-        if (collision != null) {
-            // Determine, if the player's bounding box *were* at full height, if it would intersect with the block
-            // at the current location.
-            double originalY = playerBoundingBox.getMiddleY();
-            double originalHeight = playerBoundingBox.getSizeY();
-            double standingY = originalY - (originalHeight / 2.0) + (height / 2.0);
-
-            playerBoundingBox.setSizeY(EntityDefinitions.PLAYER.height());
-            playerBoundingBox.setMiddleY(standingY);
-            boolean result = collision.checkIntersection(position, playerBoundingBox);
-            result |= session.getPistonCache().checkCollision(position, playerBoundingBox);
-            playerBoundingBox.setSizeY(originalHeight);
-            playerBoundingBox.setMiddleY(originalY);
-            return result;
+    private boolean isOnGround() {
+        // Someone smarter than me at collisions plz check this.
+        Vector3d bottomCenter = playerBoundingBox.getBottomCenter();
+        Vector3i groundPos = Vector3i.from(bottomCenter.getX(), bottomCenter.getY() - 1, bottomCenter.getZ());
+        BlockCollision collision = BlockUtils.getCollisionAt(session, groundPos);
+        if (collision == null) {
+            return false; // Probably air.
         }
-        return false;
+
+        // Hack to not check below the player
+        playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() - 0.001);
+        playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() + 0.002);
+
+        boolean intersected = collision.checkIntersection(groundPos.getX(), groundPos.getY(), groundPos.getZ(), playerBoundingBox);
+
+        playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() + 0.001);
+        playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() - 0.002);
+
+        boolean result;
+        if (intersected) {
+            result = true;
+        } else {
+            // Hack to check slightly below the player
+            playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() + 0.001);
+            playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() - 0.002);
+
+            result = collision.checkIntersection(groundPos.getX(), groundPos.getY(), groundPos.getZ(), playerBoundingBox);
+
+            playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() - 0.001);
+            playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() + 0.002);
+        }
+        return result;
     }
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
index 22732ad01..a22c44089 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
@@ -48,14 +48,17 @@ public final class BedrockMovePlayerTranslator {
         SessionPlayerEntity entity = session.getPlayerEntity();
         if (!session.isSpawned()) return;
 
-        // Send book update before the player moves
-        session.getBookEditCache().checkForSend();
-
         boolean actualPositionChanged = !entity.getPosition().equals(packet.getPosition());
-        // Ignore movement packets until Bedrock's position matches the teleported position
-        if (session.getUnconfirmedTeleport() != null && actualPositionChanged) {
-            session.confirmTeleport(packet.getPosition().toDouble().sub(0, EntityDefinitions.PLAYER.offset(), 0));
-            return;
+
+        if (actualPositionChanged) {
+            // Send book update before the player moves
+            session.getBookEditCache().checkForSend();
+
+            // Ignore movement packets until Bedrock's position matches the teleported position
+            if (session.getUnconfirmedTeleport() != null) {
+                session.confirmTeleport(packet.getPosition().toDouble().sub(0, EntityDefinitions.PLAYER.offset(), 0));
+                return;
+            }
         }
 
         if (entity.getBedPosition() != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
index e73fe1a34..6367b2d14 100644
--- a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
@@ -223,10 +223,6 @@ public final class BlockUtils {
         return getCollision(session.getGeyser().getWorldManager().getBlockAt(session, blockPos));
     }
 
-    public static BlockCollision getCollisionAt(GeyserSession session, int x, int y, int z) {
-        return getCollision(session.getGeyser().getWorldManager().getBlockAt(session, x, y, z));
-    }
-
     private BlockUtils() {
     }
 }

From 67dbd869e4774ce89edbd9166883373268e4578d Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 24 Oct 2024 19:39:45 -0400
Subject: [PATCH 018/165] Update README

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 418bfcdeb..9e53b1d85 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.40 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.40 and Minecraft Java 1.21.2/1.21.3. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.

From 6331cb6d586d1a19bf9d0daabb535d82c9a58e29 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 24 Oct 2024 19:52:18 -0400
Subject: [PATCH 019/165] Fix pulling skulls/heads from creative inventory

---
 .../populator/ItemRegistryPopulator.java      | 32 ++++++++++++++++---
 1 file changed, 28 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 12b5ebb0e..0b61c7999 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -33,7 +33,13 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
 import it.unimi.dsi.fastutil.ints.IntSet;
-import it.unimi.dsi.fastutil.objects.*;
+import it.unimi.dsi.fastutil.objects.Object2IntMap;
+import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
@@ -66,10 +72,22 @@ import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
-import org.geysermc.geyser.registry.type.*;
+import org.geysermc.geyser.registry.type.BlockMappings;
+import org.geysermc.geyser.registry.type.GeyserBedrockBlock;
+import org.geysermc.geyser.registry.type.GeyserMappingItem;
+import org.geysermc.geyser.registry.type.ItemMapping;
+import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.registry.type.NonVanillaItemRegistration;
+import org.geysermc.geyser.registry.type.PaletteItem;
 
 import java.io.InputStream;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -96,7 +114,13 @@ public class ItemRegistryPopulator {
         paletteVersions.add(new PaletteVersion("1_21_0", Bedrock_v685.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion712_685::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_20", Bedrock_v712.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion729_712::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()));
-        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
+        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion(), Collections.emptyMap(), (item, mapping) -> {
+            String identifier = item.javaIdentifier();
+            if (identifier.endsWith("_head") || identifier.endsWith("_skull")) {
+                return mapping.withBedrockIdentifier(item.javaIdentifier());
+            }
+            return mapping;
+        }));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 

From 2025a2dc3ac9c13853642cb12f078588ede1845e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 25 Oct 2024 14:41:35 -0400
Subject: [PATCH 020/165] Fix teleport packets; implement new inventory packets

---
 .../geysermc/geyser/entity/type/Entity.java   | 14 +++--
 .../geyser/inventory/GeyserItemStack.java     |  3 +
 .../entity/player/BedrockBlockActions.java    |  1 -
 .../JavaEntityPositionSyncTranslator.java     |  2 +-
 .../player/JavaPlayerPositionTranslator.java  | 12 ++--
 .../JavaContainerSetSlotTranslator.java       | 11 +---
 .../JavaSetCursorItemTranslator.java          | 44 +++++++++++++
 .../JavaSetPlayerInventoryTranslator.java     | 61 +++++++++++++++++++
 .../geysermc/geyser/util/InventoryUtils.java  | 56 +++++++++--------
 9 files changed, 158 insertions(+), 46 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
index a016916f0..7f1eca8d6 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
@@ -25,12 +25,6 @@
 
 package org.geysermc.geyser.entity.type;
 
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.UUID;
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.Setter;
@@ -67,6 +61,13 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEnt
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
 
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.UUID;
+
 @Getter
 @Setter
 public class Entity implements GeyserEntity {
@@ -89,6 +90,7 @@ public class Entity implements GeyserEntity {
 
     /**
      * x = Yaw, y = Pitch, z = HeadYaw
+     * Java: Y = Yaw, X = Pitch
      */
     protected float yaw;
     protected float pitch;
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index 744ad70b6..b843b3d4d 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -164,6 +164,9 @@ public class GeyserItemStack {
     }
 
     public Item asItem() {
+        if (isEmpty()) {
+            return Items.AIR;
+        }
         if (item == null) {
             return (item = Registries.JAVA_ITEMS.get().get(javaId));
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
index 0d4da1cb1..8a56915fb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
@@ -209,7 +209,6 @@ final class BedrockBlockActions {
                 attributesPacket.getAttributes().addAll(entity.getAttributes().values());
                 session.sendUpstreamPacket(attributesPacket);
             }
-            case JUMP -> entity.setOnGround(false); // Increase block break time while jumping
             case MISSED_SWING -> {
                 // Java edition sends a cooldown when hitting air.
                 // Normally handled by BedrockLevelSoundEventTranslator, but there is no sound on Java for this.
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java
index ecc153ce0..fd7fa09ca 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityPositionSyncTranslator.java
@@ -47,6 +47,6 @@ public class JavaEntityPositionSyncTranslator extends PacketTranslator<Clientbou
             clientVehicle.getVehicleComponent().moveAbsolute(pos.getX(), pos.getY(), pos.getZ());
         }
 
-        entity.teleport(pos.toFloat(), packet.getXRot(), packet.getYRot(), packet.isOnGround());
+        entity.teleport(pos.toFloat(), packet.getYRot(), packet.getXRot(), packet.isOnGround());
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index e73e25a93..ca1b95997 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -57,9 +57,9 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             // TODO this behavior seems outdated (1.21.2).
             // The server sends an absolute teleport everytime the player is respawned
             entity.setPosition(pos.toFloat());
-            entity.setYaw(packet.getXRot());
-            entity.setPitch(packet.getYRot());
-            entity.setHeadYaw(packet.getXRot());
+            entity.setYaw(packet.getYRot());
+            entity.setPitch(packet.getXRot());
+            entity.setHeadYaw(packet.getYRot());
 
             RespawnPacket respawnPacket = new RespawnPacket();
             respawnPacket.setRuntimeEntityId(0); // Bedrock server behavior
@@ -78,7 +78,7 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             session.sendUpstreamPacket(movePlayerPacket);
             session.setSpawned(true);
             // Make sure the player moves away from (0, 32767, 0) before accepting movement packets
-            session.setUnconfirmedTeleport(new TeleportCache(packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ(), packet.getYRot(), packet.getXRot(), packet.getId())); // TODO
+            session.setUnconfirmedTeleport(new TeleportCache(packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ(), packet.getXRot(), packet.getYRot(), packet.getId())); // TODO
 
             acceptTeleport(session, packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ(), packet.getYRot(), packet.getXRot(), packet.getId());
 
@@ -107,8 +107,8 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
         double newZ = pos.getZ() +
                 (packet.getRelatives().contains(PositionElement.Z) ? entity.getPosition().getZ() : 0);
 
-        float newPitch = packet.getYRot() + (packet.getRelatives().contains(PositionElement.Y_ROT) ? entity.getPitch() : 0);
-        float newYaw = packet.getXRot() + (packet.getRelatives().contains(PositionElement.X_ROT) ? entity.getYaw() : 0);
+        float newPitch = packet.getXRot() + (packet.getRelatives().contains(PositionElement.X_ROT) ? entity.getPitch() : 0);
+        float newYaw = packet.getYRot() + (packet.getRelatives().contains(PositionElement.Y_ROT) ? entity.getYaw() : 0);
 
         int id = packet.getId();
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index 2ea116de5..743c07a31 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -58,14 +58,8 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
 
     @Override
     public void translate(GeyserSession session, ClientboundContainerSetSlotPacket packet) {
-        if (packet.getContainerId() == 255) { //cursor //TODO new packet
-            GeyserItemStack newItem = GeyserItemStack.from(packet.getItem());
-            session.getPlayerInventory().setCursor(newItem, session);
-            InventoryUtils.updateCursor(session);
-            return;
-        }
-
         //TODO: support window id -2, should update player inventory
+        //TODO: ^ I think this is outdated.
         Inventory inventory = InventoryUtils.getInventory(session, packet.getContainerId());
         if (inventory == null) {
             return;
@@ -89,8 +83,9 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
             updateCraftingGrid(session, slot, packet.getItem(), inventory, translator);
 
             GeyserItemStack newItem = GeyserItemStack.from(packet.getItem());
-            if (packet.getContainerId() == 0 && !(translator instanceof PlayerInventoryTranslator)) { //TODO new packet
+            if (packet.getContainerId() == 0 && !(translator instanceof PlayerInventoryTranslator)) {
                 // In rare cases, the window ID can still be 0 but Java treats it as valid
+                // This behavior still exists as of Java Edition 1.21.2, despite the new packet
                 session.getPlayerInventory().setItem(slot, newItem, session);
                 InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), slot);
             } else {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java
new file mode 100644
index 000000000..df11bf1af
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java.inventory;
+
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundSetCursorItemPacket;
+
+@Translator(packet = ClientboundSetCursorItemPacket.class)
+public class JavaSetCursorItemTranslator extends PacketTranslator<ClientboundSetCursorItemPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundSetCursorItemPacket packet) {
+        GeyserItemStack newItem = GeyserItemStack.from(packet.getContents());
+        session.getPlayerInventory().setCursor(newItem, session);
+        InventoryUtils.updateCursor(session);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java
new file mode 100644
index 000000000..58b30bfc8
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java.inventory;
+
+import org.geysermc.geyser.GeyserLogger;
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.inventory.InventoryTranslator;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundSetPlayerInventoryPacket;
+
+@Translator(packet = ClientboundSetPlayerInventoryPacket.class)
+public class JavaSetPlayerInventoryTranslator extends PacketTranslator<ClientboundSetPlayerInventoryPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundSetPlayerInventoryPacket packet) {
+        int slot = packet.getSlot();
+        if (slot >= 0 && slot <= 8) {
+            // As of 1.21.3 - can be replicated in vanilla server survival by picking an item in-world in your inventory not in your hotbar.
+            slot = session.getPlayerInventory().getOffsetForHotbar(slot);
+        }
+
+        if (slot >= session.getPlayerInventory().getSize()) {
+            GeyserLogger logger = session.getGeyser().getLogger();
+            logger.warning("ClientboundSetPlayerInventoryPacket sent to " + session.bedrockUsername()
+                + " that exceeds inventory size!");
+            if (logger.isDebug()) {
+                logger.debug(packet.toString());
+                logger.debug(session.getPlayerInventory().toString());
+            }
+            return;
+        }
+
+        session.getPlayerInventory().setItem(slot, GeyserItemStack.from(packet.getContents()), session);
+        InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), slot);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 947f7ed9a..3b99d5e47 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -49,7 +49,6 @@ import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.level.BedrockDimension;
 import org.geysermc.geyser.registry.Registries;
-import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
@@ -305,14 +304,7 @@ public class InventoryUtils {
 
         // If we still have not found the item, and we're in creative, ask for the item from the server.
         if (session.getGameMode() == GameMode.CREATIVE) {
-            int slot = findEmptyHotbarSlot(inventory);
-
-            ServerboundSetCreativeModeSlotPacket actionPacket = new ServerboundSetCreativeModeSlotPacket((short) slot,
-                    itemStack);
-            if ((slot - 36) != inventory.getHeldItemSlot()) {
-                setHotbarItem(session, slot);
-            }
-            session.sendDownstreamGamePacket(actionPacket);
+            setPickedItem(session, inventory, GeyserItemStack.from(itemStack));
         }
     }
 
@@ -372,24 +364,15 @@ public class InventoryUtils {
             return;
         }
 
-        // If we still have not found the item, and we're in creative, ask for the item from the server.
+        // If we still have not found the item, and we're in creative, set the item ourselves.
         if (session.getGameMode() == GameMode.CREATIVE) {
-            int slot = findEmptyHotbarSlot(inventory);
-
-            ItemMapping mapping = session.getItemMappings().getMapping(item);
-            ServerboundSetCreativeModeSlotPacket actionPacket = new ServerboundSetCreativeModeSlotPacket((short)slot,
-                    new ItemStack(mapping.getJavaItem().javaId()));
-            if ((slot - 36) != inventory.getHeldItemSlot()) {
-                setHotbarItem(session, slot);
-            }
-            session.sendDownstreamGamePacket(actionPacket);
+            GeyserItemStack itemStack = item.newItemStack(1, null);
+            setPickedItem(session, inventory, itemStack);
         }
     }
 
-    /**
-     * @return the first empty slot found in this inventory, or else the player's currently held slot.
-     */
-    private static int findEmptyHotbarSlot(PlayerInventory inventory) {
+    private static void setPickedItem(GeyserSession session, PlayerInventory inventory, GeyserItemStack itemStack) {
+        // Try to find an empty hotbar slot.
         int slot = inventory.getHeldItemSlot() + 36;
         if (!inventory.getItemInHand().isEmpty()) { // Otherwise we should just use the current slot
             for (int i = 36; i < 45; i++) {
@@ -399,7 +382,32 @@ public class InventoryUtils {
                 }
             }
         }
-        return slot;
+        GeyserItemStack existingItem = inventory.getItem(slot);
+        if (!existingItem.isEmpty()) {
+            // Try to move the item to another slot.
+            for (int i = 9; i < 36; i++) {
+                if (inventory.getItem(i).isEmpty()) {
+                    inventory.setItem(i, existingItem, session);
+                    InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, inventory, i);
+
+                    ServerboundSetCreativeModeSlotPacket actionPacket = new ServerboundSetCreativeModeSlotPacket((short) i,
+                        existingItem.getItemStack());
+                    session.sendDownstreamGamePacket(actionPacket);
+                    break;
+                }
+            }
+        }
+
+        // As of 1.21.3 - the client does this on its own end and the server doesn't send a slot response back.
+        inventory.setItem(slot, itemStack, session);
+        InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, inventory, slot);
+
+        ServerboundSetCreativeModeSlotPacket actionPacket = new ServerboundSetCreativeModeSlotPacket((short) slot,
+            itemStack.getItemStack());
+        if ((slot - 36) != inventory.getHeldItemSlot()) {
+            setHotbarItem(session, slot);
+        }
+        session.sendDownstreamGamePacket(actionPacket);
     }
 
     /**

From 774d3670c5a193f1807b4e5a376703baccfd55e4 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 26 Oct 2024 01:27:55 -0400
Subject: [PATCH 021/165] Horses are still weird, but boats are mostly working

---
 .../geysermc/geyser/entity/type/Entity.java   |   5 -
 .../entity/vehicle/VehicleComponent.java      |   1 -
 .../geyser/session/GeyserSession.java         |   6 -
 .../geyser/session/cache/InputCache.java      |  10 ++
 .../geyser/session/cache/TeleportCache.java   |   2 +-
 .../BedrockMoveEntityAbsoluteTranslator.java  |   8 +-
 .../bedrock/BedrockPlayerInputTranslator.java |  41 -------
 .../player/BedrockMovePlayerTranslator.java   |  27 ++---
 .../BedrockPlayerAuthInputTranslator.java     | 103 +++++++++++++++++-
 .../org/geysermc/geyser/util/MathUtils.java   |  11 ++
 10 files changed, 138 insertions(+), 76 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
index 7f1eca8d6..0d3214709 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
@@ -701,9 +701,4 @@ public class Entity implements GeyserEntity {
         packet.setData(data);
         session.sendUpstreamPacket(packet);
     }
-
-    @SuppressWarnings("unchecked")
-    public <I extends Entity> @Nullable I as(Class<I> entityClass) {
-        return entityClass.isInstance(this) ? (I) this : null;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java b/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
index 4f4a46dc9..91f54162b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
@@ -758,7 +758,6 @@ public class VehicleComponent<T extends LivingEntity & ClientVehicle> {
 
         ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(javaPos.getX(), javaPos.getY(), javaPos.getZ(), rotation.getX(), rotation.getY());
         vehicle.getSession().sendDownstreamPacket(moveVehiclePacket);
-        vehicle.getSession().setLastVehicleMoveTimestamp(System.currentTimeMillis());
     }
 
     protected double getGravity() {
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 9b9e86bb2..dd8fdd59b 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -524,12 +524,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     @Setter
     private boolean placedBucket;
 
-    /**
-     * Used to send a ServerboundMoveVehiclePacket for every PlayerInputPacket after idling on a boat/horse for more than 100ms
-     */
-    @Setter
-    private long lastVehicleMoveTimestamp = System.currentTimeMillis();
-
     /**
      * Counts how many ticks have occurred since an arm animation started.
      * -1 means there is no active arm swing; -2 means an arm swing will start in a tick.
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
index b59df0c16..c666ded64 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
@@ -25,6 +25,8 @@
 
 package org.geysermc.geyser.session.cache;
 
+import lombok.Getter;
+import lombok.Setter;
 import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.session.GeyserSession;
@@ -37,6 +39,10 @@ public final class InputCache {
     private ServerboundPlayerInputPacket inputPacket = new ServerboundPlayerInputPacket(false, false, false, false, false, false, false);
     private boolean lastHorizontalCollision;
     private int ticksSinceLastMovePacket;
+    @Getter @Setter
+    private int jumpingTicks;
+    @Getter @Setter
+    private float jumpScale;
 
     public InputCache(GeyserSession session) {
         this.session = session;
@@ -61,6 +67,10 @@ public final class InputCache {
         }
     }
 
+    public boolean wasJumping() {
+        return this.inputPacket.isJump();
+    }
+
     public void markPositionPacketSent() {
         this.ticksSinceLastMovePacket = 0;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/TeleportCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/TeleportCache.java
index 80139a988..7a7a5f1e2 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/TeleportCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/TeleportCache.java
@@ -48,7 +48,7 @@ public class TeleportCache {
     /**
      * How many move packets the teleport can be unconfirmed for before it gets resent to the client
      */
-    private static final int RESEND_THRESHOLD = 5;
+    private static final int RESEND_THRESHOLD = 20; // Make it one full second with auth input
 
     private final double x, y, z;
     private final float pitch, yaw;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
index f2d69d51c..81b06c87d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
@@ -42,17 +42,15 @@ public class BedrockMoveEntityAbsoluteTranslator extends PacketTranslator<MoveEn
 
     @Override
     public void translate(GeyserSession session, MoveEntityAbsolutePacket packet) {
-        session.setLastVehicleMoveTimestamp(System.currentTimeMillis());
-
         Entity ridingEntity = session.getPlayerEntity().getVehicle();
         if (ridingEntity != null && session.getWorldBorder().isPassingIntoBorderBoundaries(packet.getPosition(), false)) {
             Vector3f position = Vector3f.from(ridingEntity.getPosition().getX(), packet.getPosition().getY(),
                     ridingEntity.getPosition().getZ());
             if (ridingEntity instanceof BoatEntity) {
                 // Undo the changes usually applied to the boat
-                ridingEntity.as(BoatEntity.class)
-                        .moveAbsoluteWithoutAdjustments(position, ridingEntity.getYaw(),
-                        ridingEntity.isOnGround(), true);
+//                ridingEntity.as(BoatEntity.class)
+//                        .moveAbsoluteWithoutAdjustments(position, ridingEntity.getYaw(),
+//                        ridingEntity.isOnGround(), true);
             } else {
                 // This doesn't work if teleported is false
                 ridingEntity.moveAbsolute(position,
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
index 81f65e1bd..46d6b9203 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
@@ -44,47 +44,6 @@ public class BedrockPlayerInputTranslator extends PacketTranslator<PlayerInputPa
 
     @Override
     public void translate(GeyserSession session, PlayerInputPacket packet) {
-//        ServerboundPlayerInputPacket playerInputPacket = new ServerboundPlayerInputPacket(
-//                packet.getInputMotion().getX(), packet.getInputMotion().getY(), packet.isJumping(), packet.isSneaking()
-//        );
-//
-//        session.sendDownstreamGamePacket(playerInputPacket);
 
-        session.getPlayerEntity().setVehicleInput(packet.getInputMotion());
-
-        // Bedrock only sends movement vehicle packets while moving
-        // This allows horses to take damage while standing on magma
-        Entity vehicle = session.getPlayerEntity().getVehicle();
-        boolean sendMovement = false;
-        if (vehicle instanceof AbstractHorseEntity && !(vehicle instanceof LlamaEntity)) {
-            sendMovement = vehicle.isOnGround();
-        } else if (vehicle instanceof BoatEntity) {
-            if (vehicle.getPassengers().size() == 1) {
-                // The player is the only rider
-                sendMovement = true;
-            } else {
-                // Check if the player is the front rider
-                if (session.getPlayerEntity().isRidingInFront()) {
-                    sendMovement = true;
-                }
-            }
-        }
-        if (sendMovement) {
-            long timeSinceVehicleMove = System.currentTimeMillis() - session.getLastVehicleMoveTimestamp();
-            if (timeSinceVehicleMove >= 100) {
-                Vector3f vehiclePosition = vehicle.getPosition();
-
-                if (vehicle instanceof BoatEntity && !vehicle.isOnGround()) {
-                    // Remove some Y position to prevents boats flying up
-                    vehiclePosition = vehiclePosition.down(vehicle.getDefinition().offset());
-                }
-
-                ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(
-                        vehiclePosition.getX(), vehiclePosition.getY(), vehiclePosition.getZ(),
-                        vehicle.getYaw() - 90, vehicle.getPitch()
-                );
-                session.sendDownstreamGamePacket(moveVehiclePacket);
-            }
-        }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
index a22c44089..1940258e4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
@@ -31,7 +31,6 @@ import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
-import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.level.physics.CollisionResult;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
@@ -48,17 +47,17 @@ public final class BedrockMovePlayerTranslator {
         SessionPlayerEntity entity = session.getPlayerEntity();
         if (!session.isSpawned()) return;
 
+        // Ignore movement packets until Bedrock's position matches the teleported position
+        if (session.getUnconfirmedTeleport() != null) {
+            session.confirmTeleport(packet.getPosition().toDouble().sub(0, EntityDefinitions.PLAYER.offset(), 0));
+            return;
+        }
+
         boolean actualPositionChanged = !entity.getPosition().equals(packet.getPosition());
 
         if (actualPositionChanged) {
             // Send book update before the player moves
             session.getBookEditCache().checkForSend();
-
-            // Ignore movement packets until Bedrock's position matches the teleported position
-            if (session.getUnconfirmedTeleport() != null) {
-                session.confirmTeleport(packet.getPosition().toDouble().sub(0, EntityDefinitions.PLAYER.offset(), 0));
-                return;
-            }
         }
 
         if (entity.getBedPosition() != null) {
@@ -72,9 +71,11 @@ public final class BedrockMovePlayerTranslator {
         float pitch = packet.getRotation().getX();
         float headYaw = packet.getRotation().getY();
 
-        // shouldSendPositionReminder also increments a tick counter, so make sure it's always called.
-        boolean positionChanged = session.getInputCache().shouldSendPositionReminder() || actualPositionChanged;
-        boolean rotationChanged = entity.getYaw() != yaw || entity.getPitch() != pitch || entity.getHeadYaw() != headYaw;
+        boolean hasVehicle = entity.getVehicle() != null;
+
+        // shouldSendPositionReminder also increments a tick counter, so make sure it's always called unless the player is on a vehicle.
+        boolean positionChanged = !hasVehicle && session.getInputCache().shouldSendPositionReminder() || actualPositionChanged;
+        boolean rotationChanged = hasVehicle || (entity.getYaw() != yaw || entity.getPitch() != pitch || entity.getHeadYaw() != headYaw);
 
         if (session.getLookBackScheduledFuture() != null) {
             // Resend the rotation if it was changed by Geyser
@@ -99,12 +100,6 @@ public final class BedrockMovePlayerTranslator {
 
             session.sendDownstreamGamePacket(playerRotationPacket);
         } else if (positionChanged) {
-            // World border collision will be handled by client vehicle
-            if (!(entity.getVehicle() instanceof ClientVehicle clientVehicle && clientVehicle.isClientControlled())
-                    && session.getWorldBorder().isPassingIntoBorderBoundaries(packet.getPosition(), true)) {
-                return;
-            }
-
             if (isValidMove(session, entity.getPosition(), packet.getPosition())) {
                 CollisionResult result = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), packet.getInputData().contains(PlayerAuthInputData.HANDLE_TELEPORT));
                 if (result != null) { // A null return value cancels the packet
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index 5465de51c..0889579c2 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
 
+import org.cloudburstmc.math.vector.Vector2f;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
@@ -36,19 +37,25 @@ import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerActionPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
+import org.geysermc.geyser.entity.type.BoatEntity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.ItemFrameEntity;
+import org.geysermc.geyser.entity.type.living.animal.horse.AbstractHorseEntity;
+import org.geysermc.geyser.entity.type.living.animal.horse.LlamaEntity;
 import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
+import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.translator.protocol.bedrock.BedrockInventoryTransactionTranslator;
+import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerAction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundMoveVehiclePacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerAbilitiesPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket;
@@ -57,13 +64,17 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.Serv
 import java.util.Set;
 
 @Translator(packet = PlayerAuthInputPacket.class)
-public class BedrockPlayerAuthInputTranslator extends PacketTranslator<PlayerAuthInputPacket> {
+public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<PlayerAuthInputPacket> {
 
     @Override
     public void translate(GeyserSession session, PlayerAuthInputPacket packet) {
         SessionPlayerEntity entity = session.getPlayerEntity();
+
+        boolean wasJumping = session.getInputCache().wasJumping();
         session.getInputCache().processInputs(packet);
 
+        processVehicleInput(session, packet, wasJumping);
+
         BedrockMovePlayerTranslator.translate(session, packet);
 
         Set<PlayerAuthInputData> inputData = packet.getInputData();
@@ -202,4 +213,94 @@ public class BedrockPlayerAuthInputTranslator extends PacketTranslator<PlayerAut
             session.getGeyser().getLogger().error("Unhandled item use transaction type!");
         }
     }
+
+    private static void processVehicleInput(GeyserSession session, PlayerAuthInputPacket packet, boolean wasJumping) {
+        Entity vehicle = session.getPlayerEntity().getVehicle();
+        if (vehicle == null) {
+            return;
+        }
+        if (vehicle instanceof ClientVehicle) {
+            session.getPlayerEntity().setVehicleInput(packet.getAnalogMoveVector());
+        }
+
+        boolean sendMovement = false;
+        if (vehicle instanceof AbstractHorseEntity && !(vehicle instanceof LlamaEntity)) {
+            sendMovement = vehicle.isOnGround();
+        } else if (vehicle instanceof BoatEntity) {
+            if (vehicle.getPassengers().size() == 1) {
+                // The player is the only rider
+                sendMovement = true;
+            } else {
+                // Check if the player is the front rider
+                if (session.getPlayerEntity().isRidingInFront()) {
+                    sendMovement = true;
+                }
+            }
+        }
+
+        if (vehicle instanceof AbstractHorseEntity) {
+            // Behavior verified as of Java Edition 1.21.3
+            int currentJumpingTicks = session.getInputCache().getJumpingTicks();
+            if (currentJumpingTicks < 0) {
+                session.getInputCache().setJumpingTicks(++currentJumpingTicks);
+                if (currentJumpingTicks == 0) {
+                    session.getPlayerEntity().setVehicleJumpStrength(0);
+                }
+            }
+
+            boolean holdingJump = packet.getInputData().contains(PlayerAuthInputData.JUMPING);
+            if (wasJumping && !holdingJump) {
+                // Jump released
+                // Yes, I'm fairly certain that entity ID is correct.
+                session.sendDownstreamGamePacket(new ServerboundPlayerCommandPacket(session.getPlayerEntity().getEntityId(),
+                    PlayerState.START_HORSE_JUMP, MathUtils.floor(session.getInputCache().getJumpScale() * 100f)));
+                session.getInputCache().setJumpingTicks(-10);
+            } else if (!wasJumping && holdingJump) {
+                session.getInputCache().setJumpingTicks(0);
+                session.getInputCache().setJumpScale(0);
+            } else if (holdingJump) {
+                session.getInputCache().setJumpingTicks(++currentJumpingTicks);
+                if (currentJumpingTicks < 10) {
+                    session.getInputCache().setJumpScale(session.getInputCache().getJumpScale() * 0.1F);
+                } else {
+                    session.getInputCache().setJumpScale(0.8f + 2.0f / (currentJumpingTicks - 9) * 0.1f);
+                }
+            }
+        } else {
+            session.getInputCache().setJumpScale(0);
+        }
+
+        if (sendMovement) {
+            Vector3f vehiclePosition = packet.getPosition();
+            Vector2f vehicleRotation = packet.getVehicleRotation();
+            if (vehicleRotation == null) {
+                return; // If the client just got in or out of a vehicle for example.
+            }
+
+            if (session.getWorldBorder().isPassingIntoBorderBoundaries(vehiclePosition, false)) {
+                Vector3f position = vehicle.getPosition();
+                if (vehicle instanceof BoatEntity boat) {
+                    // Undo the changes usually applied to the boat
+                    boat.moveAbsoluteWithoutAdjustments(position, vehicle.getYaw(), vehicle.isOnGround(), true);
+                } else {
+                    // This doesn't work if teleported is false
+                    vehicle.moveAbsolute(position,
+                        vehicle.getYaw(), vehicle.getPitch(), vehicle.getHeadYaw(),
+                        vehicle.isOnGround(), true);
+                }
+                return;
+            }
+
+            if (vehicle instanceof BoatEntity && !vehicle.isOnGround()) {
+                // Remove some Y position to prevents boats flying up
+                vehiclePosition = vehiclePosition.down(vehicle.getDefinition().offset());
+            }
+
+            ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(
+                vehiclePosition.getX(), vehiclePosition.getY(), vehiclePosition.getZ(),
+                vehicleRotation.getY() - 90, vehiclePosition.getX() // TODO I wonder if this is related to the horse spinning bugs...
+            );
+            session.sendDownstreamGamePacket(moveVehiclePacket);
+        }
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/MathUtils.java b/core/src/main/java/org/geysermc/geyser/util/MathUtils.java
index 08bed56f4..6d3b63c8f 100644
--- a/core/src/main/java/org/geysermc/geyser/util/MathUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/MathUtils.java
@@ -105,6 +105,17 @@ public class MathUtils {
         return floatNumber > truncated ? truncated + 1 : truncated;
     }
 
+    /**
+     * Round the given float to the previous whole number
+     *
+     * @param floatNumber Float to round
+     * @return Rounded number
+     */
+    public static int floor(float floatNumber) {
+        int truncated = (int) floatNumber;
+        return floatNumber < truncated ? truncated - 1 : truncated;
+    }
+
     /**
      * If number is greater than the max, set it to max, and if number is lower than low, set it to low.
      *

From 9d2d12b87bb84528968f01546388b7f56113e803 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 26 Oct 2024 01:41:23 -0400
Subject: [PATCH 022/165] Re-implement steering indicators

---
 .../geyser/entity/type/BoatEntity.java        |   7 +
 .../bedrock/BedrockAnimateTranslator.java     |  70 ++++----
 .../BedrockPlayerAuthInputTranslator.java     | 149 +++++++++---------
 3 files changed, 111 insertions(+), 115 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
index 9312d83f5..86accea17 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
@@ -39,6 +39,7 @@ import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundPaddleBoatPacket;
 
 import java.util.UUID;
 
@@ -182,6 +183,12 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
     @Override
     public void tick() {
         // Java sends simply "true" and "false" (is_paddling_left), Bedrock keeps sending packets as you're rowing
+        if (session.getPlayerEntity().getVehicle() == this) {
+            // For packet timing accuracy, we'll send the packets here, as that's what Java Edition 1.21.3 does.
+            ServerboundPaddleBoatPacket steerPacket = new ServerboundPaddleBoatPacket(session.isSteeringLeft(), session.isSteeringRight());
+            session.sendDownstreamGamePacket(steerPacket);
+            return;
+        }
         doTick = !doTick; // Run every 100 ms
         if (!doTick || passengers.isEmpty()) {
             return;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java
index 79e013246..487c3ef75 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java
@@ -25,13 +25,12 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock;
 
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundPaddleBoatPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundSwingPacket;
 import org.cloudburstmc.protocol.bedrock.packet.AnimatePacket;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundSwingPacket;
 
 import java.util.concurrent.TimeUnit;
 
@@ -45,45 +44,32 @@ public class BedrockAnimateTranslator extends PacketTranslator<AnimatePacket> {
             return;
         }
 
-        switch (packet.getAction()) {
-            case SWING_ARM -> {
-                session.armSwingPending();
-                // Delay so entity damage can be processed first
-                session.scheduleInEventLoop(() -> {
-                            if (session.getArmAnimationTicks() != 0) {
-                                // So, generally, a Java player can only do one *thing* at a time.
-                                // If a player right-clicks, for example, then there's probably only one action associated with
-                                // that right-click that will send a swing.
-                                // The only exception I can think of to this, *maybe*, is a player dropping items
-                                // Bedrock is a little funkier than this - it can send several arm animation packets in the
-                                // same tick, notably with high levels of haste applied.
-                                // Packet limiters do not like this and can crash the player.
-                                // If arm animation ticks is 0, then we just sent an arm swing packet this tick.
-                                // See https://github.com/GeyserMC/Geyser/issues/2875
-                                // This behavior was last touched on with ViaVersion 4.5.1 (with its packet limiter), Java 1.16.5,
-                                // and Bedrock 1.19.51.
-                                // Note for the future: we should probably largely ignore this packet and instead replicate
-                                // all actions on our end, and send swings where needed.
-                                session.sendDownstreamGamePacket(new ServerboundSwingPacket(Hand.MAIN_HAND));
-                                session.activateArmAnimationTicking();
-                            }
-                        },
-                        25,
-                        TimeUnit.MILLISECONDS
-                );
-            }
-            // These two might need to be flipped, but my recommendation is getting moving working first
-            case ROW_LEFT -> {
-                // Packet value is a float of how long one has been rowing, so we convert that into a boolean
-                session.setSteeringLeft(packet.getRowingTime() > 0.0);
-                ServerboundPaddleBoatPacket steerLeftPacket = new ServerboundPaddleBoatPacket(session.isSteeringLeft(), session.isSteeringRight());
-                session.sendDownstreamGamePacket(steerLeftPacket);
-            }
-            case ROW_RIGHT -> {
-                session.setSteeringRight(packet.getRowingTime() > 0.0);
-                ServerboundPaddleBoatPacket steerRightPacket = new ServerboundPaddleBoatPacket(session.isSteeringLeft(), session.isSteeringRight());
-                session.sendDownstreamGamePacket(steerRightPacket);
-            }
+        System.out.println("wewewewewewewewewewewe");
+        if (packet.getAction() == AnimatePacket.Action.SWING_ARM) {
+            session.armSwingPending();
+            // Delay so entity damage can be processed first
+            session.scheduleInEventLoop(() -> {
+                    if (session.getArmAnimationTicks() != 0) {
+                        // So, generally, a Java player can only do one *thing* at a time.
+                        // If a player right-clicks, for example, then there's probably only one action associated with
+                        // that right-click that will send a swing.
+                        // The only exception I can think of to this, *maybe*, is a player dropping items
+                        // Bedrock is a little funkier than this - it can send several arm animation packets in the
+                        // same tick, notably with high levels of haste applied.
+                        // Packet limiters do not like this and can crash the player.
+                        // If arm animation ticks is 0, then we just sent an arm swing packet this tick.
+                        // See https://github.com/GeyserMC/Geyser/issues/2875
+                        // This behavior was last touched on with ViaVersion 4.5.1 (with its packet limiter), Java 1.16.5,
+                        // and Bedrock 1.19.51.
+                        // Note for the future: we should probably largely ignore this packet and instead replicate
+                        // all actions on our end, and send swings where needed.
+                        session.sendDownstreamGamePacket(new ServerboundSwingPacket(Hand.MAIN_HAND));
+                        session.activateArmAnimationTicking();
+                    }
+                },
+                25,
+                TimeUnit.MILLISECONDS
+            );
         }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index 0889579c2..a0c874743 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -78,83 +78,86 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
         BedrockMovePlayerTranslator.translate(session, packet);
 
         Set<PlayerAuthInputData> inputData = packet.getInputData();
-        if (!inputData.isEmpty()) {
-            for (PlayerAuthInputData input : inputData) {
-                switch (input) {
-                    case PERFORM_ITEM_INTERACTION -> processItemUseTransaction(session, packet.getItemUseTransaction());
-                    case PERFORM_BLOCK_ACTIONS -> BedrockBlockActions.translate(session, packet.getPlayerActions());
-                    case START_SNEAKING -> {
-                        ServerboundPlayerCommandPacket startSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SNEAKING);
-                        session.sendDownstreamGamePacket(startSneakPacket);
+        for (PlayerAuthInputData input : inputData) {
+            switch (input) {
+                case PERFORM_ITEM_INTERACTION -> processItemUseTransaction(session, packet.getItemUseTransaction());
+                case PERFORM_BLOCK_ACTIONS -> BedrockBlockActions.translate(session, packet.getPlayerActions());
+                case START_SNEAKING -> {
+                    ServerboundPlayerCommandPacket startSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SNEAKING);
+                    session.sendDownstreamGamePacket(startSneakPacket);
 
-                        session.startSneaking();
-                    }
-                    case STOP_SNEAKING -> {
-                        ServerboundPlayerCommandPacket stopSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SNEAKING);
-                        session.sendDownstreamGamePacket(stopSneakPacket);
-
-                        session.stopSneaking();
-                    }
-                    case START_SPRINTING -> {
-                        if (!entity.getFlag(EntityFlag.SWIMMING)) {
-                            ServerboundPlayerCommandPacket startSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SPRINTING);
-                            session.sendDownstreamGamePacket(startSprintPacket);
-                            session.setSprinting(true);
-                        }
-                    }
-                    case STOP_SPRINTING -> {
-                        if (!entity.getFlag(EntityFlag.SWIMMING)) {
-                            ServerboundPlayerCommandPacket stopSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SPRINTING);
-                            session.sendDownstreamGamePacket(stopSprintPacket);
-                        }
-                        session.setSprinting(false);
-                    }
-                    case START_SWIMMING -> session.setSwimming(true);
-                    case STOP_SWIMMING -> session.setSwimming(false);
-                    case START_FLYING -> { // Since 1.20.30
-                        if (session.isCanFly()) {
-                            if (session.getGameMode() == GameMode.SPECTATOR) {
-                                // should already be flying
-                                session.sendAdventureSettings();
-                                break;
-                            }
-
-                            if (session.getPlayerEntity().getFlag(EntityFlag.SWIMMING) && session.getCollisionManager().isPlayerInWater()) {
-                                // As of 1.18.1, Java Edition cannot fly while in water, but it can fly while crawling
-                                // If this isn't present, swimming on a 1.13.2 server and then attempting to fly will put you into a flying/swimming state that is invalid on JE
-                                session.sendAdventureSettings();
-                                break;
-                            }
-
-                            session.setFlying(true);
-                            session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(true));
-                        } else {
-                            // update whether we can fly
-                            session.sendAdventureSettings();
-                            // stop flying
-                            PlayerActionPacket stopFlyingPacket = new PlayerActionPacket();
-                            stopFlyingPacket.setRuntimeEntityId(session.getPlayerEntity().getGeyserId());
-                            stopFlyingPacket.setAction(PlayerActionType.STOP_FLYING);
-                            stopFlyingPacket.setBlockPosition(Vector3i.ZERO);
-                            stopFlyingPacket.setResultPosition(Vector3i.ZERO);
-                            stopFlyingPacket.setFace(0);
-                            session.sendUpstreamPacket(stopFlyingPacket);
-                        }
-                    }
-                    case STOP_FLYING -> {
-                        session.setFlying(false);
-                        session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(false));
-                    }
-                    case START_GLIDING -> {
-                        // Otherwise gliding will not work in creative
-                        ServerboundPlayerAbilitiesPacket playerAbilitiesPacket = new ServerboundPlayerAbilitiesPacket(false);
-                        session.sendDownstreamGamePacket(playerAbilitiesPacket);
-                        sendPlayerGlideToggle(session, entity);
-                    }
-                    case STOP_GLIDING -> sendPlayerGlideToggle(session, entity);
+                    session.startSneaking();
                 }
+                case STOP_SNEAKING -> {
+                    ServerboundPlayerCommandPacket stopSneakPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SNEAKING);
+                    session.sendDownstreamGamePacket(stopSneakPacket);
+
+                    session.stopSneaking();
+                }
+                case START_SPRINTING -> {
+                    if (!entity.getFlag(EntityFlag.SWIMMING)) {
+                        ServerboundPlayerCommandPacket startSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.START_SPRINTING);
+                        session.sendDownstreamGamePacket(startSprintPacket);
+                        session.setSprinting(true);
+                    }
+                }
+                case STOP_SPRINTING -> {
+                    if (!entity.getFlag(EntityFlag.SWIMMING)) {
+                        ServerboundPlayerCommandPacket stopSprintPacket = new ServerboundPlayerCommandPacket(entity.getEntityId(), PlayerState.STOP_SPRINTING);
+                        session.sendDownstreamGamePacket(stopSprintPacket);
+                    }
+                    session.setSprinting(false);
+                }
+                case START_SWIMMING -> session.setSwimming(true);
+                case STOP_SWIMMING -> session.setSwimming(false);
+                case START_FLYING -> { // Since 1.20.30
+                    if (session.isCanFly()) {
+                        if (session.getGameMode() == GameMode.SPECTATOR) {
+                            // should already be flying
+                            session.sendAdventureSettings();
+                            break;
+                        }
+
+                        if (session.getPlayerEntity().getFlag(EntityFlag.SWIMMING) && session.getCollisionManager().isPlayerInWater()) {
+                            // As of 1.18.1, Java Edition cannot fly while in water, but it can fly while crawling
+                            // If this isn't present, swimming on a 1.13.2 server and then attempting to fly will put you into a flying/swimming state that is invalid on JE
+                            session.sendAdventureSettings();
+                            break;
+                        }
+
+                        session.setFlying(true);
+                        session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(true));
+                    } else {
+                        // update whether we can fly
+                        session.sendAdventureSettings();
+                        // stop flying
+                        PlayerActionPacket stopFlyingPacket = new PlayerActionPacket();
+                        stopFlyingPacket.setRuntimeEntityId(session.getPlayerEntity().getGeyserId());
+                        stopFlyingPacket.setAction(PlayerActionType.STOP_FLYING);
+                        stopFlyingPacket.setBlockPosition(Vector3i.ZERO);
+                        stopFlyingPacket.setResultPosition(Vector3i.ZERO);
+                        stopFlyingPacket.setFace(0);
+                        session.sendUpstreamPacket(stopFlyingPacket);
+                    }
+                }
+                case STOP_FLYING -> {
+                    session.setFlying(false);
+                    session.sendDownstreamGamePacket(new ServerboundPlayerAbilitiesPacket(false));
+                }
+                case START_GLIDING -> {
+                    // Otherwise gliding will not work in creative
+                    ServerboundPlayerAbilitiesPacket playerAbilitiesPacket = new ServerboundPlayerAbilitiesPacket(false);
+                    session.sendDownstreamGamePacket(playerAbilitiesPacket);
+                    sendPlayerGlideToggle(session, entity);
+                }
+                case STOP_GLIDING -> sendPlayerGlideToggle(session, entity);
             }
         }
+        boolean up = inputData.contains(PlayerAuthInputData.UP);
+        // Yes. These are flipped. It's always been an issue with Geyser. That's what it's like working with this codebase.
+        // Hi random stranger. I am six days into updating for 1.21.3. How's it going?
+        session.setSteeringLeft(up || inputData.contains(PlayerAuthInputData.PADDLE_RIGHT));
+        session.setSteeringRight(up || inputData.contains(PlayerAuthInputData.PADDLE_LEFT));
     }
 
     private static void sendPlayerGlideToggle(GeyserSession session, Entity entity) {

From c9eeed905bb87168308d9d618008b330465b1dbd Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 26 Oct 2024 13:24:15 -0400
Subject: [PATCH 023/165] Fix horse movement

---
 .../player/BedrockPlayerAuthInputTranslator.java  | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index a0c874743..9f9d061e1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -153,11 +153,13 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
                 case STOP_GLIDING -> sendPlayerGlideToggle(session, entity);
             }
         }
-        boolean up = inputData.contains(PlayerAuthInputData.UP);
-        // Yes. These are flipped. It's always been an issue with Geyser. That's what it's like working with this codebase.
-        // Hi random stranger. I am six days into updating for 1.21.3. How's it going?
-        session.setSteeringLeft(up || inputData.contains(PlayerAuthInputData.PADDLE_RIGHT));
-        session.setSteeringRight(up || inputData.contains(PlayerAuthInputData.PADDLE_LEFT));
+        if (entity.getVehicle() instanceof BoatEntity) {
+            boolean up = inputData.contains(PlayerAuthInputData.UP);
+            // Yes. These are flipped. It's always been an issue with Geyser. That's what it's like working with this codebase.
+            // Hi random stranger. I am six days into updating for 1.21.3. How's it going?
+            session.setSteeringLeft(up || inputData.contains(PlayerAuthInputData.PADDLE_RIGHT));
+            session.setSteeringRight(up || inputData.contains(PlayerAuthInputData.PADDLE_LEFT));
+        }
     }
 
     private static void sendPlayerGlideToggle(GeyserSession session, Entity entity) {
@@ -228,7 +230,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
 
         boolean sendMovement = false;
         if (vehicle instanceof AbstractHorseEntity && !(vehicle instanceof LlamaEntity)) {
-            sendMovement = vehicle.isOnGround();
+            sendMovement = true;
         } else if (vehicle instanceof BoatEntity) {
             if (vehicle.getPassengers().size() == 1) {
                 // The player is the only rider
@@ -299,6 +301,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
                 vehiclePosition = vehiclePosition.down(vehicle.getDefinition().offset());
             }
 
+            vehicle.setPosition(vehiclePosition);
             ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(
                 vehiclePosition.getX(), vehiclePosition.getY(), vehiclePosition.getZ(),
                 vehicleRotation.getY() - 90, vehiclePosition.getX() // TODO I wonder if this is related to the horse spinning bugs...

From 198eeac4c26d67ea8e2401a17f7477d54b66420e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 26 Oct 2024 23:48:31 -0400
Subject: [PATCH 024/165] Implement shapeless/complex recipes; fix crawling

---
 .../geysermc/geyser/entity/type/Entity.java   |   1 +
 .../geyser/network/UpstreamPacketHandler.java |   7 +
 .../geyser/session/GeyserSession.java         |  18 ++-
 .../bedrock/BedrockAnimateTranslator.java     |   1 -
 .../entity/player/BedrockBlockActions.java    |  40 +----
 .../player/BedrockPlayerActionTranslator.java |  13 ++
 .../BedrockPlayerAuthInputTranslator.java     |  15 +-
 .../java/JavaRecipeBookAddTranslator.java     | 148 ++++++++++--------
 8 files changed, 134 insertions(+), 109 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
index 0d3214709..2ad89dd2f 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
@@ -45,6 +45,7 @@ import org.geysermc.geyser.api.entity.type.GeyserEntity;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.GeyserDirtyMetadata;
 import org.geysermc.geyser.entity.properties.GeyserEntityPropertyManager;
+import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.scoreboard.Team;
 import org.geysermc.geyser.session.GeyserSession;
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index 19e56c8a8..b797eb811 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -41,6 +41,7 @@ import org.cloudburstmc.protocol.bedrock.packet.ModalFormResponsePacket;
 import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.NetworkSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.cloudburstmc.protocol.bedrock.packet.RequestNetworkSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkRequestPacket;
@@ -64,6 +65,7 @@ import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.PendingMicrosoftAuthentication;
+import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.util.LoginEncryptionUtils;
 import org.geysermc.geyser.util.MathUtils;
@@ -94,6 +96,11 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     }
 
     private PacketSignal translateAndDefault(BedrockPacket packet) {
+        if (packet instanceof PlayerAuthInputPacket) {
+            //System.out.println(packet);
+        } else {
+            System.out.println(ChatColor.toANSI(ChatColor.GREEN) + packet + ChatColor.ANSI_RESET);
+        }
         Registries.BEDROCK_PACKET_TRANSLATORS.translate(packet.getClass(), packet, session);
         return PacketSignal.HANDLED; // PacketSignal.UNHANDLED will log a WARN publicly
     }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index dd8fdd59b..1ca127657 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -1371,14 +1371,28 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     }
 
     public void setSwimming(boolean swimming) {
-        if (swimming) {
+        if (!swimming && playerEntity.getFlag(EntityFlag.CRAWLING)) {
+            // Do not update bounding box.
+            playerEntity.setFlag(EntityFlag.SWIMMING, false);
+            playerEntity.updateBedrockMetadata();
+            return;
+        }
+        toggleSwimmingPose(swimming, EntityFlag.SWIMMING);
+    }
+
+    public void setCrawling(boolean crawling) {
+        toggleSwimmingPose(crawling, EntityFlag.CRAWLING);
+    }
+
+    private void toggleSwimmingPose(boolean crawling, EntityFlag flag) {
+        if (crawling) {
             this.pose = Pose.SWIMMING;
             playerEntity.setBoundingBoxHeight(0.6f);
         } else {
             this.pose = Pose.STANDING;
             playerEntity.setBoundingBoxHeight(playerEntity.getDefinition().height());
         }
-        playerEntity.setFlag(EntityFlag.SWIMMING, swimming);
+        playerEntity.setFlag(flag, crawling);
         playerEntity.updateBedrockMetadata();
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java
index 487c3ef75..5f3b9662f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockAnimateTranslator.java
@@ -44,7 +44,6 @@ public class BedrockAnimateTranslator extends PacketTranslator<AnimatePacket> {
             return;
         }
 
-        System.out.println("wewewewewewewewewewewe");
         if (packet.getAction() == AnimatePacket.Action.SWING_ARM) {
             session.armSwingPending();
             // Delay so entity damage can be processed first
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
index 8a56915fb..f1b91a0a5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
@@ -31,14 +31,10 @@ import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.data.PlayerActionType;
 import org.cloudburstmc.protocol.bedrock.data.PlayerBlockActionData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
-import org.cloudburstmc.protocol.bedrock.packet.AnimatePacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
-import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
-import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
 import org.geysermc.geyser.api.block.custom.CustomBlockState;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.ItemFrameEntity;
-import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.level.block.type.Block;
@@ -49,7 +45,6 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.SkullCache;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
 import org.geysermc.geyser.util.BlockUtils;
-import org.geysermc.geyser.util.CooldownUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
@@ -57,24 +52,21 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractActio
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerAction;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundSwingPacket;
 
 import java.util.List;
 
 final class BedrockBlockActions {
 
     static void translate(GeyserSession session, List<PlayerBlockActionData> playerActions) {
-        SessionPlayerEntity entity = session.getPlayerEntity();
-
         // Send book update before any player action
         session.getBookEditCache().checkForSend();
 
         for (PlayerBlockActionData blockActionData : playerActions) {
-            handle(session, entity, blockActionData);
+            handle(session, blockActionData);
         }
     }
 
-    private static void handle(GeyserSession session, SessionPlayerEntity entity, PlayerBlockActionData blockActionData) {
+    private static void handle(GeyserSession session, PlayerBlockActionData blockActionData) {
         PlayerActionType action = blockActionData.getAction();
         Vector3i vector = blockActionData.getBlockPosition();
         int blockFace = blockActionData.getFace();
@@ -198,34 +190,6 @@ final class BedrockBlockActions {
             // Handled in BedrockInventoryTransactionTranslator
             case STOP_BREAK -> {
             }
-            case DIMENSION_CHANGE_SUCCESS -> {
-                //sometimes the client doesn't feel like loading
-                PlayStatusPacket spawnPacket = new PlayStatusPacket();
-                spawnPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
-                session.sendUpstreamPacket(spawnPacket);
-
-                UpdateAttributesPacket attributesPacket = new UpdateAttributesPacket();
-                attributesPacket.setRuntimeEntityId(entity.getGeyserId());
-                attributesPacket.getAttributes().addAll(entity.getAttributes().values());
-                session.sendUpstreamPacket(attributesPacket);
-            }
-            case MISSED_SWING -> {
-                // Java edition sends a cooldown when hitting air.
-                // Normally handled by BedrockLevelSoundEventTranslator, but there is no sound on Java for this.
-                CooldownUtils.sendCooldown(session);
-
-                // TODO Re-evaluate after pre-1.20.10 is no longer supported?
-                if (session.getArmAnimationTicks() == -1) {
-                    session.sendDownstreamGamePacket(new ServerboundSwingPacket(Hand.MAIN_HAND));
-                    session.activateArmAnimationTicking();
-
-                    // Send packet to Bedrock so it knows
-                    AnimatePacket animatePacket = new AnimatePacket();
-                    animatePacket.setRuntimeEntityId(session.getPlayerEntity().getGeyserId());
-                    animatePacket.setAction(AnimatePacket.Action.SWING_ARM);
-                    session.sendUpstreamPacket(animatePacket);
-                }
-            }
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java
index 39f773418..797505e99 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerActionTranslator.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityEventType;
 import org.cloudburstmc.protocol.bedrock.packet.EntityEventPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerActionPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
 import org.geysermc.geyser.entity.type.Entity;
@@ -103,6 +104,18 @@ public class BedrockPlayerActionTranslator extends PacketTranslator<PlayerAction
                     session.sendDownstreamGamePacket(interactPacket);
                 }
             }
+            case DIMENSION_CHANGE_SUCCESS -> {
+                SessionPlayerEntity entity = session.getPlayerEntity();
+                // Sometimes the client doesn't feel like loading
+                PlayStatusPacket spawnPacket = new PlayStatusPacket();
+                spawnPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
+                session.sendUpstreamPacket(spawnPacket);
+
+                UpdateAttributesPacket attributesPacket = new UpdateAttributesPacket();
+                attributesPacket.setRuntimeEntityId(entity.getGeyserId());
+                attributesPacket.getAttributes().addAll(entity.getAttributes().values());
+                session.sendUpstreamPacket(attributesPacket);
+            }
         }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index 9f9d061e1..93e4cb92a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -49,6 +49,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.translator.protocol.bedrock.BedrockInventoryTransactionTranslator;
+import org.geysermc.geyser.util.CooldownUtils;
 import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
@@ -65,18 +66,23 @@ import java.util.Set;
 
 @Translator(packet = PlayerAuthInputPacket.class)
 public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<PlayerAuthInputPacket> {
+    private Set<PlayerAuthInputData> data = Set.of();
 
     @Override
     public void translate(GeyserSession session, PlayerAuthInputPacket packet) {
+        if (!data.equals(packet.getInputData())) {
+            System.out.println(data);
+            this.data = packet.getInputData();
+        }
         SessionPlayerEntity entity = session.getPlayerEntity();
 
         boolean wasJumping = session.getInputCache().wasJumping();
         session.getInputCache().processInputs(packet);
 
-        processVehicleInput(session, packet, wasJumping);
-
         BedrockMovePlayerTranslator.translate(session, packet);
 
+        processVehicleInput(session, packet, wasJumping);
+
         Set<PlayerAuthInputData> inputData = packet.getInputData();
         for (PlayerAuthInputData input : inputData) {
             switch (input) {
@@ -110,6 +116,8 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
                 }
                 case START_SWIMMING -> session.setSwimming(true);
                 case STOP_SWIMMING -> session.setSwimming(false);
+                case START_CRAWLING -> session.setCrawling(true);
+                case STOP_CRAWLING -> session.setCrawling(false);
                 case START_FLYING -> { // Since 1.20.30
                     if (session.isCanFly()) {
                         if (session.getGameMode() == GameMode.SPECTATOR) {
@@ -151,6 +159,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
                     sendPlayerGlideToggle(session, entity);
                 }
                 case STOP_GLIDING -> sendPlayerGlideToggle(session, entity);
+                case MISSED_SWING -> CooldownUtils.sendCooldown(session); // Java edition sends a cooldown when hitting air.
             }
         }
         if (entity.getVehicle() instanceof BoatEntity) {
@@ -249,7 +258,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
             if (currentJumpingTicks < 0) {
                 session.getInputCache().setJumpingTicks(++currentJumpingTicks);
                 if (currentJumpingTicks == 0) {
-                    session.getPlayerEntity().setVehicleJumpStrength(0);
+                    session.getInputCache().setJumpScale(0);
                 }
             }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 9cb238c71..f7fa9883f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -33,6 +33,7 @@ import net.kyori.adventure.key.Key;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
@@ -81,8 +82,6 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         int netId = session.getLastRecipeNetId().get();
         Int2ObjectMap<List<String>> javaToBedrockRecipeIds = session.getJavaToBedrockRecipeIds();
         CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
-        // Check if we should set cleanRecipes here or not.
-
 
         UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
         recipesPacket.setAction(packet.isReplace() ? UnlockedRecipesPacket.ActionType.INITIALLY_UNLOCKED : UnlockedRecipesPacket.ActionType.NEWLY_UNLOCKED);
@@ -94,78 +93,42 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
             switch (display.getType()) {
                 case CRAFTING_SHAPED -> {
                     ShapedCraftingRecipeDisplay shapedRecipe = (ShapedCraftingRecipeDisplay) display;
-                    Pair<Item, ItemData> pair = translateToOutput(session, shapedRecipe.result());
-                    if (pair == null || !pair.right().isValid()) {
-                        // Likely modded item Bedrock will complain about
+                    var bedrockRecipes = combinations(session, display, shapedRecipe.ingredients());
+                    if (bedrockRecipes == null) {
                         continue;
                     }
-
-                    ItemData output = pair.right();
-                    if (!(pair.left() instanceof BedrockRequiresTagItem)) {
-                        // Strip NBT - tools won't appear in the recipe book otherwise
-                        output = output.toBuilder().tag(null).build();
+                    List<String> bedrockRecipeIds = new ArrayList<>();
+                    ItemData output = bedrockRecipes.right();
+                    List<List<ItemDescriptorWithCount>> left = bedrockRecipes.left();
+                    for (int i = 0; i < left.size(); i++) {
+                        List<ItemDescriptorWithCount> inputs = left.get(i);
+                        String recipeId = contents.id() + "_" + i;
+                        craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
+                            shapedRecipe.width(), shapedRecipe.height(), inputs,
+                            Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
+                        recipesPacket.getUnlockedRecipes().add(recipeId);
+                        bedrockRecipeIds.add(recipeId);
                     }
-
-                    boolean empty = true;
-                    boolean complexInputs = false;
-                    List<List<ItemDescriptorWithCount>> inputs = new ArrayList<>(shapedRecipe.ingredients().size());
-                    for (SlotDisplay input : shapedRecipe.ingredients()) {
-                        List<ItemDescriptorWithCount> translated = translateToInput(session, input);
-                        if (translated == null) {
-                            continue;
-                        }
-                        inputs.add(translated);
-                        if (translated.size() != 1 || translated.get(0) != ItemDescriptorWithCount.EMPTY) {
-                            empty = false;
-                        }
-                        complexInputs |= translated.size() > 1;
-                    }
-                    if (empty) {
-                        // Crashes Bedrock 1.19.70 otherwise
-                        // Fixes https://github.com/GeyserMC/Geyser/issues/3549
-                        continue;
-                    }
-
-                    if (complexInputs) {
-                        System.out.println(inputs);
-                        if (true) continue;
-                        List<List<ItemDescriptorWithCount>> processedInputs = Lists.cartesianProduct(inputs);
-                        System.out.println(processedInputs.size());
-                        if (processedInputs.size() <= 500) { // Do not let us process giant lists.
-                            List<String> bedrockRecipeIds = new ArrayList<>();
-                            for (int i = 0; i < processedInputs.size(); i++) {
-                                List<ItemDescriptorWithCount> possibleInput = processedInputs.get(i);
-                                String recipeId = contents.id() + "_" + i;
-                                craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
-                                    shapedRecipe.width(), shapedRecipe.height(), possibleInput,
-                                    Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
-                                recipesPacket.getUnlockedRecipes().add(recipeId);
-                                bedrockRecipeIds.add(recipeId);
-                            }
-                            javaToBedrockRecipeIds.put(contents.id(), bedrockRecipeIds);
-                            continue;
-                        }
-                    }
-                    String recipeId = Integer.toString(contents.id());
-                    craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
-                        shapedRecipe.width(), shapedRecipe.height(), inputs.stream().map(descriptors -> descriptors.get(0)).toList(),
-                        Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
-                    recipesPacket.getUnlockedRecipes().add(recipeId);
-                    javaToBedrockRecipeIds.put(contents.id(), Collections.singletonList(recipeId));
+                    javaToBedrockRecipeIds.put(contents.id(), List.copyOf(bedrockRecipeIds));
                 }
                 case CRAFTING_SHAPELESS -> {
                     ShapelessCraftingRecipeDisplay shapelessRecipe = (ShapelessCraftingRecipeDisplay) display;
-                    Pair<Item, ItemData> pair = translateToOutput(session, shapelessRecipe.result());
-                    if (pair == null || !pair.right().isValid()) {
-                        // Likely modded item Bedrock will complain about
+                    var bedrockRecipes = combinations(session, display, shapelessRecipe.ingredients());
+                    if (bedrockRecipes == null) {
                         continue;
                     }
-
-                    ItemData output = pair.right();
-                    if (!(pair.left() instanceof BedrockRequiresTagItem)) {
-                        // Strip NBT - tools won't appear in the recipe book otherwise
-                        output = output.toBuilder().tag(null).build();
+                    List<String> bedrockRecipeIds = new ArrayList<>();
+                    ItemData output = bedrockRecipes.right();
+                    List<List<ItemDescriptorWithCount>> left = bedrockRecipes.left();
+                    for (int i = 0; i < left.size(); i++) {
+                        List<ItemDescriptorWithCount> inputs = left.get(i);
+                        String recipeId = contents.id() + "_" + i;
+                        craftingDataPacket.getCraftingData().add(ShapelessRecipeData.shapeless(recipeId,
+                            inputs, Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, RecipeUnlockingRequirement.INVALID));
+                        recipesPacket.getUnlockedRecipes().add(recipeId);
+                        bedrockRecipeIds.add(recipeId);
                     }
+                    javaToBedrockRecipeIds.put(contents.id(), List.copyOf(bedrockRecipeIds));
                 }
                 case SMITHING -> {
                     if (true) {
@@ -299,4 +262,59 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         ItemMapping mapping = session.getItemMappings().getMapping(item);
         return new ItemDescriptorWithCount(new DefaultDescriptor(mapping.getBedrockDefinition(), mapping.getBedrockData()), 1); // Need to check count
     }
+
+    private Pair<List<List<ItemDescriptorWithCount>>, ItemData> combinations(GeyserSession session, RecipeDisplay display, List<SlotDisplay> ingredients) {
+        Pair<Item, ItemData> pair = translateToOutput(session, display.result());
+        if (pair == null || !pair.right().isValid()) {
+            // Likely modded item Bedrock will complain about
+            return null;
+        }
+
+        ItemData output = pair.right();
+        if (!(pair.left() instanceof BedrockRequiresTagItem)) {
+            // Strip NBT - tools won't appear in the recipe book otherwise
+            output = output.toBuilder().tag(null).build();
+        }
+
+        boolean empty = true;
+        boolean complexInputs = false;
+        List<List<ItemDescriptorWithCount>> inputs = new ArrayList<>(ingredients.size());
+        for (SlotDisplay input : ingredients) {
+            List<ItemDescriptorWithCount> translated = translateToInput(session, input);
+            if (translated == null) {
+                continue;
+            }
+            inputs.add(translated);
+            if (translated.size() != 1 || translated.get(0) != ItemDescriptorWithCount.EMPTY) {
+                empty = false;
+            }
+            complexInputs |= translated.size() > 1;
+        }
+        if (empty) {
+            // Crashes Bedrock 1.19.70 otherwise
+            // Fixes https://github.com/GeyserMC/Geyser/issues/3549
+            return null;
+        }
+
+        if (complexInputs) {
+            System.out.println(inputs);
+            long size = 1;
+            // See how big a cartesian product will get without creating one (Guava throws an error; not really ideal)
+            for (List<ItemDescriptorWithCount> list : inputs) {
+                size *= list.size();
+                if (size > 500) {
+                    // Too much. No.
+                    complexInputs = false;
+                    break;
+                }
+            }
+            if (complexInputs) {
+                return Pair.of(Lists.cartesianProduct(inputs), output);
+            }
+        }
+        return Pair.of(
+            Collections.singletonList(inputs.stream().map(descriptors -> descriptors.get(0)).toList()),
+            output
+        );
+    }
 }

From d6d19b02b204ef21f74b203cf26badb36f42ec46 Mon Sep 17 00:00:00 2001
From: Tim203 <mctim203@gmail.com>
Date: Sun, 27 Oct 2024 22:53:56 +0100
Subject: [PATCH 025/165] Fix #5089 and don't auto-load Registries (#5093)

* Fix #5089 and made Registries instance based

* Instead of using instance based Registries, manually initialize them

* Address review

* Commit this too pls
---
 .../geyser/entity/EntityDefinition.java       |   8 +-
 .../geyser/entity/EntityDefinitions.java      |   6 +-
 .../geyser/entity/GeyserDirtyMetadata.java    |  10 +-
 .../entity/type/living/ArmorStandEntity.java  |   8 +
 .../entity/type/player/PlayerEntity.java      |  21 +-
 .../geysermc/geyser/registry/Registries.java  |  41 ++-
 .../geysermc/geyser/registry/Registry.java    |  20 +-
 .../loader/PotionMixRegistryLoader.java       |   2 +-
 .../registry/loader/RegistryLoaderHolder.java |  33 ++
 .../org/geysermc/geyser/scoreboard/Team.java  |  11 +
 .../geyser/session/cache/EntityCache.java     |  11 +-
 .../JavaPlayerInfoUpdateTranslator.java       |   4 +-
 .../entity/spawn/JavaAddEntityTranslator.java |  28 +-
 .../JavaSetDisplayObjectiveTranslator.java    |   2 +-
 .../org/geysermc/geyser/util/EntityUtils.java |   2 +-
 .../geyser/util/EnvironmentUtils.java         |   2 +-
 .../network/NameVisibilityScoreboardTest.java |  42 +--
 .../network/ScoreboardIssueTests.java         | 170 +++++++++-
 .../BasicBelownameScoreboardTests.java        |  36 +-
 .../BasicPlayerlistScoreboardTests.java       |  31 +-
 .../server/CubecraftScoreboardTest.java       | 313 +++++++-----------
 .../sidebar/BasicSidebarScoreboardTests.java  |  35 +-
 .../OrderAndLimitSidebarScoreboardTests.java  | 112 +++----
 .../VanillaSidebarScoreboardTests.java        |  52 +--
 .../scoreboard/network/util/AssertUtils.java  |  13 +-
 .../network/util/GeyserMockContext.java       |  19 +-
 .../util/GeyserMockContextScoreboard.java     |  18 +-
 27 files changed, 626 insertions(+), 424 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java
index ea3950bd4..5b4dc0969 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java
@@ -37,7 +37,6 @@ import org.geysermc.geyser.entity.properties.GeyserEntityProperties;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.translator.entity.EntityMetadataTranslator;
-import org.geysermc.geyser.util.EnvironmentUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
@@ -146,13 +145,8 @@ public record EntityDefinition<T extends Entity>(EntityFactory<T> factory, Entit
             return this;
         }
 
-        /**
-         * Build the given entity. If a testing environment has been discovered the entity is not registered,
-         * otherwise it is. This is to prevent all the registries from loading, which will fail (and should
-         * not be loaded) while testing
-         */
         public EntityDefinition<T> build() {
-            return build(!EnvironmentUtils.isUnitTesting);
+            return build(true);
         }
 
         /**
diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 39357eb60..391130146 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -145,7 +145,6 @@ import org.geysermc.geyser.entity.type.living.monster.raid.VindicatorEntity;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.geyser.util.EnvironmentUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.FloatEntityMetadata;
@@ -1122,10 +1121,7 @@ public final class EntityDefinitions {
                 .identifier("minecraft:armor_stand") // Emulated
                 .build(false); // Never sent over the network
 
-        // causes the registries to load
-        if (!EnvironmentUtils.isUnitTesting) {
-            Registries.JAVA_ENTITY_IDENTIFIERS.get().put("minecraft:marker", null); // We don't need an entity definition for this as it is never sent over the network
-        }
+        Registries.JAVA_ENTITY_IDENTIFIERS.get().put("minecraft:marker", null); // We don't need an entity definition for this as it is never sent over the network
     }
 
     public static void init() {
diff --git a/core/src/main/java/org/geysermc/geyser/entity/GeyserDirtyMetadata.java b/core/src/main/java/org/geysermc/geyser/entity/GeyserDirtyMetadata.java
index bc567ab91..1ee84f4b5 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/GeyserDirtyMetadata.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/GeyserDirtyMetadata.java
@@ -32,7 +32,7 @@ import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataType;
 import java.util.Map;
 
 /**
- * A write-only wrapper for temporarily storing entity metadata that will be sent to Bedrock.
+ * A wrapper for temporarily storing entity metadata that will be sent to Bedrock.
  */
 public final class GeyserDirtyMetadata {
     private final Map<EntityDataType<?>, Object> metadata = new Object2ObjectLinkedOpenHashMap<>();
@@ -53,6 +53,14 @@ public final class GeyserDirtyMetadata {
         return !metadata.isEmpty();
     }
 
+    /**
+     * Intended for testing purposes only
+     */
+    public <T> T get(EntityDataType<T> entityData) {
+        //noinspection unchecked
+        return (T) metadata.get(entityData);
+    }
+
     @Override
     public String toString() {
         return metadata.toString();
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/ArmorStandEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/ArmorStandEntity.java
index d057f09c7..e1c82345f 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/ArmorStandEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/ArmorStandEntity.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.entity.type.living;
 
 import lombok.Getter;
 import net.kyori.adventure.text.Component;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataType;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
@@ -36,6 +37,7 @@ import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.LivingEntity;
 import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.scoreboard.Team;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.MathUtils;
@@ -123,6 +125,12 @@ public class ArmorStandEntity extends LivingEntity {
         this.position = position;
     }
 
+    @Override
+    public void updateNametag(@Nullable Team team) {
+        // unlike all other LivingEntities, armor stands are not affected by team nametag visibility
+        super.updateNametag(team, true);
+    }
+
     @Override
     public void setDisplayName(EntityMetadata<Optional<Component>, ?> entityMetadata) {
         super.setDisplayName(entityMetadata);
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
index 4e0de44ea..2abc34d2b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
@@ -43,7 +43,6 @@ import org.cloudburstmc.protocol.bedrock.data.AbilityLayer;
 import org.cloudburstmc.protocol.bedrock.data.GameType;
 import org.cloudburstmc.protocol.bedrock.data.PlayerPermission;
 import org.cloudburstmc.protocol.bedrock.data.command.CommandPermission;
-import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataMap;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityLinkData;
@@ -112,20 +111,6 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
         this.texturesProperty = texturesProperty;
     }
 
-    /**
-     * Do not use! For testing purposes only
-     */
-    public PlayerEntity(GeyserSession session, long geyserId, UUID uuid, String username) {
-        super(session, -1, geyserId, uuid, EntityDefinitions.PLAYER, Vector3f.ZERO, Vector3f.ZERO, 0, 0, 0);
-        this.username = username;
-        this.nametag = username;
-        this.texturesProperty = null;
-
-        // clear initial metadata
-        dirtyMetadata.apply(new EntityDataMap());
-        setFlagsDirty(false);
-    }
-
     @Override
     protected void initializeMetadata() {
         super.initializeMetadata();
@@ -193,11 +178,7 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
         if (session.getEntityCache().getPlayerEntity(uuid) == null)
             return;
 
-        if (session.getEntityCache().getEntityByGeyserId(geyserId) == null) {
-            session.getEntityCache().spawnEntity(this);
-        } else {
-            spawnEntity();
-        }
+        session.getEntityCache().spawnEntity(this);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index 30d3c0763..e9ff837ab 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -62,6 +62,8 @@ import java.util.*;
  * Holds all the common registries in Geyser.
  */
 public final class Registries {
+    private static boolean initialized = false;
+
     /**
      * A registry holding all the providers.
      * This has to be initialized first to allow extensions to access providers during other registry events.
@@ -69,7 +71,7 @@ public final class Registries {
     public static final SimpleMappedRegistry<Class<?>, ProviderSupplier> PROVIDERS = SimpleMappedRegistry.create(new IdentityHashMap<>(), ProviderRegistryLoader::new);
 
     /**
-     * A registry holding a CompoundTag of the known entity identifiers.
+     * A registry holding a NbtMap of the known entity identifiers.
      */
     public static final SimpleRegistry<NbtMap> BEDROCK_ENTITY_IDENTIFIERS = SimpleRegistry.create("bedrock/entity_identifiers.dat", RegistryLoaders.NBT);
 
@@ -79,7 +81,7 @@ public final class Registries {
     public static final PacketTranslatorRegistry<BedrockPacket> BEDROCK_PACKET_TRANSLATORS = PacketTranslatorRegistry.create();
 
     /**
-     * A registry holding a CompoundTag of all the known biomes.
+     * A registry holding a NbtMap of all the known biomes.
      */
     public static final SimpleRegistry<NbtMap> BIOMES_NBT = SimpleRegistry.create("bedrock/biome_definitions.dat", RegistryLoaders.NBT);
 
@@ -118,6 +120,9 @@ public final class Registries {
      */
     public static final ListRegistry<Item> JAVA_ITEMS = ListRegistry.create(RegistryLoaders.empty(ArrayList::new));
 
+    /**
+     * A registry containing item identifiers.
+     */
     public static final SimpleMappedRegistry<String, Item> JAVA_ITEM_IDENTIFIERS = SimpleMappedRegistry.create(RegistryLoaders.empty(Object2ObjectOpenHashMap::new));
 
     /**
@@ -135,7 +140,7 @@ public final class Registries {
     /**
      * A registry holding all the potion mixes.
      */
-    public static final VersionedRegistry<Set<PotionMixData>> POTION_MIXES;
+    public static final VersionedRegistry<Set<PotionMixData>> POTION_MIXES = VersionedRegistry.create(PotionMixRegistryLoader::new);
 
     /**
      * A versioned registry holding all the recipes, with the net ID being the key, and {@link GeyserRecipe} as the value.
@@ -163,15 +168,35 @@ public final class Registries {
     public static final SimpleMappedRegistry<SoundTranslator, SoundInteractionTranslator<?>> SOUND_TRANSLATORS = SimpleMappedRegistry.create("org.geysermc.geyser.translator.sound.SoundTranslator", SoundTranslatorRegistryLoader::new);
 
     public static void init() {
-        // no-op
-    }
+        if (initialized) return;
+        initialized = true;
+
+        PROVIDERS.load();
+        BEDROCK_ENTITY_IDENTIFIERS.load();
+        BEDROCK_PACKET_TRANSLATORS.load();
+        BIOMES_NBT.load();
+        BIOME_IDENTIFIERS.load();
+        BLOCK_ENTITIES.load();
+        ENTITY_DEFINITIONS.load();
+        BEDROCK_ENTITY_PROPERTIES.load();
+        JAVA_ENTITY_IDENTIFIERS.load();
+        JAVA_PACKET_TRANSLATORS.load();
+        JAVA_ITEMS.load();
+        JAVA_ITEM_IDENTIFIERS.load();
+        ITEMS.load();
+        PARTICLES.load();
+        // load potion mixes later
+        RECIPES.load();
+        RESOURCE_PACKS.load();
+        SOUNDS.load();
+        SOUND_LEVEL_EVENTS.load();
+        SOUND_TRANSLATORS.load();
 
-    static {
         PacketRegistryPopulator.populate();
         ItemRegistryPopulator.populate();
 
-        // Create registries that require other registries to load first
-        POTION_MIXES = VersionedRegistry.create(PotionMixRegistryLoader::new);
+        // potion mixes depend on other registries
+        POTION_MIXES.load();
 
         // Remove unneeded client generation data from NbtMapBuilder
         NbtMapBuilder biomesNbt = NbtMap.builder();
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registry.java b/core/src/main/java/org/geysermc/geyser/registry/Registry.java
index 8836502b3..4e83a3c2e 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registry.java
@@ -25,9 +25,9 @@
 
 package org.geysermc.geyser.registry;
 
-import org.geysermc.geyser.registry.loader.RegistryLoader;
-
 import java.util.function.Consumer;
+import org.geysermc.geyser.registry.loader.RegistryLoader;
+import org.geysermc.geyser.registry.loader.RegistryLoaderHolder;
 
 /**
  * A wrapper around a value which is loaded based on the output from the provided
@@ -63,7 +63,9 @@ import java.util.function.Consumer;
  *
  * @param <M> the value being held by the registry
  */
+@SuppressWarnings("rawtypes")
 public abstract class Registry<M> implements IRegistry<M> {
+    protected RegistryLoaderHolder loaderHolder;
     protected M mappings;
 
     /**
@@ -76,7 +78,17 @@ public abstract class Registry<M> implements IRegistry<M> {
      * @param <I> the input type
      */
     protected <I> Registry(I input, RegistryLoader<I, M> registryLoader) {
-        this.mappings = registryLoader.load(input);
+        this.loaderHolder = new RegistryLoaderHolder<>(input, registryLoader);
+    }
+
+    public void load() {
+        // don't load twice
+        if (this.mappings != null) return;
+
+        var holder = this.loaderHolder;
+        this.loaderHolder = null;
+        //noinspection unchecked
+        this.mappings = (M) holder.registryLoader().load(holder.input());
     }
 
     /**
@@ -111,4 +123,4 @@ public abstract class Registry<M> implements IRegistry<M> {
     public void register(Consumer<M> consumer) {
         consumer.accept(this.mappings);
     }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/PotionMixRegistryLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/PotionMixRegistryLoader.java
index eae4e2bea..613df61aa 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/PotionMixRegistryLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/PotionMixRegistryLoader.java
@@ -125,4 +125,4 @@ public class PotionMixRegistryLoader implements RegistryLoader<Object, Int2Objec
 
         return itemMapping;
     }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java b/core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java
new file mode 100644
index 000000000..751cb4ed4
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry.loader;
+
+/**
+ * A holder of the constructor parameters to prevent them from automatically loading,
+ * and instead load them when the load method is called.
+ */
+public record RegistryLoaderHolder<I, M>(I input, RegistryLoader<I, M> registryLoader) {
+}
diff --git a/core/src/main/java/org/geysermc/geyser/scoreboard/Team.java b/core/src/main/java/org/geysermc/geyser/scoreboard/Team.java
index d7c06ac4f..507523539 100644
--- a/core/src/main/java/org/geysermc/geyser/scoreboard/Team.java
+++ b/core/src/main/java/org/geysermc/geyser/scoreboard/Team.java
@@ -90,6 +90,8 @@ public final class Team {
                     // Remove old team from this map, and from the set of players of the old team.
                     // Java 1.19.3 Mojmap: Scoreboard#addPlayerToTeam calls #removePlayerFromTeam
                     oldTeam.entities.remove(player);
+                    // also remove the managed entity if there is one
+                    removeManagedEntity(player);
                 }
                 return this;
             });
@@ -282,6 +284,15 @@ public final class Team {
         }
     }
 
+    /**
+     * Used internally to remove a managed entity without causing an update.
+     * This is fine because its only used when the entity is added to another team,
+     * which will fire the correct nametag updates etc.
+     */
+    private void removeManagedEntity(String name) {
+        managedEntities.removeIf(entity -> name.equals(entity.teamIdentifier()));
+    }
+
     private void refreshAllEntities() {
         for (Entity entity : session().getEntityCache().getEntities().values()) {
             entity.updateNametag(scoreboard.getTeamFor(entity.teamIdentifier()));
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java
index a80ed3e3a..78d21e63b 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/EntityCache.java
@@ -69,12 +69,13 @@ public class EntityCache {
 
     public void spawnEntity(Entity entity) {
         if (cacheEntity(entity)) {
-            entity.spawnEntity();
-
-            // start tracking newly spawned entities.
-            // This is however not called for players, that's done in addPlayerEntity
+            // start tracking newly spawned entities. Doing this before the actual entity spawn can result in combining
+            // the otherwise sent metadata packet (in the case of team visibility, which sets the NAME metadata to
+            // empty) with the entity spawn packet (which also includes metadata). Resulting in 1 less packet sent.
             session.getWorldCache().getScoreboard().entityRegistered(entity);
 
+            entity.spawnEntity();
+
             if (entity instanceof Tickable) {
                 // Start ticking it
                 tickableEntities.add((Tickable) entity);
@@ -144,8 +145,6 @@ public class EntityCache {
         // notify scoreboard for new entity
         var scoreboard = session.getWorldCache().getScoreboard();
         scoreboard.playerRegistered(entity);
-        // spawnPlayer's entityRegistered is not called for players
-        scoreboard.entityRegistered(entity);
     }
 
     public PlayerEntity getPlayerEntity(UUID uuid) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerInfoUpdateTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerInfoUpdateTranslator.java
index 19f34db74..d950d9d0e 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerInfoUpdateTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerInfoUpdateTranslator.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity.player;
 
-import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerListPacket;
@@ -35,6 +34,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.skin.SkinManager;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.protocol.data.game.PlayerListEntry;
 import org.geysermc.mcprotocollib.protocol.data.game.PlayerListEntryAction;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundPlayerInfoUpdatePacket;
@@ -95,8 +95,6 @@ public class JavaPlayerInfoUpdateTranslator extends PacketTranslator<Clientbound
                 if (self) {
                     SkinManager.requestAndHandleSkinAndCape(playerEntity, session, skinAndCape ->
                             GeyserImpl.getInstance().getLogger().debug("Loaded Local Bedrock Java Skin Data for " + session.getClientData().getUsername()));
-                } else {
-                    playerEntity.setValid(true);
                 }
             }
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/spawn/JavaAddEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/spawn/JavaAddEntityTranslator.java
index 572d233d0..ed1951243 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/spawn/JavaAddEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/spawn/JavaAddEntityTranslator.java
@@ -25,17 +25,14 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity.spawn;
 
-import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.object.FallingBlockData;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.object.ProjectileData;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.object.WardenData;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddEntityPacket;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.entity.EntityDefinition;
-import org.geysermc.geyser.entity.type.*;
+import org.geysermc.geyser.entity.type.Entity;
+import org.geysermc.geyser.entity.type.FallingBlockEntity;
+import org.geysermc.geyser.entity.type.FishingHookEntity;
+import org.geysermc.geyser.entity.type.ItemFrameEntity;
+import org.geysermc.geyser.entity.type.PaintingEntity;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
@@ -43,6 +40,14 @@ import org.geysermc.geyser.skin.SkinManager;
 import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.geyser.util.EnvironmentUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.object.FallingBlockData;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.object.ProjectileData;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.object.WardenData;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddEntityPacket;
 
 @Translator(packet = ClientboundAddEntityPacket.class)
 public class JavaAddEntityTranslator extends PacketTranslator<ClientboundAddEntityPacket> {
@@ -83,10 +88,13 @@ public class JavaAddEntityTranslator extends PacketTranslator<ClientboundAddEnti
                 entity.setHeadYaw(headYaw);
                 entity.setMotion(motion);
             }
-            session.getEntityCache().cacheEntity(entity);
 
             entity.sendPlayer();
-            SkinManager.requestAndHandleSkinAndCape(entity, session, null);
+            // only load skin if we're not in a test environment.
+            // Otherwise, it tries to load various resources
+            if (!EnvironmentUtils.IS_UNIT_TESTING) {
+                SkinManager.requestAndHandleSkinAndCape(entity, session, null);
+            }
             return;
         }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetDisplayObjectiveTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetDisplayObjectiveTranslator.java
index 4ce971cdf..241c54cba 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetDisplayObjectiveTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetDisplayObjectiveTranslator.java
@@ -25,13 +25,13 @@
 
 package org.geysermc.geyser.translator.protocol.java.scoreboard;
 
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.scoreboard.ClientboundSetDisplayObjectivePacket;
 import org.geysermc.geyser.scoreboard.Scoreboard;
 import org.geysermc.geyser.scoreboard.ScoreboardUpdater;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.WorldCache;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.scoreboard.ClientboundSetDisplayObjectivePacket;
 
 @Translator(packet = ClientboundSetDisplayObjectivePacket.class)
 public class JavaSetDisplayObjectiveTranslator extends PacketTranslator<ClientboundSetDisplayObjectivePacket> {
diff --git a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
index 8e5a57fae..f8b20fbc4 100644
--- a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
@@ -297,7 +297,7 @@ public final class EntityUtils {
     private static String translatedEntityName(@NonNull String namespace, @NonNull String name, @NonNull GeyserSession session) {
         // MinecraftLocale would otherwise invoke getBootstrap (which doesn't exist) and create some folders,
         // so use the default fallback value as used in Minecraft Java
-        if (EnvironmentUtils.isUnitTesting) {
+        if (EnvironmentUtils.IS_UNIT_TESTING) {
             return "entity." + namespace + "." + name;
         }
         return MinecraftLocale.getLocaleString("entity." + namespace + "." + name, session.locale());
diff --git a/core/src/main/java/org/geysermc/geyser/util/EnvironmentUtils.java b/core/src/main/java/org/geysermc/geyser/util/EnvironmentUtils.java
index 909398bf4..35a1a1e8f 100644
--- a/core/src/main/java/org/geysermc/geyser/util/EnvironmentUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/EnvironmentUtils.java
@@ -26,7 +26,7 @@
 package org.geysermc.geyser.util;
 
 public final class EnvironmentUtils {
-    public static final boolean isUnitTesting = isUnitTesting();
+    public static final boolean IS_UNIT_TESTING = isUnitTesting();
 
     private EnvironmentUtils() {}
 
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/NameVisibilityScoreboardTest.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/NameVisibilityScoreboardTest.java
index 523e4dca2..29882ca2e 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/NameVisibilityScoreboardTest.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/NameVisibilityScoreboardTest.java
@@ -27,7 +27,7 @@ package org.geysermc.geyser.scoreboard.network;
 
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacket;
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNoNextPacket;
-import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockAndAddPlayerEntity;
+import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.spawnPlayerSilently;
 import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockContextScoreboard;
 
 import net.kyori.adventure.text.Component;
@@ -47,7 +47,7 @@ public class NameVisibilityScoreboardTest {
         mockContextScoreboard(context -> {
             var setPlayerTeamTranslator = new JavaSetPlayerTeamTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setPlayerTeamTranslator,
@@ -64,12 +64,12 @@ public class NameVisibilityScoreboardTest {
                     new String[]{"player1"}
                 )
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "");
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -78,7 +78,7 @@ public class NameVisibilityScoreboardTest {
         mockContextScoreboard(context -> {
             var setPlayerTeamTranslator = new JavaSetPlayerTeamTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setPlayerTeamTranslator,
@@ -96,12 +96,12 @@ public class NameVisibilityScoreboardTest {
                 )
             );
             // only hidden if session player (Tim203) is in a team as well
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "§4prefix§r§4player1§r§4suffix");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             // create another team and add Tim203 to it
@@ -121,12 +121,12 @@ public class NameVisibilityScoreboardTest {
                 )
             );
             // Tim203 is now in another team, so it should be hidden
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             // add Tim203 to same team as player1, score should be visible again
@@ -134,12 +134,12 @@ public class NameVisibilityScoreboardTest {
                 setPlayerTeamTranslator,
                 new ClientboundSetPlayerTeamPacket("team1", TeamAction.ADD_PLAYER, new String[]{"Tim203"})
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "§4prefix§r§4player1§r§4suffix");
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -148,7 +148,7 @@ public class NameVisibilityScoreboardTest {
         mockContextScoreboard(context -> {
             var setPlayerTeamTranslator = new JavaSetPlayerTeamTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setPlayerTeamTranslator,
@@ -166,12 +166,12 @@ public class NameVisibilityScoreboardTest {
                 )
             );
             // Tim203 is not in a team (let alone the same team), so should be visible
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "§4prefix§r§4player1§r§4suffix");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             // Tim203 is now in the same team as player1, so should be hidden
@@ -179,12 +179,12 @@ public class NameVisibilityScoreboardTest {
                 setPlayerTeamTranslator,
                 new ClientboundSetPlayerTeamPacket("team1", TeamAction.ADD_PLAYER, new String[]{"Tim203"})
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             // create another team and add Tim203 to there, score should be visible again
@@ -203,12 +203,12 @@ public class NameVisibilityScoreboardTest {
                     new String[]{"Tim203"}
                 )
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "§4prefix§r§4player1§r§4suffix");
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -217,7 +217,7 @@ public class NameVisibilityScoreboardTest {
         mockContextScoreboard(context -> {
             var setPlayerTeamTranslator = new JavaSetPlayerTeamTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setPlayerTeamTranslator,
@@ -234,12 +234,12 @@ public class NameVisibilityScoreboardTest {
                     new String[]{"player1"}
                 )
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.NAME, "§4prefix§r§4player1§r§4suffix");
                 return packet;
-            }, context);
+            });
 
             // adding self to another team shouldn't make a difference
             context.translate(
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
index 1ec245007..17ad7f3d3 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
@@ -25,23 +25,58 @@
 
 package org.geysermc.geyser.scoreboard.network;
 
+import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacket;
+import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacketMatch;
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacketType;
+import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNoNextPacket;
 import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockContextScoreboard;
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
+import net.kyori.adventure.text.Component;
+import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.packet.AddEntityPacket;
+import org.cloudburstmc.protocol.bedrock.packet.AddPlayerPacket;
+import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerListPacket;
 import org.cloudburstmc.protocol.bedrock.packet.RemoveEntityPacket;
+import org.cloudburstmc.protocol.bedrock.packet.SetEntityDataPacket;
 import org.geysermc.geyser.entity.type.living.monster.EnderDragonPartEntity;
 import org.geysermc.geyser.session.cache.EntityCache;
 import org.geysermc.geyser.translator.protocol.java.entity.JavaRemoveEntitiesTranslator;
+import org.geysermc.geyser.translator.protocol.java.entity.JavaSetEntityDataTranslator;
+import org.geysermc.geyser.translator.protocol.java.entity.player.JavaPlayerInfoUpdateTranslator;
+import org.geysermc.geyser.translator.protocol.java.entity.spawn.JavaAddEntityTranslator;
 import org.geysermc.geyser.translator.protocol.java.entity.spawn.JavaAddExperienceOrbTranslator;
+import org.geysermc.geyser.translator.protocol.java.scoreboard.JavaSetPlayerTeamTranslator;
+import org.geysermc.mcprotocollib.auth.GameProfile;
+import org.geysermc.mcprotocollib.protocol.data.game.PlayerListEntry;
+import org.geysermc.mcprotocollib.protocol.data.game.PlayerListEntryAction;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
+import org.geysermc.mcprotocollib.protocol.data.game.scoreboard.CollisionRule;
+import org.geysermc.mcprotocollib.protocol.data.game.scoreboard.NameTagVisibility;
+import org.geysermc.mcprotocollib.protocol.data.game.scoreboard.TeamAction;
+import org.geysermc.mcprotocollib.protocol.data.game.scoreboard.TeamColor;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundPlayerInfoUpdatePacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundRemoveEntitiesPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundSetEntityDataPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddEntityPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.spawn.ClientboundAddExperienceOrbPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.scoreboard.ClientboundSetPlayerTeamPacket;
 import org.junit.jupiter.api.Test;
 
+import java.util.EnumSet;
+import java.util.Optional;
+import java.util.UUID;
+
 /**
- * Tests that don't fit in a larger system (e.g. sidebar objective) that were reported on GitHub
+ * Tests for issues reported on GitHub.
  */
 public class ScoreboardIssueTests {
     /**
@@ -90,4 +125,137 @@ public class ScoreboardIssueTests {
             });
         });
     }
+
+    /**
+     * Test for <a href="https://github.com/GeyserMC/Geyser/issues/5089">#5089</a>.
+     * It follows the reproduction steps with all the packets it sends along its way.
+     * Tested with the 2.0.0-SNAPSHOT version.
+     * Note that this exact issue is actually 2 issues:
+     * <ul>
+     * <li>
+     *     An issue caused by remainders of code that was part of the initial PR that added support for players.
+     *     The code is now more streamlined.
+     * </li>
+     * <li>Armor stands are excluded from team visibility checks (the only living entity)</li>
+     * </ul>
+     */
+    @Test
+    void nameNotUpdating() {
+        mockContextScoreboard(context -> {
+            var playerInfoUpdateTranslator = new JavaPlayerInfoUpdateTranslator();
+            var setPlayerTeamTranslator = new JavaSetPlayerTeamTranslator();
+            var addEntityTranslator = new JavaAddEntityTranslator();
+            var setEntityDataTranslator = new JavaSetEntityDataTranslator();
+
+
+            // first command, create NPC
+
+
+            var npcUuid = UUID.fromString("b0eb01d7-52c9-4730-9fd3-2c03fcb00d6e");
+            context.translate(
+                playerInfoUpdateTranslator,
+                new ClientboundPlayerInfoUpdatePacket(
+                    EnumSet.of(PlayerListEntryAction.ADD_PLAYER, PlayerListEntryAction.UPDATE_LISTED),
+                    new PlayerListEntry[] {
+                        new PlayerListEntry(npcUuid, new GameProfile(npcUuid, "1297"), false, 0, GameMode.SURVIVAL, null, null, 0, null, null)
+                    }));
+
+            //todo we don't have to remove an entry that was never in the playerlist in the first place
+            assertNextPacket(context, () -> {
+                var packet = new PlayerListPacket();
+                packet.getEntries().add(new PlayerListPacket.Entry(npcUuid));
+                packet.setAction(PlayerListPacket.Action.REMOVE);
+                return packet;
+            });
+            assertNoNextPacket(context);
+
+            context.translate(
+                setPlayerTeamTranslator,
+                new ClientboundSetPlayerTeamPacket(
+                    "npc_team_1297",
+                    Component.empty(),
+                    Component.empty(),
+                    Component.empty(),
+                    false,
+                    false,
+                    NameTagVisibility.NEVER,
+                    CollisionRule.NEVER,
+                    TeamColor.WHITE,
+                    new String[0]
+                )
+            );
+            context.translate(
+                setPlayerTeamTranslator,
+                new ClientboundSetPlayerTeamPacket("npc_team_1297", TeamAction.ADD_PLAYER, new String[]{ "1297" }));
+
+            context.translate(addEntityTranslator, new ClientboundAddEntityPacket(1297, npcUuid, EntityType.PLAYER, 1, 2, 3, 4, 5, 6));
+            // then it updates the displayed skin parts, which isn't relevant for us
+
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(3, packet.getRuntimeEntityId());
+                assertEquals(npcUuid, packet.getUuid());
+                assertEquals("1297", packet.getUsername());
+                assertEquals((byte) 1, packet.getMetadata().get(EntityDataTypes.NAMETAG_ALWAYS_SHOW));
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
+            assertNoNextPacket(context);
+
+
+            // second command, create hologram
+
+
+            var hologramUuid = UUID.fromString("b1586291-5f68-44dc-847d-6c123c5b8cbf");
+            context.translate(
+                addEntityTranslator,
+                new ClientboundAddEntityPacket(1298, hologramUuid, EntityType.ARMOR_STAND, 6, 5, 4, 3, 2, 1));
+
+            assertNextPacketMatch(context, AddEntityPacket.class, packet -> {
+                assertEquals(4, packet.getRuntimeEntityId());
+                assertEquals("minecraft:armor_stand", packet.getIdentifier());
+            });
+
+            // metadata set: invisible, custom name, custom name visible
+            context.translate(setEntityDataTranslator, new ClientboundSetEntityDataPacket(1298, new EntityMetadata[]{
+                new ByteEntityMetadata(0, MetadataType.BYTE, (byte) 0x20),
+                new ObjectEntityMetadata<>(2, MetadataType.OPTIONAL_CHAT, Optional.of(Component.text("tesss"))),
+                new BooleanEntityMetadata(3, MetadataType.BOOLEAN, true)
+            }));
+
+            assertNextPacketMatch(context, SetEntityDataPacket.class, packet -> {
+                assertEquals(4, packet.getRuntimeEntityId());
+                var metadata = packet.getMetadata();
+                assertEquals(0.0f, metadata.get(EntityDataTypes.SCALE));
+                assertEquals("tesss", metadata.get(EntityDataTypes.NAME));
+                assertEquals((byte) 1, metadata.get(EntityDataTypes.NAMETAG_ALWAYS_SHOW));
+            });
+            // because the armor stand turned invisible and has a nametag (nametag is hidden when invisible)
+            assertNextPacketType(context, MoveEntityAbsolutePacket.class);
+
+            context.translate(
+                setPlayerTeamTranslator,
+                new ClientboundSetPlayerTeamPacket(
+                    "npc_team_1298",
+                    Component.empty(),
+                    Component.empty(),
+                    Component.empty(),
+                    false,
+                    false,
+                    NameTagVisibility.NEVER,
+                    CollisionRule.NEVER,
+                    TeamColor.WHITE,
+                    new String[0]
+                )
+            );
+            context.translate(
+                setPlayerTeamTranslator,
+                new ClientboundSetPlayerTeamPacket("npc_team_1298", TeamAction.ADD_PLAYER, new String[]{ hologramUuid.toString() }));
+
+            assertNextPacket(context, () -> {
+                var packet = new SetEntityDataPacket();
+                packet.getMetadata().put(EntityDataTypes.NAME, "§f§r§ftesss§r§f");
+                packet.setRuntimeEntityId(4);
+                return packet;
+            });
+        });
+    }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/belowname/BasicBelownameScoreboardTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/belowname/BasicBelownameScoreboardTests.java
index 5d8d8309f..dfe85a0ee 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/belowname/BasicBelownameScoreboardTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/belowname/BasicBelownameScoreboardTests.java
@@ -27,7 +27,7 @@ package org.geysermc.geyser.scoreboard.network.belowname;
 
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacket;
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNoNextPacket;
-import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockAndAddPlayerEntity;
+import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.spawnPlayerSilently;
 import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockContextScoreboard;
 
 import net.kyori.adventure.text.Component;
@@ -80,7 +80,7 @@ public class BasicBelownameScoreboardTests {
             var setObjectiveTranslator = new JavaSetObjectiveTranslator();
             var setDisplayObjectiveTranslator = new JavaSetDisplayObjectiveTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setObjectiveTranslator,
@@ -98,12 +98,12 @@ public class BasicBelownameScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.BELOW_NAME, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "0 §r§9objective");
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -113,7 +113,7 @@ public class BasicBelownameScoreboardTests {
             var setObjectiveTranslator = new JavaSetObjectiveTranslator();
             var setDisplayObjectiveTranslator = new JavaSetDisplayObjectiveTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setObjectiveTranslator,
@@ -131,24 +131,24 @@ public class BasicBelownameScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.BELOW_NAME, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "0 §robjective");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.BELOW_NAME, "")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "");
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -158,7 +158,7 @@ public class BasicBelownameScoreboardTests {
             var setObjectiveTranslator = new JavaSetObjectiveTranslator();
             var setDisplayObjectiveTranslator = new JavaSetDisplayObjectiveTranslator();
 
-            mockAndAddPlayerEntity(context, "player1", 2);
+            spawnPlayerSilently(context, "player1", 2);
 
             context.translate(
                 setObjectiveTranslator,
@@ -186,42 +186,42 @@ public class BasicBelownameScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.BELOW_NAME, "objective2")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "0 §robjective2");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.BELOW_NAME, "objective1")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "");
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "0 §robjective1");
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.BELOW_NAME, "")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetEntityDataPacket();
                 packet.setRuntimeEntityId(2);
                 packet.getMetadata().put(EntityDataTypes.SCORE, "");
                 return packet;
-            }, context);
+            });
         });
     }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/playerlist/BasicPlayerlistScoreboardTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/playerlist/BasicPlayerlistScoreboardTests.java
index a3d4ad671..4ac5ee098 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/playerlist/BasicPlayerlistScoreboardTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/playerlist/BasicPlayerlistScoreboardTests.java
@@ -32,7 +32,6 @@ import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScore
 import java.util.List;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
-import net.kyori.adventure.text.format.Style;
 import net.kyori.adventure.text.format.TextDecoration;
 import org.cloudburstmc.protocol.bedrock.data.ScoreInfo;
 import org.cloudburstmc.protocol.bedrock.packet.RemoveObjectivePacket;
@@ -75,7 +74,7 @@ public class BasicPlayerlistScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.PLAYER_LIST, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -83,7 +82,7 @@ public class BasicPlayerlistScoreboardTests {
                 packet.setDisplaySlot("list");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -98,7 +97,7 @@ public class BasicPlayerlistScoreboardTests {
                 new ClientboundSetObjectivePacket(
                     "objective",
                     ObjectiveAction.ADD,
-                    Component.text("objective", Style.style(NamedTextColor.AQUA, TextDecoration.BOLD)),
+                    Component.text("objective", NamedTextColor.AQUA, TextDecoration.BOLD),
                     ScoreType.INTEGER,
                     null
                 )
@@ -109,7 +108,7 @@ public class BasicPlayerlistScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.PLAYER_LIST, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("§b§lobjective");
@@ -117,7 +116,7 @@ public class BasicPlayerlistScoreboardTests {
                 packet.setDisplaySlot("list");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -156,7 +155,7 @@ public class BasicPlayerlistScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.PLAYER_LIST, "objective2")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective2");
@@ -164,26 +163,26 @@ public class BasicPlayerlistScoreboardTests {
                 packet.setDisplaySlot("list");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 // session player name is Tim203
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 2, ScoreInfo.ScorerType.PLAYER, 1)));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.PLAYER_LIST, "objective1")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new RemoveObjectivePacket();
                 packet.setObjectiveId("0");
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("2");
                 packet.setDisplayName("objective1");
@@ -191,14 +190,14 @@ public class BasicPlayerlistScoreboardTests {
                 packet.setDisplaySlot("list");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 // session player name is Tim203
                 packet.setInfos(List.of(new ScoreInfo(3, "2", 1, ScoreInfo.ScorerType.PLAYER, 1)));
                 return packet;
-            }, context);
+            });
         });
     }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/server/CubecraftScoreboardTest.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/server/CubecraftScoreboardTest.java
index dd693022c..80f562fc3 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/server/CubecraftScoreboardTest.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/server/CubecraftScoreboardTest.java
@@ -26,21 +26,22 @@
 package org.geysermc.geyser.scoreboard.network.server;
 
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacket;
+import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacketMatch;
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNoNextPacket;
-import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockAndAddPlayerEntity;
+import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.spawnPlayer;
 import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockContextScoreboard;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.List;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
-import net.kyori.adventure.text.format.Style;
 import net.kyori.adventure.text.format.TextColor;
 import net.kyori.adventure.text.format.TextDecoration;
 import org.cloudburstmc.protocol.bedrock.data.ScoreInfo;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
+import org.cloudburstmc.protocol.bedrock.packet.AddPlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.RemoveObjectivePacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetDisplayObjectivePacket;
-import org.cloudburstmc.protocol.bedrock.packet.SetEntityDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetScorePacket;
 import org.geysermc.geyser.translator.protocol.java.scoreboard.JavaSetDisplayObjectiveTranslator;
 import org.geysermc.geyser.translator.protocol.java.scoreboard.JavaSetObjectiveTranslator;
@@ -88,7 +89,7 @@ public class CubecraftScoreboardTest {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "sidebar")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("sidebar");
@@ -96,7 +97,7 @@ public class CubecraftScoreboardTest {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
+            });
 
 
             // Now they're going to create a bunch of teams and add players to those teams in a very inefficient way.
@@ -191,27 +192,23 @@ public class CubecraftScoreboardTest {
                     ObjectiveAction.UPDATE,
                     Component.empty()
                         .append(Component.text(
-                            "CubeCraft", Style.style(NamedTextColor.WHITE, TextDecoration.BOLD))),
+                            "CubeCraft", NamedTextColor.WHITE, TextDecoration.BOLD)),
                     ScoreType.INTEGER,
                     null));
-            assertNextPacket(
-                () -> {
-                    var packet = new RemoveObjectivePacket();
-                    packet.setObjectiveId("0");
-                    return packet;
-                },
-                context);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetDisplayObjectivePacket();
-                    packet.setObjectiveId("0");
-                    packet.setDisplayName("§f§lCubeCraft");
-                    packet.setCriteria("dummy");
-                    packet.setDisplaySlot("sidebar");
-                    packet.setSortOrder(1);
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new RemoveObjectivePacket();
+                packet.setObjectiveId("0");
+                return packet;
+            });
+            assertNextPacket(context, () -> {
+                var packet = new SetDisplayObjectivePacket();
+                packet.setObjectiveId("0");
+                packet.setDisplayName("§f§lCubeCraft");
+                packet.setCriteria("dummy");
+                packet.setDisplaySlot("sidebar");
+                packet.setSortOrder(1);
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -234,7 +231,7 @@ public class CubecraftScoreboardTest {
                 new ClientboundSetPlayerTeamPacket(
                     "SB_l-0",
                     Component.text("SB_l-0"),
-                    Component.empty().append(Component.text("", Style.style(NamedTextColor.BLACK))),
+                    Component.empty().append(Component.text("", NamedTextColor.BLACK)),
                     Component.empty(),
                     true,
                     true,
@@ -244,14 +241,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§0", "sidebar", 10));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(1, "0", 10, "§r§0§0§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(1, "0", 10, "§r§0§0§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -287,14 +282,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§1", "sidebar", 9));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(2, "0", 9, "§bUser: §r§fTim203§r§0§1§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(2, "0", 9, "§bUser: §r§fTim203§r§0§1§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -330,14 +323,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§2", "sidebar", 8));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(3, "0", 8, "§bRank: §r§f\uE1AB §r§0§2§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(3, "0", 8, "§bRank: §r§f\uE1AB §r§0§2§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -370,14 +361,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§3", "sidebar", 7));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(4, "0", 7, "§r§0§3§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(4, "0", 7, "§r§0§3§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -410,14 +399,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§4", "sidebar", 6));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(5, "0", 6, "§r§0§4§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(5, "0", 6, "§r§0§4§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -450,14 +437,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§5", "sidebar", 5));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(6, "0", 5, "§r§0§5§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(6, "0", 5, "§r§0§5§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -493,14 +478,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§6", "sidebar", 4));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(7, "0", 4, "§bLobby: §r§fEU #10§r§0§6§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(7, "0", 4, "§bLobby: §r§fEU #10§r§0§6§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -536,14 +519,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§7", "sidebar", 3));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(8, "0", 3, "§bPlayers: §r§f783§r§0§7§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(8, "0", 3, "§bPlayers: §r§f783§r§0§7§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -576,14 +557,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§8", "sidebar", 2));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(9, "0", 2, "§r§0§8§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(9, "0", 2, "§r§0§8§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -616,14 +595,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§9", "sidebar", 1));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(10, "0", 1, "§824/09/24 (g2208)§r§0§9§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(10, "0", 1, "§824/09/24 (g2208)§r§0§9§r")));
+                return packet;
+            });
 
             context.translate(
                 setTeamTranslator,
@@ -656,14 +633,12 @@ public class CubecraftScoreboardTest {
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("§0§a", "sidebar", 0));
-            assertNextPacket(
-                () -> {
-                    var packet = new SetScorePacket();
-                    packet.setAction(SetScorePacket.Action.SET);
-                    packet.setInfos(List.of(new ScoreInfo(11, "0", 0, "§6play.cubecraft.net§r§0§a§r")));
-                    return packet;
-                },
-                context);
+            assertNextPacket(context, () -> {
+                var packet = new SetScorePacket();
+                packet.setAction(SetScorePacket.Action.SET);
+                packet.setInfos(List.of(new ScoreInfo(11, "0", 0, "§6play.cubecraft.net§r§0§a§r")));
+                return packet;
+            });
 
             // after this we get a ClientboundPlayerInfoUpdatePacket with the action UPDATE_DISPLAY_NAME,
             // but that one is only shown in the tablist so we don't have to handle that.
@@ -672,85 +647,53 @@ public class CubecraftScoreboardTest {
             // CubeCraft seems to use two armor stands per player: 1 for the rank badge and 1 for the player name.
             // So the only thing we have to verify is that the nametag is hidden
 
-            mockAndAddPlayerEntity(context, "A_Player", 2);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(2);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "A_Player", 2);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(2, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "B_Player", 3);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(3);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "B_Player", 3);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(3, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "E_Player", 4);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(4);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "E_Player", 4);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(4, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "H_Player", 5);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(5);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "H_Player", 5);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(5, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "J_Player", 6);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(6);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "J_Player", 6);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(6, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "K_Player", 7);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(7);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "K_Player", 7);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(7, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "L_Player", 8);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(8);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "L_Player", 8);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(8, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
 
-            mockAndAddPlayerEntity(context, "O_Player", 9);
-            assertNextPacket(
-                () -> {
-                    var packet = new SetEntityDataPacket();
-                    packet.setRuntimeEntityId(9);
-                    packet.getMetadata().put(EntityDataTypes.NAME, "");
-                    return packet;
-                },
-                context);
+            spawnPlayer(context, "O_Player", 9);
+            assertNextPacketMatch(context, AddPlayerPacket.class, packet -> {
+                assertEquals(9, packet.getRuntimeEntityId());
+                assertEquals("", packet.getMetadata().get(EntityDataTypes.NAME));
+            });
         });
     }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/BasicSidebarScoreboardTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/BasicSidebarScoreboardTests.java
index b3999303e..bd0d64c80 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/BasicSidebarScoreboardTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/BasicSidebarScoreboardTests.java
@@ -32,7 +32,6 @@ import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScore
 import java.util.List;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
-import net.kyori.adventure.text.format.Style;
 import net.kyori.adventure.text.format.TextDecoration;
 import org.cloudburstmc.protocol.bedrock.data.ScoreInfo;
 import org.cloudburstmc.protocol.bedrock.packet.RemoveObjectivePacket;
@@ -75,7 +74,7 @@ public class BasicSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.PLAYER_LIST, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -83,17 +82,17 @@ public class BasicSidebarScoreboardTests {
                 packet.setDisplaySlot("list");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
+            });
 
             context.translate(
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.PLAYER_LIST, "")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new RemoveObjectivePacket();
                 packet.setObjectiveId("0");
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -108,7 +107,7 @@ public class BasicSidebarScoreboardTests {
                 new ClientboundSetObjectivePacket(
                     "objective",
                     ObjectiveAction.ADD,
-                    Component.text("objective", Style.style(NamedTextColor.AQUA, TextDecoration.BOLD)),
+                    Component.text("objective", NamedTextColor.AQUA, TextDecoration.BOLD),
                     ScoreType.INTEGER,
                     null
                 )
@@ -119,7 +118,7 @@ public class BasicSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("§b§lobjective");
@@ -127,7 +126,7 @@ public class BasicSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -170,7 +169,7 @@ public class BasicSidebarScoreboardTests {
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective2")
             );
 
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective2");
@@ -178,13 +177,13 @@ public class BasicSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 2, "Tim203")));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
 
@@ -193,12 +192,12 @@ public class BasicSidebarScoreboardTests {
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective1")
             );
 
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new RemoveObjectivePacket();
                 packet.setObjectiveId("0");
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("2");
                 packet.setDisplayName("objective1");
@@ -206,13 +205,13 @@ public class BasicSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(3, "2", 1, "Tim203")));
                 return packet;
-            }, context);
+            });
         });
     }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/OrderAndLimitSidebarScoreboardTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/OrderAndLimitSidebarScoreboardTests.java
index 3e0be1c02..aab837456 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/OrderAndLimitSidebarScoreboardTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/OrderAndLimitSidebarScoreboardTests.java
@@ -98,7 +98,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -106,8 +106,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -128,7 +128,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(15, "0", 3, "c")
                 ));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             // remove a score
@@ -136,43 +136,43 @@ public class OrderAndLimitSidebarScoreboardTests {
                 resetScoreTranslator,
                 new ClientboundResetScorePacket("m", "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(new ScoreInfo(5, "0", 13, "m")));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(16, "0", 2, "b")));
                 return packet;
-            }, context);
+            });
 
             // add a score
             context.translate(
                 setScoreTranslator,
                 new ClientboundSetScorePacket("aa", "objective", 13)
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(new ScoreInfo(16, "0", 2, "b")));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(17, "0", 13, "aa")));
                 return packet;
-            }, context);
+            });
 
             // add score with same score value (after)
             context.translate(
                 setScoreTranslator,
                 new ClientboundSetScorePacket("ga", "objective", 9)
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -180,8 +180,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(9, "0", 9, "§0§rg")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -189,14 +189,14 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 9, "§1§rga")
                 ));
                 return packet;
-            }, context);
+            });
 
             // add another score with same score value (before all)
             context.translate(
                 setScoreTranslator,
                 new ClientboundSetScorePacket("ag", "objective", 9)
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -205,8 +205,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 9, "§2§rga")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -215,14 +215,14 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 9, "§2§rga")
                 ));
                 return packet;
-            }, context);
+            });
 
             // remove score with same value
             context.translate(
                 resetScoreTranslator,
                 new ClientboundResetScorePacket("g", "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -230,8 +230,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 9, "§1§rga")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -239,14 +239,14 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(20, "0", 4, "e")
                 ));
                 return packet;
-            }, context);
+            });
 
             // remove the other score with the same value
             context.translate(
                 resetScoreTranslator,
                 new ClientboundResetScorePacket("ga", "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -254,8 +254,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(19, "0", 9, "ag")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -263,7 +263,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(21, "0", 3, "c")
                 ));
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -327,7 +327,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -335,8 +335,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -357,7 +357,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(15, "0", 3, "c")
                 ));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             // remove a score
@@ -365,36 +365,36 @@ public class OrderAndLimitSidebarScoreboardTests {
                 resetScoreTranslator,
                 new ClientboundResetScorePacket("m", "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(new ScoreInfo(5, "0", 13, "m")));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(16, "0", 2, "b")));
                 return packet;
-            }, context);
+            });
 
             // add a score
             context.translate(
                 setScoreTranslator,
                 new ClientboundSetScorePacket("aa", "objective", 13)
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(new ScoreInfo(16, "0", 2, "b")));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(17, "0", 13, "aa")));
                 return packet;
-            }, context);
+            });
 
             // add some teams for the upcoming score adds
             context.translate(
@@ -435,7 +435,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                 setScoreTranslator,
                 new ClientboundSetScorePacket("oa", "objective", 11)
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -443,8 +443,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(7, "0", 11, "§0§r§4prefix§r§4o§r§4suffix")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -452,7 +452,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 11, "§1§r§3prefix§r§3oa§r§3suffix")
                 ));
                 return packet;
-            }, context);
+            });
 
             // add a score that on Java should be before 'o', but would be after on Bedrock without manual order
             // due to the team color
@@ -460,7 +460,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                 setScoreTranslator,
                 new ClientboundSetScorePacket("ao", "objective", 11)
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -469,8 +469,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 11, "§2§r§3prefix§r§3oa§r§3suffix")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -479,14 +479,14 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 11, "§2§r§3prefix§r§3oa§r§3suffix")
                 ));
                 return packet;
-            }, context);
+            });
 
             // remove original 'o' score
             context.translate(
                 resetScoreTranslator,
                 new ClientboundResetScorePacket("o", "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -494,8 +494,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(18, "0", 11, "§1§r§3prefix§r§3oa§r§3suffix")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -503,14 +503,14 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(20, "0", 4, "e")
                 ));
                 return packet;
-            }, context);
+            });
 
             // remove the other score with the same value as 'o'
             context.translate(
                 resetScoreTranslator,
                 new ClientboundResetScorePacket("oa", "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(
@@ -518,8 +518,8 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(19, "0", 11, "§5prefix§r§5ao§r§5suffix")
                 ));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(
@@ -527,7 +527,7 @@ public class OrderAndLimitSidebarScoreboardTests {
                     new ScoreInfo(21, "0", 3, "c")
                 ));
                 return packet;
-            }, context);
+            });
         });
     }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/VanillaSidebarScoreboardTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/VanillaSidebarScoreboardTests.java
index 0a02a58d9..f511f59c7 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/VanillaSidebarScoreboardTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/sidebar/VanillaSidebarScoreboardTests.java
@@ -69,7 +69,7 @@ public class VanillaSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -77,16 +77,16 @@ public class VanillaSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("owner", "objective", 1));
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 1, "owner")));
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -114,7 +114,7 @@ public class VanillaSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -122,22 +122,22 @@ public class VanillaSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 1, "owner")));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(setScoreTranslator, new ClientboundSetScorePacket("owner", "objective", 2));
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 2, "owner")));
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -166,7 +166,7 @@ public class VanillaSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -174,31 +174,31 @@ public class VanillaSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 1, "owner")));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(
                 setScoreTranslator,
                 new ClientboundSetScorePacket("owner", "objective", 1).withDisplay(Component.text("hi"))
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 1, "hi")));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 1, "hi")));
                 return packet;
-            }, context);
+            });
         });
     }
 
@@ -227,7 +227,7 @@ public class VanillaSidebarScoreboardTests {
                 setDisplayObjectiveTranslator,
                 new ClientboundSetDisplayObjectivePacket(ScoreboardPosition.SIDEBAR, "objective")
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetDisplayObjectivePacket();
                 packet.setObjectiveId("0");
                 packet.setDisplayName("objective");
@@ -235,31 +235,31 @@ public class VanillaSidebarScoreboardTests {
                 packet.setDisplaySlot("sidebar");
                 packet.setSortOrder(1);
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 1, "owner")));
                 return packet;
-            }, context);
+            });
             assertNoNextPacket(context);
 
             context.translate(
                 setScoreTranslator,
                 new ClientboundSetScorePacket("owner", "objective", 2).withDisplay(Component.text("hi"))
             );
-            assertNextPacket(() -> {
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.REMOVE);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 2, "hi")));
                 return packet;
-            }, context);
-            assertNextPacket(() -> {
+            });
+            assertNextPacket(context, () -> {
                 var packet = new SetScorePacket();
                 packet.setAction(SetScorePacket.Action.SET);
                 packet.setInfos(List.of(new ScoreInfo(1, "0", 2, "hi")));
                 return packet;
-            }, context);
+            });
         });
     }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/AssertUtils.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/AssertUtils.java
index b15994533..9177f205a 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/AssertUtils.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/AssertUtils.java
@@ -26,6 +26,7 @@
 package org.geysermc.geyser.scoreboard.network.util;
 
 import java.util.Collections;
+import java.util.function.Consumer;
 import java.util.function.Supplier;
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.junit.jupiter.api.Assertions;
@@ -38,7 +39,7 @@ public class AssertUtils {
         Assertions.assertEquals(expected.get(), actual);
     }
 
-    public static void assertNextPacket(Supplier<BedrockPacket> expected, GeyserMockContext context) {
+    public static void assertNextPacket(GeyserMockContext context, Supplier<BedrockPacket> expected) {
         assertContextEquals(expected, context.nextPacket());
     }
 
@@ -50,6 +51,16 @@ public class AssertUtils {
         Assertions.assertEquals(type, actual.getClass());
     }
 
+    public static <T extends BedrockPacket> void assertNextPacketMatch(GeyserMockContext context, Class<T> type, Consumer<T> matcher) {
+        var actual = context.nextPacket();
+        if (actual == null) {
+            Assertions.fail("Expected another packet!");
+        }
+        Assertions.assertEquals(type, actual.getClass(), "Expected packet to be an instance of " + type);
+        //noinspection unchecked verified in the line above me
+        matcher.accept((T) actual);
+    }
+
     public static void assertNoNextPacket(GeyserMockContext context) {
         Assertions.assertEquals(
             Collections.emptyList(),
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java
index 72515d714..1d262d8b8 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java
@@ -35,16 +35,15 @@ import java.util.function.Consumer;
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.configuration.GeyserConfiguration;
+import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.mockito.MockedStatic;
 import org.mockito.Mockito;
 
 public class GeyserMockContext {
     private final List<Object> mocksAndSpies = new ArrayList<>();
     private final List<Object> storedObjects = new ArrayList<>();
     private final List<BedrockPacket> packets = Collections.synchronizedList(new ArrayList<>());
-    private MockedStatic<GeyserImpl> geyserImplMock;
 
     public static void mockContext(Consumer<GeyserMockContext> geyserContext) {
         var context = new GeyserMockContext();
@@ -59,9 +58,15 @@ public class GeyserMockContext {
         var logger = context.storeObject(new EmptyGeyserLogger());
         when(geyserImpl.getLogger()).thenReturn(logger);
 
-        try (var mocked = mockStatic(GeyserImpl.class)) {
-            mocked.when(GeyserImpl::getInstance).thenReturn(geyserImpl);
-            context.geyserImplMock = mocked;
+        try (var geyserImplMock = mockStatic(GeyserImpl.class)) {
+            geyserImplMock.when(GeyserImpl::getInstance).thenReturn(geyserImpl);
+
+            // Since Geyser isn't actually loaded, the Registries#init will not be called.
+            // This means that we manually load the registries we want to use
+            Registries.ENTITY_DEFINITIONS.load();
+            Registries.JAVA_ENTITY_IDENTIFIERS.load();
+            Registries.BEDROCK_ENTITY_PROPERTIES.load();
+
             geyserContext.accept(context);
         }
     }
@@ -136,8 +141,4 @@ public class GeyserMockContext {
     public <T> void translate(PacketTranslator<T> translator, T packet) {
         translator.translate(session(), packet);
     }
-
-    public MockedStatic<GeyserImpl> geyserImplMock() {
-        return geyserImplMock;
-    }
 }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContextScoreboard.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContextScoreboard.java
index bc76a1b70..e0d9918e5 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContextScoreboard.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContextScoreboard.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.scoreboard.network.util;
 
+import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacketType;
 import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNoNextPacket;
 import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContext.mockContext;
 import static org.mockito.ArgumentMatchers.any;
@@ -34,6 +35,8 @@ import static org.mockito.Mockito.when;
 
 import java.util.UUID;
 import java.util.function.Consumer;
+import org.cloudburstmc.math.vector.Vector3f;
+import org.cloudburstmc.protocol.bedrock.packet.AddPlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
@@ -82,15 +85,20 @@ public class GeyserMockContextScoreboard {
         when(worldCache.increaseAndGetScoreboardPacketsPerSecond()).thenReturn(0);
     }
 
-    public static PlayerEntity mockAndAddPlayerEntity(GeyserMockContext context, String username, long geyserId) {
-        var playerEntity = spy(new PlayerEntity(context.session(), geyserId, UUID.randomUUID(), username));
-        // fake the player being spawned
-        when(playerEntity.isValid()).thenReturn(true);
+    public static PlayerEntity spawnPlayerSilently(GeyserMockContext context, String username, long geyserId) {
+        var player = spawnPlayer(context, username, geyserId);
+        assertNextPacketType(context, AddPlayerPacket.class);
+        return player;
+    }
+
+    public static PlayerEntity spawnPlayer(GeyserMockContext context, String username, long geyserId) {
+        var playerEntity = spy(new PlayerEntity(context.session(), (int) geyserId, geyserId, UUID.randomUUID(), Vector3f.ZERO, Vector3f.ZERO, 0, 0, 0, username, null));
 
         var entityCache = context.mockOrSpy(EntityCache.class);
         entityCache.addPlayerEntity(playerEntity);
         // called when the player spawns
-        entityCache.cacheEntity(playerEntity);
+        entityCache.spawnEntity(playerEntity);
+
         return playerEntity;
     }
 }

From 8f7a0d0778aa9106ea32527e535fe5d1cc7d7d0d Mon Sep 17 00:00:00 2001
From: Tim203 <mctim203@gmail.com>
Date: Mon, 28 Oct 2024 00:56:39 +0100
Subject: [PATCH 026/165] Correct the loading of the block registries and the
 common registries

---
 .../java/org/geysermc/geyser/GeyserImpl.java  | 12 ++++++--
 .../geyser/registry/BlockRegistries.java      | 30 ++++++++++++++-----
 .../geysermc/geyser/registry/Registries.java  | 10 ++++---
 3 files changed, 37 insertions(+), 15 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
index 4672aef5b..f679b412c 100644
--- a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
@@ -231,9 +231,15 @@ public class GeyserImpl implements GeyserApi, EventRegistrar {
         }
         logger.info("******************************************");
 
-        /* Initialize registries */
-        Registries.init();
-        BlockRegistries.init();
+        /*
+        First load the registries and then populate them.
+        Both the block registries and the common registries depend on each other,
+        so maintaining this order is crucial for Geyser to load.
+         */
+        BlockRegistries.load();
+        Registries.load();
+        BlockRegistries.populate();
+        Registries.populate();
 
         RegistryCache.init();
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
index 2f15094ef..8cf11979f 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
@@ -69,7 +69,7 @@ public class BlockRegistries {
     /**
      * A mapped registry containing which holds block IDs to its {@link BlockCollision}.
      */
-    public static final ListRegistry<BlockCollision> COLLISIONS;
+    public static final ListRegistry<BlockCollision> COLLISIONS = ListRegistry.create(Pair.of("org.geysermc.geyser.translator.collision.CollisionRemapper", "mappings/collisions.nbt"), CollisionRegistryLoader::new);
 
     /**
      * A registry which stores Java IDs to {@link Block}, containing miscellaneous information about
@@ -130,22 +130,36 @@ public class BlockRegistries {
      */
     public static final SimpleMappedRegistry<String, CustomSkull> CUSTOM_SKULLS = SimpleMappedRegistry.create(RegistryLoaders.empty(Object2ObjectOpenHashMap::new));
 
-    static {
+    public static void load() {
+        BLOCKS.load();
+        BLOCK_STATES.load();
+        // collisions are loaded later, because they are initialized later
+        JAVA_BLOCKS.load();
+        JAVA_IDENTIFIER_TO_ID.load();
+        WATERLOGGED.load();
+        INTERACTIVE.load();
+        INTERACTIVE_MAY_BUILD.load();
+        CUSTOM_BLOCKS.load();
+        CUSTOM_BLOCK_STATE_OVERRIDES.load();
+        NON_VANILLA_BLOCK_STATE_OVERRIDES.load();
+        CUSTOM_BLOCK_ITEM_OVERRIDES.load();
+        EXTENDED_COLLISION_BOXES.load();
+        CUSTOM_SKULLS.load();
+
+        COLLISIONS.load();
+    }
+
+    public static void populate() {
         Blocks.VAULT.javaId(); // FIXME
         CustomSkullRegistryPopulator.populate();
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.PRE_INIT);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.DEFINITION);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.NON_VANILLA_REGISTRATION);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_JAVA);
-        COLLISIONS = ListRegistry.create(Pair.of("org.geysermc.geyser.translator.collision.CollisionRemapper", "mappings/collisions.nbt"), CollisionRegistryLoader::new);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.VANILLA_REGISTRATION);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.CUSTOM_REGISTRATION);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_BEDROCK);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.POST_INIT);
     }
 
-    public static void init() {
-        // no-op
-    }
-
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index e9ff837ab..b86ea3bbf 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -62,7 +62,7 @@ import java.util.*;
  * Holds all the common registries in Geyser.
  */
 public final class Registries {
-    private static boolean initialized = false;
+    private static boolean loaded = false;
 
     /**
      * A registry holding all the providers.
@@ -167,9 +167,9 @@ public final class Registries {
      */
     public static final SimpleMappedRegistry<SoundTranslator, SoundInteractionTranslator<?>> SOUND_TRANSLATORS = SimpleMappedRegistry.create("org.geysermc.geyser.translator.sound.SoundTranslator", SoundTranslatorRegistryLoader::new);
 
-    public static void init() {
-        if (initialized) return;
-        initialized = true;
+    public static void load() {
+        if (loaded) return;
+        loaded = true;
 
         PROVIDERS.load();
         BEDROCK_ENTITY_IDENTIFIERS.load();
@@ -191,7 +191,9 @@ public final class Registries {
         SOUNDS.load();
         SOUND_LEVEL_EVENTS.load();
         SOUND_TRANSLATORS.load();
+    }
 
+    public static void populate() {
         PacketRegistryPopulator.populate();
         ItemRegistryPopulator.populate();
 

From 0f1a32e1c11231a0faaf623e0a7ebe979de4c9d6 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 28 Oct 2024 01:29:03 -0400
Subject: [PATCH 027/165] Clear recipes during the configuration phase

---
 .../geyser/session/GeyserSession.java         | 10 ++-----
 ...vaFinishConfigurationPacketTranslator.java | 30 +++++++++++++++++++
 .../java/JavaUpdateRecipesTranslator.java     | 13 --------
 3 files changed, 32 insertions(+), 21 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 1ca127657..fa06a53ba 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -83,7 +83,6 @@ import org.cloudburstmc.protocol.bedrock.packet.BiomeDefinitionListPacket;
 import org.cloudburstmc.protocol.bedrock.packet.CameraPresetsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ChunkRadiusUpdatedPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ClientboundCloseFormPacket;
-import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.CreativeContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.DimensionDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.EmoteListPacket;
@@ -179,6 +178,7 @@ import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.ChunkUtils;
 import org.geysermc.geyser.util.EntityUtils;
+import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.LoginEncryptionUtils;
 import org.geysermc.geyser.util.MinecraftAuthLogger;
 import org.geysermc.mcprotocollib.auth.GameProfile;
@@ -684,7 +684,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         this.openInventory = null;
         this.craftingRecipes = new Int2ObjectOpenHashMap<>();
         this.javaToBedrockRecipeIds = new Int2ObjectOpenHashMap<>();
-        this.lastRecipeNetId = new AtomicInteger(1);
+        this.lastRecipeNetId = new AtomicInteger(InventoryUtils.LAST_RECIPE_NET_ID);
 
         this.spawned = false;
         this.loggedIn = false;
@@ -756,12 +756,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         creativePacket.setContents(this.itemMappings.getCreativeItems());
         upstream.sendPacket(creativePacket);
 
-        // Potion mixes are registered by default, as they are needed to be able to put ingredients into the brewing stand.
-        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
-        craftingDataPacket.setCleanRecipes(true);
-        craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(this.upstream.getProtocolVersion()));
-        upstream.sendPacket(craftingDataPacket);
-
         PlayStatusPacket playStatusPacket = new PlayStatusPacket();
         playStatusPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
         upstream.sendPacket(playStatusPacket);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
index 8ade4a1f0..1a32c1a97 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
@@ -25,15 +25,33 @@
 
 package org.geysermc.geyser.translator.protocol.java;
 
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.MultiRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.RecipeData;
+import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerListPacket;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
+import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound.ClientboundFinishConfigurationPacket;
 
+import java.util.List;
+import java.util.UUID;
+
+import static org.geysermc.geyser.util.InventoryUtils.LAST_RECIPE_NET_ID;
+
 @Translator(packet = ClientboundFinishConfigurationPacket.class)
 public class JavaFinishConfigurationPacketTranslator extends PacketTranslator<ClientboundFinishConfigurationPacket> {
+    /**
+     * Required to use the specified cartography table recipes
+     */
+    private static final List<RecipeData> CARTOGRAPHY_RECIPES = List.of(
+        MultiRecipeData.of(UUID.fromString("8b36268c-1829-483c-a0f1-993b7156a8f2"), ++LAST_RECIPE_NET_ID), // Map extending
+        MultiRecipeData.of(UUID.fromString("442d85ed-8272-4543-a6f1-418f90ded05d"), ++LAST_RECIPE_NET_ID), // Map cloning
+        MultiRecipeData.of(UUID.fromString("98c84b38-1085-46bd-b1ce-dd38c159e6cc"), ++LAST_RECIPE_NET_ID), // Map upgrading
+        MultiRecipeData.of(UUID.fromString("602234e4-cac1-4353-8bb7-b1ebff70024b"), ++LAST_RECIPE_NET_ID) // Map locking
+    );
 
     @Override
     public void translate(GeyserSession session, ClientboundFinishConfigurationPacket packet) {
@@ -45,5 +63,17 @@ public class JavaFinishConfigurationPacketTranslator extends PacketTranslator<Cl
         }
         session.sendUpstreamPacket(playerListPacket);
         session.getEntityCache().removeAllPlayerEntities();
+
+        // Potion mixes are registered by default, as they are needed to be able to put ingredients into the brewing stand.
+        // (Also add it here so recipes get cleared on configuration - 1.21.3)
+        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
+        craftingDataPacket.setCleanRecipes(true);
+        craftingDataPacket.getCraftingData().addAll(CARTOGRAPHY_RECIPES);
+        craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
+        if (session.isSentSpawnPacket()) {
+            session.getUpstream().sendPacket(craftingDataPacket);
+        } else {
+            session.getUpstream().queuePostStartGamePacket(craftingDataPacket);
+        }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index de62fb922..693b451ba 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -30,8 +30,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
-import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.MultiRecipeData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.RecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
@@ -58,8 +56,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import static org.geysermc.geyser.util.InventoryUtils.LAST_RECIPE_NET_ID;
-
 /**
  * Used to send all valid recipes from Java to Bedrock.
  * <p>
@@ -67,15 +63,6 @@ import static org.geysermc.geyser.util.InventoryUtils.LAST_RECIPE_NET_ID;
  */
 @Translator(packet = ClientboundUpdateRecipesPacket.class)
 public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpdateRecipesPacket> {
-    /**
-     * Required to use the specified cartography table recipes
-     */
-    private static final List<RecipeData> CARTOGRAPHY_RECIPES = List.of(
-            MultiRecipeData.of(UUID.fromString("8b36268c-1829-483c-a0f1-993b7156a8f2"), ++LAST_RECIPE_NET_ID), // Map extending
-            MultiRecipeData.of(UUID.fromString("442d85ed-8272-4543-a6f1-418f90ded05d"), ++LAST_RECIPE_NET_ID), // Map cloning
-            MultiRecipeData.of(UUID.fromString("98c84b38-1085-46bd-b1ce-dd38c159e6cc"), ++LAST_RECIPE_NET_ID), // Map upgrading
-            MultiRecipeData.of(UUID.fromString("602234e4-cac1-4353-8bb7-b1ebff70024b"), ++LAST_RECIPE_NET_ID) // Map locking
-    );
 
     private static final List<String> NETHERITE_UPGRADES = List.of(
             "minecraft:netherite_sword",

From 6c0d3419fc5439e534755f2d453a5679fe2a36cf Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 28 Oct 2024 01:31:08 -0400
Subject: [PATCH 028/165] Prevent recipe ID conflict

---
 .../main/java/org/geysermc/geyser/session/GeyserSession.java    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index fa06a53ba..25bfe19e7 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -684,7 +684,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         this.openInventory = null;
         this.craftingRecipes = new Int2ObjectOpenHashMap<>();
         this.javaToBedrockRecipeIds = new Int2ObjectOpenHashMap<>();
-        this.lastRecipeNetId = new AtomicInteger(InventoryUtils.LAST_RECIPE_NET_ID);
+        this.lastRecipeNetId = new AtomicInteger(InventoryUtils.LAST_RECIPE_NET_ID + 1);
 
         this.spawned = false;
         this.loggedIn = false;

From 3f60db1483b8b48d00bc94b77afad0b79ad84dd9 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 28 Oct 2024 01:38:45 -0400
Subject: [PATCH 029/165] Fix collision registry loading

---
 .../java/org/geysermc/geyser/registry/BlockRegistries.java     | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
index 8cf11979f..b7c5e2d07 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
@@ -145,8 +145,6 @@ public class BlockRegistries {
         CUSTOM_BLOCK_ITEM_OVERRIDES.load();
         EXTENDED_COLLISION_BOXES.load();
         CUSTOM_SKULLS.load();
-
-        COLLISIONS.load();
     }
 
     public static void populate() {
@@ -156,6 +154,7 @@ public class BlockRegistries {
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.DEFINITION);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.NON_VANILLA_REGISTRATION);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_JAVA);
+        COLLISIONS.load();
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.VANILLA_REGISTRATION);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.CUSTOM_REGISTRATION);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_BEDROCK);

From 344d40dd1f0dc6a39f840e6ab6c4127298359a04 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 28 Oct 2024 17:58:37 -0400
Subject: [PATCH 030/165] Smithing recipes mostly work

---
 .../geyser/session/cache/InputCache.java      | 26 +++++-
 .../BedrockPlayerAuthInputTranslator.java     |  6 +-
 .../java/JavaRecipeBookAddTranslator.java     | 26 ++----
 .../java/JavaUpdateRecipesTranslator.java     | 84 +++++++++++++------
 .../player/JavaPlayerPositionTranslator.java  |  1 +
 .../inventory/JavaOpenScreenTranslator.java   |  5 +-
 .../org/geysermc/geyser/util/MathUtils.java   | 11 ---
 7 files changed, 95 insertions(+), 64 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
index c666ded64..79c37a5a8 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
@@ -27,6 +27,8 @@ package org.geysermc.geyser.session.cache;
 
 import lombok.Getter;
 import lombok.Setter;
+import org.cloudburstmc.math.vector.Vector2f;
+import org.cloudburstmc.protocol.bedrock.data.InputMode;
 import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.session.GeyserSession;
@@ -52,12 +54,28 @@ public final class InputCache {
         // Input is sent to the server before packet positions, as of 1.21.2
         Set<PlayerAuthInputData> bedrockInput = packet.getInputData();
         var oldInputPacket = this.inputPacket;
+
+        boolean up, down, left, right;
+        if (packet.getInputMode() == InputMode.MOUSE) {
+            up = bedrockInput.contains(PlayerAuthInputData.UP);
+            down = bedrockInput.contains(PlayerAuthInputData.DOWN);
+            left = bedrockInput.contains(PlayerAuthInputData.LEFT);
+            right = bedrockInput.contains(PlayerAuthInputData.RIGHT);
+        } else {
+            // The above flags don't fire TODO test console
+            Vector2f analogMovement = packet.getAnalogMoveVector();
+            up = analogMovement.getY() > 0;
+            down = analogMovement.getY() < 0;
+            left = analogMovement.getX() > 0;
+            right = analogMovement.getX() < 0;
+        }
+
         // TODO when is UP_LEFT, etc. used?
         this.inputPacket = this.inputPacket
-            .withForward(bedrockInput.contains(PlayerAuthInputData.UP))
-            .withBackward(bedrockInput.contains(PlayerAuthInputData.DOWN))
-            .withLeft(bedrockInput.contains(PlayerAuthInputData.LEFT))
-            .withRight(bedrockInput.contains(PlayerAuthInputData.RIGHT))
+            .withForward(up)
+            .withBackward(down)
+            .withLeft(left)
+            .withRight(right)
             .withJump(bedrockInput.contains(PlayerAuthInputData.JUMPING)) // Looks like this only triggers when the JUMP key input is being pressed. There's also JUMP_DOWN?
             .withShift(bedrockInput.contains(PlayerAuthInputData.SNEAKING))
             .withSprint(bedrockInput.contains(PlayerAuthInputData.SPRINTING)); // SPRINTING will trigger even if the player isn't moving
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index 93e4cb92a..a366a5b69 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
 
+import org.cloudburstmc.math.GenericMath;
 import org.cloudburstmc.math.vector.Vector2f;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.math.vector.Vector3i;
@@ -50,7 +51,6 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.translator.protocol.bedrock.BedrockInventoryTransactionTranslator;
 import org.geysermc.geyser.util.CooldownUtils;
-import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
@@ -71,7 +71,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
     @Override
     public void translate(GeyserSession session, PlayerAuthInputPacket packet) {
         if (!data.equals(packet.getInputData())) {
-            System.out.println(data);
+            System.out.println(packet.getInputData());
             this.data = packet.getInputData();
         }
         SessionPlayerEntity entity = session.getPlayerEntity();
@@ -267,7 +267,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
                 // Jump released
                 // Yes, I'm fairly certain that entity ID is correct.
                 session.sendDownstreamGamePacket(new ServerboundPlayerCommandPacket(session.getPlayerEntity().getEntityId(),
-                    PlayerState.START_HORSE_JUMP, MathUtils.floor(session.getInputCache().getJumpScale() * 100f)));
+                    PlayerState.START_HORSE_JUMP, GenericMath.floor(session.getInputCache().getJumpScale() * 100f)));
                 session.getInputCache().setJumpingTicks(-10);
             } else if (!wasJumping && holdingJump) {
                 session.getInputCache().setJumpingTicks(0);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index f7fa9883f..94dab5dea 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -61,6 +61,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySl
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SmithingTrimDemoSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookAddPacket;
 
@@ -78,7 +79,7 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
 
     @Override
     public void translate(GeyserSession session, ClientboundRecipeBookAddPacket packet) {
-        System.out.println(packet);
+        //System.out.println(packet);
         int netId = session.getLastRecipeNetId().get();
         Int2ObjectMap<List<String>> javaToBedrockRecipeIds = session.getJavaToBedrockRecipeIds();
         CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
@@ -131,8 +132,8 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     javaToBedrockRecipeIds.put(contents.id(), List.copyOf(bedrockRecipeIds));
                 }
                 case SMITHING -> {
-                    if (true) {
-                        System.out.println(display);
+                    if (display.result() instanceof SmithingTrimDemoSlotDisplay) {
+                        // Skip these - Bedrock already knows about them from the TrimDataPacket
                         continue;
                     }
                     SmithingRecipeDisplay smithingRecipe = (SmithingRecipeDisplay) display;
@@ -169,7 +170,7 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
             }
         }
 
-        System.out.println(craftingDataPacket);
+        //System.out.println(craftingDataPacket);
         session.sendUpstreamPacket(craftingDataPacket);
         session.sendUpstreamPacket(recipesPacket);
         session.getLastRecipeNetId().set(netId);
@@ -212,26 +213,11 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 // Cache is implemented as, presumably, an item tag will be used multiple times in succession
                 // (E.G. a chest with planks tags)
                 return TAG_TO_ITEM_DESCRIPTOR_CACHE.get().computeIfAbsent(items, key -> {
-//                    String molang = "q.is_item_name_any('', "
-//                        + Arrays.stream(items).mapToObj(item -> {
-//                            ItemMapping mapping = session.getItemMappings().getMapping(item);
-//                            return "'" + mapping.getBedrockIdentifier() + "'";
-//                        }).collect(Collectors.joining(", "))
-//                        + ")";
-//                    String molang = Arrays.stream(items).mapToObj(item -> {
-//                        ItemMapping mapping = session.getItemMappings().getMapping(item);
-//                        return "q.identifier == '" + mapping.getBedrockIdentifier() + "'";
-//                    }).collect(Collectors.joining(" || "));
-//                    if ("minecraft:planks".equals(tag.toString())) {
-//                        String molang = "q.any_tag('minecraft:planks')";
-//                        return Collections.singletonList(new ItemDescriptorWithCount(new MolangDescriptor(molang, 10), 1));
-//                    }
-
                     Set<ItemDescriptorWithCount> itemDescriptors = new HashSet<>();
                     for (int item : key) {
                         itemDescriptors.add(fromItem(session, item));
                     }
-                    return new ArrayList<>(itemDescriptors); // This, or a list from the start with contains -> add?
+                    return List.copyOf(itemDescriptors); // This, or a list from the start with contains -> add?
                 });
             }
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index 693b451ba..9f53a9af4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -28,13 +28,20 @@ package org.geysermc.geyser.translator.protocol.java;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
+import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.RecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTrimRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
 import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
+import org.cloudburstmc.protocol.bedrock.packet.TrimDataPacket;
+import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.recipe.GeyserStonecutterData;
+import org.geysermc.geyser.inventory.recipe.TrimRecipe;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMapping;
@@ -50,11 +57,14 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.Clientbound
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundUpdateRecipesPacket.SelectableRecipe;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 /**
  * Used to send all valid recipes from Java to Bedrock.
@@ -94,6 +104,34 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
         int netId = session.getLastRecipeNetId().get();
         CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
         System.out.println(packet);
+
+        boolean oldSmithingTable;
+        int[] smithingBase = packet.getItemSets().get(SMITHING_BASE);
+        int[] smithingTemplate = packet.getItemSets().get(SMITHING_TEMPLATE);
+        int[] smithingAddition = packet.getItemSets().get(SMITHING_ADDITION);
+        if (smithingBase == null || smithingTemplate == null || smithingAddition == null) {
+            // We're probably on a version before the smithing table got expanded functionality.
+            oldSmithingTable = true;
+            addSmithingTransformRecipes(session, craftingDataPacket.getCraftingData());
+            netId = session.getLastRecipeNetId().get(); // Was updated in the above method.
+        } else {
+            System.out.println(Arrays.stream(smithingTemplate).mapToObj(i -> Registries.JAVA_ITEMS.get(i).javaIdentifier()).collect(Collectors.joining(" ")));
+            System.out.println(Arrays.stream(smithingAddition).mapToObj(i -> Registries.JAVA_ITEMS.get(i).javaIdentifier()).collect(Collectors.joining(" ")));
+            oldSmithingTable = false;
+            // BDS sends armor trim templates and materials before the CraftingDataPacket
+            TrimDataPacket trimDataPacket = new TrimDataPacket();
+            trimDataPacket.getPatterns().addAll(session.getRegistryCache().trimPatterns().values());
+            trimDataPacket.getMaterials().addAll(session.getRegistryCache().trimMaterials().values());
+            session.sendUpstreamPacket(trimDataPacket);
+
+            // Identical smithing_trim recipe sent by BDS that uses tag-descriptors, as the client seems to ignore the
+            // approach of using many default-descriptors (which we do for smithing_transform)
+            craftingDataPacket.getCraftingData().add(SmithingTrimRecipeData.of(TrimRecipe.ID,
+                    TrimRecipe.BASE, TrimRecipe.ADDITION, TrimRecipe.TEMPLATE, "smithing_table", netId++));
+        }
+        session.getGeyser().getLogger().debug("Using old smithing table workaround? " + oldSmithingTable);
+        session.setOldSmithingTable(oldSmithingTable);
+
         Int2ObjectMap<List<SelectableRecipe>> unsortedStonecutterData = new Int2ObjectOpenHashMap<>();
 
         List<SelectableRecipe> stonecutterRecipes = packet.getStonecutterRecipes();
@@ -433,30 +471,28 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
 //        return combinations;
 //    }
 //
-//    private List<RecipeData> getSmithingTransformRecipes(GeyserSession session) {
-//        List<RecipeData> recipes = new ArrayList<>();
-//        ItemMapping template = session.getItemMappings().getStoredItems().upgradeTemplate();
-//
-//        for (String identifier : NETHERITE_UPGRADES) {
-//            recipes.add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData.of(identifier + "_smithing",
-//                    getDescriptorFromId(session, template.getBedrockIdentifier()),
-//                    getDescriptorFromId(session, identifier.replace("netherite", "diamond")),
-//                    getDescriptorFromId(session, "minecraft:netherite_ingot"),
-//                    ItemData.builder().definition(Objects.requireNonNull(session.getItemMappings().getDefinition(identifier))).count(1).build(),
-//                    "smithing_table",
-//                    session.getLastRecipeNetId().getAndIncrement()));
-//        }
-//        return recipes;
-//    }
-//
-//    private ItemDescriptorWithCount getDescriptorFromId(GeyserSession session, String bedrockId) {
-//        ItemDefinition bedrockDefinition = session.getItemMappings().getDefinition(bedrockId);
-//        if (bedrockDefinition != null) {
-//            return ItemDescriptorWithCount.fromItem(ItemData.builder().definition(bedrockDefinition).count(1).build());
-//        }
-//        GeyserImpl.getInstance().getLogger().debug("Unable to find item with identifier " + bedrockId);
-//        return ItemDescriptorWithCount.EMPTY;
-//    }
+    private void addSmithingTransformRecipes(GeyserSession session, List<RecipeData> recipes) {
+        ItemMapping template = session.getItemMappings().getStoredItems().upgradeTemplate();
+
+        for (String identifier : NETHERITE_UPGRADES) {
+            recipes.add(SmithingTransformRecipeData.of(identifier + "_smithing",
+                    getDescriptorFromId(session, template.getBedrockIdentifier()),
+                    getDescriptorFromId(session, identifier.replace("netherite", "diamond")),
+                    getDescriptorFromId(session, "minecraft:netherite_ingot"),
+                    ItemData.builder().definition(Objects.requireNonNull(session.getItemMappings().getDefinition(identifier))).count(1).build(),
+                    "smithing_table",
+                    session.getLastRecipeNetId().getAndIncrement()));
+        }
+    }
+
+    private ItemDescriptorWithCount getDescriptorFromId(GeyserSession session, String bedrockId) {
+        ItemDefinition bedrockDefinition = session.getItemMappings().getDefinition(bedrockId);
+        if (bedrockDefinition != null) {
+            return ItemDescriptorWithCount.fromItem(ItemData.builder().definition(bedrockDefinition).count(1).build());
+        }
+        GeyserImpl.getInstance().getLogger().debug("Unable to find item with identifier " + bedrockId);
+        return ItemDescriptorWithCount.EMPTY;
+    }
 //
 //    @EqualsAndHashCode
 //    @AllArgsConstructor
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index ca1b95997..89e8eff82 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -47,6 +47,7 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
 
     @Override
     public void translate(GeyserSession session, ClientboundPlayerPositionPacket packet) {
+        System.out.println(packet);
         if (!session.isLoggedIn())
             return;
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java
index edb13f806..bc4e22b5a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenScreenTranslator.java
@@ -52,8 +52,9 @@ public class JavaOpenScreenTranslator extends PacketTranslator<ClientboundOpenSc
         InventoryTranslator newTranslator;
         Inventory openInventory = session.getOpenInventory();
 
-        // Hack: ViaVersion translates the old (pre 1.20) smithing table to a furnace (does not work for Bedrock). We can detect this and translate it back to a smithing table.
-        if (session.isOldSmithingTable() && packet.getType() == ContainerType.FURNACE && packet.getTitle().equals(SMITHING_TABLE_COMPONENT)) {
+        // Hack: ViaVersion translates the old (pre 1.20) smithing table to a anvil (does not work for Bedrock). We can detect this and translate it back to a smithing table.
+        // (Implementation note: used to be a furnace. Was changed sometime before 1.21.2)
+        if (session.isOldSmithingTable() && packet.getType() == ContainerType.ANVIL && packet.getTitle().equals(SMITHING_TABLE_COMPONENT)) {
             newTranslator = OldSmithingTableTranslator.INSTANCE;
         } else {
             newTranslator = InventoryTranslator.inventoryTranslator(packet.getType());
diff --git a/core/src/main/java/org/geysermc/geyser/util/MathUtils.java b/core/src/main/java/org/geysermc/geyser/util/MathUtils.java
index 6d3b63c8f..08bed56f4 100644
--- a/core/src/main/java/org/geysermc/geyser/util/MathUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/MathUtils.java
@@ -105,17 +105,6 @@ public class MathUtils {
         return floatNumber > truncated ? truncated + 1 : truncated;
     }
 
-    /**
-     * Round the given float to the previous whole number
-     *
-     * @param floatNumber Float to round
-     * @return Rounded number
-     */
-    public static int floor(float floatNumber) {
-        int truncated = (int) floatNumber;
-        return floatNumber < truncated ? truncated - 1 : truncated;
-    }
-
     /**
      * If number is greater than the max, set it to max, and if number is lower than low, set it to low.
      *

From 05f153c9416302564317fe79589ae4310a102a2e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 28 Oct 2024 18:53:16 -0400
Subject: [PATCH 031/165] Re-implement on-the-fly recipe sending

---
 .../geyser/inventory/GeyserItemStack.java     |  19 +++
 .../geyser/inventory/recipe/GeyserRecipe.java |   4 +-
 .../inventory/recipe/GeyserShapedRecipe.java  |  14 ++-
 .../recipe/GeyserShapelessRecipe.java         |  14 ++-
 .../registry/loader/RecipeRegistryLoader.java |   6 +-
 .../geyser/session/GeyserSession.java         |   3 +-
 .../inventory/InventoryTranslator.java        |  52 +++++---
 ...=> JavaFinishConfigurationTranslator.java} |   5 +-
 .../java/JavaRecipeBookAddTranslator.java     |  16 ++-
 .../JavaContainerSetSlotTranslator.java       |  17 ++-
 .../geysermc/geyser/util/InventoryUtils.java  | 118 ++++++++++--------
 11 files changed, 170 insertions(+), 98 deletions(-)
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/java/{JavaFinishConfigurationPacketTranslator.java => JavaFinishConfigurationTranslator.java} (93%)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index b843b3d4d..b4809edf2 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -29,6 +29,7 @@ import lombok.*;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.registry.Registries;
@@ -38,6 +39,10 @@ import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 import java.util.HashMap;
 
@@ -77,6 +82,20 @@ public class GeyserItemStack {
         return itemStack == null ? EMPTY : new GeyserItemStack(itemStack.getId(), itemStack.getAmount(), itemStack.getDataComponents());
     }
 
+    public static @NonNull GeyserItemStack from(@NonNull SlotDisplay slotDisplay) {
+        if (slotDisplay instanceof EmptySlotDisplay) {
+            return GeyserItemStack.EMPTY;
+        }
+        if (slotDisplay instanceof ItemSlotDisplay itemSlotDisplay) {
+            return GeyserItemStack.of(itemSlotDisplay.item(), 1);
+        }
+        if (slotDisplay instanceof ItemStackSlotDisplay itemStackSlotDisplay) {
+            return GeyserItemStack.from(itemStackSlotDisplay.itemStack());
+        }
+        GeyserImpl.getInstance().getLogger().warning("Unsure how to convert to ItemStack: " + slotDisplay);
+        return GeyserItemStack.EMPTY;
+    }
+
     public int getJavaId() {
         return isEmpty() ? 0 : javaId;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
index 3037b725e..d9cae943f 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
@@ -26,7 +26,7 @@
 package org.geysermc.geyser.inventory.recipe;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 /**
  * A more compact version of {link org.geysermc.mcprotocollib.protocol.data.game.recipe.Recipe}.
@@ -38,5 +38,5 @@ public interface GeyserRecipe {
     boolean isShaped();
 
     @Nullable
-    ItemStack result();
+    SlotDisplay result();
 }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
index 413041ba7..70b71cf4d 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
@@ -26,14 +26,16 @@
 package org.geysermc.geyser.inventory.recipe;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapedCraftingRecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
-public record GeyserShapedRecipe(int width, int height, Ingredient[] ingredients, @Nullable ItemStack result) implements GeyserRecipe {
+import java.util.List;
 
-//    public GeyserShapedRecipe(ShapedRecipeData data) {
-//        this(data.getWidth(), data.getHeight(), data.getIngredients(), data.getResult());
-//    }
+public record GeyserShapedRecipe(int width, int height, List<SlotDisplay> ingredients, @Nullable SlotDisplay result) implements GeyserRecipe {
+
+    public GeyserShapedRecipe(ShapedCraftingRecipeDisplay data) {
+        this(data.width(), data.height(), data.ingredients(), data.result());
+    }
 
     @Override
     public boolean isShaped() {
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
index 6b9e36956..90eeb01c9 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
@@ -26,14 +26,16 @@
 package org.geysermc.geyser.inventory.recipe;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapelessCraftingRecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
-public record GeyserShapelessRecipe(Ingredient[] ingredients, @Nullable ItemStack result) implements GeyserRecipe {
+import java.util.List;
 
-//    public GeyserShapelessRecipe(ShapelessRecipeData data) {
-//        this(data.getIngredients(), data.getResult());
-//    }
+public record GeyserShapelessRecipe(List<SlotDisplay> ingredients, @Nullable SlotDisplay result) implements GeyserRecipe {
+
+    public GeyserShapelessRecipe(ShapelessCraftingRecipeDisplay data) {
+        this(data.ingredients(), data.result());
+    }
 
     @Override
     public boolean isShaped() {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
index f061ed070..4cbd2ea47 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
@@ -31,8 +31,6 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtType;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
-import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
-import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
@@ -92,7 +90,7 @@ public abstract class RecipeRegistryLoader implements RegistryLoader<String, Map
             for (int i = 0; i < rawInputs.size(); i++) {
                 //javaInputs[i] = new Ingredient(new ItemStack[] {toItemStack(rawInputs.get(i), helper)});
             }
-            deserializedRecipes.add(new GeyserShapelessRecipe(javaInputs, output));
+            //deserializedRecipes.add(new GeyserShapelessRecipe(javaInputs, output));
         }
         return deserializedRecipes;
     }
@@ -118,7 +116,7 @@ public abstract class RecipeRegistryLoader implements RegistryLoader<String, Map
                     //inputs[i++] = new Ingredient(new ItemStack[] {stack});
                 }
             }
-            deserializedRecipes.add(new GeyserShapedRecipe(shape.size(), shape.get(0).length, inputs, output));
+            //deserializedRecipes.add(new GeyserShapedRecipe(shape.size(), shape.get(0).length, inputs, output));
         }
         return deserializedRecipes;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 25bfe19e7..7e55261f4 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -446,8 +446,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      */
     private final Int2ObjectMap<List<String>> javaToBedrockRecipeIds;
 
-    @Setter
-    private Int2ObjectMap<GeyserRecipe> craftingRecipes;
+    private final Int2ObjectMap<GeyserRecipe> craftingRecipes;
     private final AtomicInteger lastRecipeNetId;
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index f051885d4..15c19c542 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -25,21 +25,40 @@
 
 package org.geysermc.geyser.translator.inventory;
 
-import it.unimi.dsi.fastutil.ints.*;
+import it.unimi.dsi.fastutil.ints.Int2IntMap;
+import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import it.unimi.dsi.fastutil.ints.IntIterator;
+import it.unimi.dsi.fastutil.ints.IntLinkedOpenHashSet;
+import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
+import it.unimi.dsi.fastutil.ints.IntSet;
+import it.unimi.dsi.fastutil.ints.IntSortedSet;
 import lombok.AllArgsConstructor;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
-import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.*;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.AutoCraftRecipeAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.ConsumeAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.CraftResultsDeprecatedAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.DropAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.ItemStackRequestAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.SwapAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.TransferItemStackRequestAction;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponse;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponseContainer;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponseSlot;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponseStatus;
 import org.cloudburstmc.protocol.bedrock.packet.ItemStackResponsePacket;
 import org.geysermc.geyser.GeyserImpl;
-import org.geysermc.geyser.inventory.*;
+import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.CartographyContainer;
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.Inventory;
+import org.geysermc.geyser.inventory.PlayerInventory;
+import org.geysermc.geyser.inventory.SlotType;
 import org.geysermc.geyser.inventory.click.Click;
 import org.geysermc.geyser.inventory.click.ClickPlan;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
@@ -56,12 +75,17 @@ import org.geysermc.geyser.translator.inventory.furnace.SmokerInventoryTranslato
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.ItemUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @AllArgsConstructor
 public abstract class InventoryTranslator {
@@ -642,8 +666,8 @@ public abstract class InventoryTranslator {
         }
         int gridDimensions = gridSize == 4 ? 2 : 3;
 
-        Ingredient[] ingredients = new Ingredient[0];
-        ItemStack output = null;
+        List<SlotDisplay> ingredients = Collections.emptyList();
+        SlotDisplay output = null;
         int recipeWidth = 0;
         int ingRemaining = 0;
         int ingredientIndex = -1;
@@ -697,7 +721,7 @@ public abstract class InventoryTranslator {
                         ingredients = shapelessRecipe.ingredients();
                         recipeWidth = gridDimensions;
                         output = shapelessRecipe.result();
-                        if (ingredients.length > gridSize) {
+                        if (ingredients.size() > gridSize) {
                             return rejectRequest(request);
                         }
                     }
@@ -728,11 +752,11 @@ public abstract class InventoryTranslator {
                     craftState = CraftState.INGREDIENTS;
 
                     if (ingRemaining == 0) {
-                        while (++ingredientIndex < ingredients.length) {
-//                            if (ingredients[ingredientIndex].getOptions().length != 0) {
-//                                ingRemaining = timesCrafted;
-//                                break;
-//                            }
+                        while (++ingredientIndex < ingredients.size()) {
+                            if (!(ingredients.get(ingredientIndex) instanceof EmptySlotDisplay)) { // TODO I guess can technically other options be empty?
+                                ingRemaining = timesCrafted;
+                                break;
+                            }
                         }
                     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
similarity index 93%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
index 1a32c1a97..6cbefde0d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
@@ -42,7 +42,7 @@ import java.util.UUID;
 import static org.geysermc.geyser.util.InventoryUtils.LAST_RECIPE_NET_ID;
 
 @Translator(packet = ClientboundFinishConfigurationPacket.class)
-public class JavaFinishConfigurationPacketTranslator extends PacketTranslator<ClientboundFinishConfigurationPacket> {
+public class JavaFinishConfigurationTranslator extends PacketTranslator<ClientboundFinishConfigurationPacket> {
     /**
      * Required to use the specified cartography table recipes
      */
@@ -72,6 +72,9 @@ public class JavaFinishConfigurationPacketTranslator extends PacketTranslator<Cl
         craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
         if (session.isSentSpawnPacket()) {
             session.getUpstream().sendPacket(craftingDataPacket);
+            session.getCraftingRecipes().clear();
+            session.getJavaToBedrockRecipeIds().clear();
+            session.getStonecutterRecipes().clear();
         } else {
             session.getUpstream().queuePostStartGamePacket(craftingDataPacket);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 94dab5dea..da8fd01d3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -39,6 +39,9 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescri
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
 import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
+import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
+import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
+import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.BedrockRequiresTagItem;
 import org.geysermc.geyser.item.type.Item;
@@ -79,9 +82,10 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
 
     @Override
     public void translate(GeyserSession session, ClientboundRecipeBookAddPacket packet) {
-        //System.out.println(packet);
+        System.out.println(packet);
         int netId = session.getLastRecipeNetId().get();
         Int2ObjectMap<List<String>> javaToBedrockRecipeIds = session.getJavaToBedrockRecipeIds();
+        Int2ObjectMap<GeyserRecipe> geyserRecipes = session.getCraftingRecipes();
         CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
 
         UnlockedRecipesPacket recipesPacket = new UnlockedRecipesPacket();
@@ -101,14 +105,17 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     List<String> bedrockRecipeIds = new ArrayList<>();
                     ItemData output = bedrockRecipes.right();
                     List<List<ItemDescriptorWithCount>> left = bedrockRecipes.left();
+                    GeyserRecipe geyserRecipe = new GeyserShapedRecipe(shapedRecipe);
                     for (int i = 0; i < left.size(); i++) {
                         List<ItemDescriptorWithCount> inputs = left.get(i);
                         String recipeId = contents.id() + "_" + i;
+                        int recipeNetworkId = netId++;
                         craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
                             shapedRecipe.width(), shapedRecipe.height(), inputs,
-                            Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, false, RecipeUnlockingRequirement.INVALID));
+                            Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, recipeNetworkId, false, RecipeUnlockingRequirement.INVALID));
                         recipesPacket.getUnlockedRecipes().add(recipeId);
                         bedrockRecipeIds.add(recipeId);
+                        geyserRecipes.put(recipeNetworkId, geyserRecipe);
                     }
                     javaToBedrockRecipeIds.put(contents.id(), List.copyOf(bedrockRecipeIds));
                 }
@@ -121,13 +128,16 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     List<String> bedrockRecipeIds = new ArrayList<>();
                     ItemData output = bedrockRecipes.right();
                     List<List<ItemDescriptorWithCount>> left = bedrockRecipes.left();
+                    GeyserRecipe geyserRecipe = new GeyserShapelessRecipe(shapelessRecipe);
                     for (int i = 0; i < left.size(); i++) {
                         List<ItemDescriptorWithCount> inputs = left.get(i);
                         String recipeId = contents.id() + "_" + i;
+                        int recipeNetworkId = netId++;
                         craftingDataPacket.getCraftingData().add(ShapelessRecipeData.shapeless(recipeId,
-                            inputs, Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, netId++, RecipeUnlockingRequirement.INVALID));
+                            inputs, Collections.singletonList(output), UUID.randomUUID(), "crafting_table", 0, recipeNetworkId, RecipeUnlockingRequirement.INVALID));
                         recipesPacket.getUnlockedRecipes().add(recipeId);
                         bedrockRecipeIds.add(recipeId);
+                        geyserRecipes.put(recipeNetworkId, geyserRecipe);
                     }
                     javaToBedrockRecipeIds.put(contents.id(), List.copyOf(bedrockRecipeIds));
                 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index 743c07a31..c98ab1ff6 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -44,12 +44,15 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetSlotPacket;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
@@ -104,9 +107,6 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
      * Checks for a changed output slot in the crafting grid, and ensures Bedrock sees the recipe.
      */
     private static void updateCraftingGrid(GeyserSession session, int slot, ItemStack item, Inventory inventory, InventoryTranslator translator) {
-        if (true) {
-            return;
-        }
         // Check if it's the crafting grid result slot.
         if (slot != 0) {
             return;
@@ -166,14 +166,13 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
 
             ItemData[] ingredients = new ItemData[height * width];
             //construct ingredient list and clear slots on client
-            Ingredient[] javaIngredients = new Ingredient[height * width];
+            List<SlotDisplay> javaIngredients = new ArrayList<>(height * width);
             int index = 0;
             for (int row = firstRow; row < height + firstRow; row++) {
                 for (int col = firstCol; col < width + firstCol; col++) {
                     GeyserItemStack geyserItemStack = inventory.getItem(col + (row * gridDimensions) + 1);
                     ingredients[index] = geyserItemStack.getItemData(session);
-                    int[] items = new int[] {geyserItemStack.isEmpty() ? 0 : geyserItemStack.getJavaId()};
-                    javaIngredients[index] = new Ingredient(new HolderSet(items));
+                    javaIngredients.add(geyserItemStack.isEmpty() ? new EmptySlotDisplay() : new ItemStackSlotDisplay(geyserItemStack.getItemStack()));
 
                     InventorySlotPacket slotPacket = new InventorySlotPacket();
                     slotPacket.setContainerId(ContainerId.UI);
@@ -185,7 +184,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
             }
 
             // Cache this recipe so we know the client has received it
-            session.getCraftingRecipes().put(newRecipeId, new GeyserShapedRecipe(width, height, javaIngredients, item));
+            session.getCraftingRecipes().put(newRecipeId, new GeyserShapedRecipe(width, height, javaIngredients, new ItemStackSlotDisplay(item)));
 
             CraftingDataPacket craftPacket = new CraftingDataPacket();
             craftPacket.getCraftingData().add(ShapedRecipeData.shaped(
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 3b99d5e47..196a66c0a 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -51,6 +51,8 @@ import org.geysermc.geyser.level.BedrockDimension;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
@@ -59,15 +61,21 @@ import org.geysermc.geyser.translator.inventory.chest.DoubleChestInventoryTransl
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.CompositeSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
 import org.jetbrains.annotations.Contract;
 
-import java.util.Arrays;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.function.IntFunction;
@@ -441,6 +449,35 @@ public class InventoryUtils {
         };
     }
 
+    /**
+     * Returns if the provided item stack would be accepted by the slot display.
+     */
+    public static boolean acceptsAsInput(GeyserSession session, SlotDisplay slotDisplay, GeyserItemStack itemStack) {
+        if (slotDisplay instanceof EmptySlotDisplay) {
+            return itemStack.isEmpty();
+        }
+        if (slotDisplay instanceof CompositeSlotDisplay compositeSlotDisplay) {
+            if (compositeSlotDisplay.contents().size() == 1) {
+                return acceptsAsInput(session, compositeSlotDisplay.contents().get(0), itemStack);
+            }
+            return compositeSlotDisplay.contents().stream().anyMatch(aSlotDisplay -> acceptsAsInput(session, aSlotDisplay, itemStack));
+        }
+        if (slotDisplay instanceof ItemSlotDisplay itemSlotDisplay) {
+            return itemStack.getJavaId() == itemSlotDisplay.item();
+        }
+        if (slotDisplay instanceof ItemStackSlotDisplay itemStackSlotDisplay) {
+            ItemStack other = itemStackSlotDisplay.itemStack();
+            // Amount check might be flimsy?
+            return itemStack.getJavaId() == other.getId() && itemStack.getAmount() >= other.getAmount()
+                && Objects.equals(itemStack.getComponents(), other.getDataComponents());
+        }
+        if (slotDisplay instanceof TagSlotDisplay tagSlotDisplay) {
+            return session.getTagCache().is(new Tag<>(JavaRegistries.ITEM, tagSlotDisplay.tag()), itemStack.asItem());
+        }
+        session.getGeyser().getLogger().warning("Unknown slot display type: " + slotDisplay);
+        return false;
+    }
+
     /**
      * Test all known recipes to find a valid match
      *
@@ -462,91 +499,70 @@ public class InventoryUtils {
         for (GeyserRecipe recipe : session.getCraftingRecipes().values()) {
             if (recipe.isShaped()) {
                 GeyserShapedRecipe shapedRecipe = (GeyserShapedRecipe) recipe;
-                if (output != null && !shapedRecipe.result().equals(output)) {
+                if (output != null && !acceptsAsInput(session, shapedRecipe.result(), GeyserItemStack.from(output))) {
                     continue;
                 }
-                Ingredient[] ingredients = shapedRecipe.ingredients();
-                if (shapedRecipe.width() != width || shapedRecipe.height() != height || width * height != ingredients.length) {
+                List<SlotDisplay> ingredients = shapedRecipe.ingredients();
+                if (shapedRecipe.width() != width || shapedRecipe.height() != height || width * height != ingredients.size()) {
                     continue;
                 }
 
-                if (!testShapedRecipe(ingredients, inventoryGetter, gridDimensions, firstRow, height, firstCol, width)) {
-                    Ingredient[] mirroredIngredients = new Ingredient[ingredients.length];
+                if (!testShapedRecipe(session, ingredients, inventoryGetter, gridDimensions, firstRow, height, firstCol, width)) {
+                    List<SlotDisplay> mirroredIngredients = new ArrayList<>(ingredients.size());
                     for (int row = 0; row < height; row++) {
                         for (int col = 0; col < width; col++) {
-                            mirroredIngredients[col + (row * width)] = ingredients[(width - 1 - col) + (row * width)];
+                            mirroredIngredients.add(ingredients.get((width - 1 - col) + (row * width)));
                         }
                     }
 
-                    if (Arrays.equals(ingredients, mirroredIngredients) ||
-                            !testShapedRecipe(mirroredIngredients, inventoryGetter, gridDimensions, firstRow, height, firstCol, width)) {
+                    if (!ingredients.equals(mirroredIngredients) ||
+                            !testShapedRecipe(session, mirroredIngredients, inventoryGetter, gridDimensions, firstRow, height, firstCol, width)) {
                         continue;
                     }
                 }
             } else {
                 GeyserShapelessRecipe data = (GeyserShapelessRecipe) recipe;
-                if (output != null && !data.result().equals(output)) {
+                if (output != null && !acceptsAsInput(session, data.result(), GeyserItemStack.from(output))) {
                     continue;
                 }
-                if (nonAirCount != data.ingredients().length) {
+                if (nonAirCount != data.ingredients().size()) {
                     // There is an amount of items on the crafting table that is not the same as the ingredient count so this is invalid
                     continue;
                 }
-                for (int i = 0; i < data.ingredients().length; i++) {
-                    Ingredient ingredient = data.ingredients()[i];
-                    for (int item : ingredient.getValues().getHolders()) { // FIXME
-                        boolean inventoryHasItem = false;
-                        // Iterate only over the crafting table to find this item
-                        crafting:
-                        for (int row = firstRow; row < height + firstRow; row++) {
-                            for (int col = firstCol; col < width + firstCol; col++) {
-                                GeyserItemStack geyserItemStack = inventoryGetter.apply(col + (row * gridDimensions) + 1);
-                                if (geyserItemStack.isEmpty()) {
-                                    inventoryHasItem = item == 0;
-                                    if (inventoryHasItem) {
-                                        break crafting;
-                                    }
-                                } else if (item == geyserItemStack.getJavaId()) {
-                                    inventoryHasItem = true;
-                                    break crafting;
-                                }
+                for (int i = 0; i < data.ingredients().size(); i++) {
+                    SlotDisplay slotDisplay = data.ingredients().get(i);
+                    boolean inventoryHasItem = false;
+                    // Iterate only over the crafting table to find this item
+                    for (int row = firstRow; row < height + firstRow; row++) {
+                        for (int col = firstCol; col < width + firstCol; col++) {
+                            GeyserItemStack geyserItemStack = inventoryGetter.apply(col + (row * gridDimensions) + 1);
+                            if (acceptsAsInput(session, slotDisplay, geyserItemStack)) {
+                                inventoryHasItem = true;
+                                break;
                             }
                         }
-                        if (!inventoryHasItem) {
-                            continue recipes;
-                        }
+                    }
+                    if (!inventoryHasItem) {
+                        continue recipes;
                     }
                 }
             }
+            System.out.println("Found existing match for item: " + recipe);
             return recipe;
         }
         return null;
     }
 
     @SuppressWarnings("BooleanMethodIsAlwaysInverted")
-    private static boolean testShapedRecipe(final Ingredient[] ingredients, final IntFunction<GeyserItemStack> inventoryGetter,
+    private static boolean testShapedRecipe(final GeyserSession session, final List<SlotDisplay> ingredients, final IntFunction<GeyserItemStack> inventoryGetter,
                                             final int gridDimensions, final int firstRow, final int height, final int firstCol, final int width) {
         int ingredientIndex = 0;
         for (int row = firstRow; row < height + firstRow; row++) {
             for (int col = firstCol; col < width + firstCol; col++) {
                 GeyserItemStack geyserItemStack = inventoryGetter.apply(col + (row * gridDimensions) + 1);
-                Ingredient ingredient = ingredients[ingredientIndex++];
-                int[] items = ingredient.getValues().getHolders(); // FIXME
-                if (items.length == 0) {
-                    if (!geyserItemStack.isEmpty()) {
-                        return false;
-                    }
-                } else {
-                    boolean inventoryHasItem = false;
-                    for (int item : items) {
-                        if (geyserItemStack.getJavaId() == item) {
-                            inventoryHasItem = true;
-                            break;
-                        }
-                    }
-                    if (!inventoryHasItem) {
-                        return false;
-                    }
+                SlotDisplay slotDisplay = ingredients.get(ingredientIndex++);
+                if (!acceptsAsInput(session, slotDisplay, geyserItemStack)) {
+                    return false;
                 }
             }
         }

From 52679f9f8139a512eebdcf0ef177e29072833f7e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Tue, 29 Oct 2024 01:33:57 -0400
Subject: [PATCH 032/165] On-the-fly smithing transform recipes

---
 .../geyser/inventory/GeyserItemStack.java     |  7 ++
 .../recipe/GeyserSmithingRecipe.java          | 43 +++++++++
 .../geyser/session/GeyserSession.java         |  8 +-
 .../SmithingInventoryTranslator.java          | 29 +++---
 .../java/JavaRecipeBookAddTranslator.java     |  3 +
 .../JavaContainerSetSlotTranslator.java       | 89 +++++++++++++++++--
 6 files changed, 160 insertions(+), 19 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserSmithingRecipe.java

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index b4809edf2..a2797e6dd 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -182,6 +182,13 @@ public class GeyserItemStack {
         return session.getItemMappings().getMapping(this.javaId);
     }
 
+    public SlotDisplay asSlotDisplay() {
+        if (isEmpty()) {
+            return new EmptySlotDisplay();
+        }
+        return new ItemStackSlotDisplay(this.getItemStack());
+    }
+
     public Item asItem() {
         if (isEmpty()) {
             return Items.AIR;
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserSmithingRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserSmithingRecipe.java
new file mode 100644
index 000000000..7e4131a4c
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserSmithingRecipe.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.inventory.recipe;
+
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.SmithingRecipeDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
+
+public record GeyserSmithingRecipe(SlotDisplay template,
+                                   SlotDisplay base,
+                                   SlotDisplay addition,
+                                   SlotDisplay result) implements GeyserRecipe {
+    public GeyserSmithingRecipe(SmithingRecipeDisplay display) {
+        this(display.template(), display.base(), display.addition(), display.result());
+    }
+
+    @Override
+    public boolean isShaped() {
+        return false;
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 7e55261f4..ef8ad17ef 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -29,6 +29,7 @@ import com.google.gson.Gson;
 import com.google.gson.JsonObject;
 import io.netty.channel.Channel;
 import io.netty.channel.EventLoop;
+import it.unimi.dsi.fastutil.Pair;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
@@ -77,6 +78,7 @@ import org.cloudburstmc.protocol.bedrock.data.command.SoftEnumUpdateType;
 import org.cloudburstmc.protocol.bedrock.data.definitions.DimensionDefinition;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.CraftingRecipeData;
 import org.cloudburstmc.protocol.bedrock.packet.AvailableEntityIdentifiersPacket;
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.cloudburstmc.protocol.bedrock.packet.BiomeDefinitionListPacket;
@@ -141,6 +143,7 @@ import org.geysermc.geyser.impl.camera.GeyserCameraData;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.PlayerInventory;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
+import org.geysermc.geyser.inventory.recipe.GeyserSmithingRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserStonecutterData;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.BlockItem;
@@ -311,7 +314,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private final AtomicInteger itemNetId = new AtomicInteger(2);
 
     @Setter
-    private ScheduledFuture<?> craftingGridFuture;
+    private ScheduledFuture<?> containerOutputFuture;
 
     /**
      * Stores session collision
@@ -447,6 +450,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private final Int2ObjectMap<List<String>> javaToBedrockRecipeIds;
 
     private final Int2ObjectMap<GeyserRecipe> craftingRecipes;
+    @Setter
+    private Pair<CraftingRecipeData, GeyserRecipe> lastCreatedRecipe = null; // TODO try to prevent sending duplicate recipes
     private final AtomicInteger lastRecipeNetId;
 
     /**
@@ -455,6 +460,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      */
     @Setter
     private Int2ObjectMap<GeyserStonecutterData> stonecutterRecipes;
+    private final List<GeyserSmithingRecipe> smithingRecipes = new ArrayList<>();
 
     /**
      * Whether to work around 1.13's different behavior in villager trading menus.
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
index c68347fd3..dbe24230a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
@@ -33,6 +33,11 @@ import org.geysermc.geyser.inventory.updater.UIInventoryUpdater;
 import org.geysermc.geyser.level.block.Blocks;
 
 public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslator {
+    public static final int TEMPLATE = 0;
+    public static final int INPUT = 1;
+    public static final int MATERIAL = 2;
+    public static final int OUTPUT = 3;
+
     public SmithingInventoryTranslator() {
         super(4, Blocks.SMITHING_TABLE, ContainerType.SMITHING_TABLE, UIInventoryUpdater.INSTANCE);
     }
@@ -40,10 +45,10 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
         return switch (slotInfoData.getContainer()) {
-            case SMITHING_TABLE_TEMPLATE -> 0;
-            case SMITHING_TABLE_INPUT -> 1;
-            case SMITHING_TABLE_MATERIAL -> 2;
-            case SMITHING_TABLE_RESULT, CREATED_OUTPUT -> 3;
+            case SMITHING_TABLE_TEMPLATE -> TEMPLATE;
+            case SMITHING_TABLE_INPUT -> INPUT;
+            case SMITHING_TABLE_MATERIAL -> MATERIAL;
+            case SMITHING_TABLE_RESULT, CREATED_OUTPUT -> OUTPUT;
             default -> super.bedrockSlotToJava(slotInfoData);
         };
     }
@@ -51,10 +56,10 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato
     @Override
     public BedrockContainerSlot javaSlotToBedrockContainer(int slot) {
         return switch (slot) {
-            case 0 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_TEMPLATE, 53);
-            case 1 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_INPUT, 51);
-            case 2 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_MATERIAL, 52);
-            case 3 -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_RESULT, 50);
+            case TEMPLATE -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_TEMPLATE, 53);
+            case INPUT -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_INPUT, 51);
+            case MATERIAL -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_MATERIAL, 52);
+            case OUTPUT -> new BedrockContainerSlot(ContainerSlotType.SMITHING_TABLE_RESULT, 50);
             default -> super.javaSlotToBedrockContainer(slot);
         };
     }
@@ -62,10 +67,10 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato
     @Override
     public int javaSlotToBedrock(int slot) {
         return switch (slot) {
-            case 0 -> 53;
-            case 1 -> 51;
-            case 2 -> 52;
-            case 3 -> 50;
+            case TEMPLATE -> 53;
+            case INPUT -> 51;
+            case MATERIAL -> 52;
+            case OUTPUT -> 50;
             default -> super.javaSlotToBedrock(slot);
         };
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index da8fd01d3..f23ebebcb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -42,6 +42,7 @@ import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
+import org.geysermc.geyser.inventory.recipe.GeyserSmithingRecipe;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.BedrockRequiresTagItem;
 import org.geysermc.geyser.item.type.Item;
@@ -176,6 +177,8 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                         }
                     }
                     javaToBedrockRecipeIds.put(contents.id(), bedrockRecipeIds);
+                    session.getSmithingRecipes().add(new GeyserSmithingRecipe(smithingRecipe));
+                    System.out.println(new GeyserSmithingRecipe(smithingRecipe));
                 }
             }
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index c98ab1ff6..8f5fab1f9 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -29,6 +29,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
 import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
@@ -36,15 +37,17 @@ import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
+import org.geysermc.geyser.inventory.recipe.GeyserSmithingRecipe;
+import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.inventory.PlayerInventoryTranslator;
+import org.geysermc.geyser.translator.inventory.SmithingInventoryTranslator;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerSetSlotPacket;
@@ -83,7 +86,11 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                 return;
             }
 
-            updateCraftingGrid(session, slot, packet.getItem(), inventory, translator);
+            if (translator instanceof SmithingInventoryTranslator) {
+                updateSmithingTableOutput(session, slot, packet.getItem(), inventory);
+            } else {
+                updateCraftingGrid(session, slot, packet.getItem(), inventory, translator);
+            }
 
             GeyserItemStack newItem = GeyserItemStack.from(packet.getItem());
             if (packet.getContainerId() == 0 && !(translator instanceof PlayerInventoryTranslator)) {
@@ -119,15 +126,15 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
         }
 
         // Only process the most recent crafting grid result, and cancel the previous one.
-        if (session.getCraftingGridFuture() != null) {
-            session.getCraftingGridFuture().cancel(false);
+        if (session.getContainerOutputFuture() != null) {
+            session.getContainerOutputFuture().cancel(false);
         }
 
         if (InventoryUtils.isEmpty(item)) {
             return;
         }
 
-        session.setCraftingGridFuture(session.scheduleInEventLoop(() -> {
+        session.setContainerOutputFuture(session.scheduleInEventLoop(() -> {
             int offset = gridSize == 4 ? 28 : 32;
             int gridDimensions = gridSize == 4 ? 2 : 3;
             int firstRow = -1, height = -1;
@@ -172,7 +179,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
                 for (int col = firstCol; col < width + firstCol; col++) {
                     GeyserItemStack geyserItemStack = inventory.getItem(col + (row * gridDimensions) + 1);
                     ingredients[index] = geyserItemStack.getItemData(session);
-                    javaIngredients.add(geyserItemStack.isEmpty() ? new EmptySlotDisplay() : new ItemStackSlotDisplay(geyserItemStack.getItemStack()));
+                    javaIngredients.add(geyserItemStack.asSlotDisplay());
 
                     InventorySlotPacket slotPacket = new InventorySlotPacket();
                     slotPacket.setContainerId(ContainerId.UI);
@@ -216,4 +223,74 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
             }
         }, 150, TimeUnit.MILLISECONDS));
     }
+
+    private static void updateSmithingTableOutput(GeyserSession session, int slot, ItemStack output, Inventory inventory) {
+        if (slot != SmithingInventoryTranslator.OUTPUT) {
+            return;
+        }
+
+        // Only process the most recent output result, and cancel the previous one.
+        if (session.getContainerOutputFuture() != null) {
+            session.getContainerOutputFuture().cancel(false);
+        }
+
+        if (InventoryUtils.isEmpty(output)) {
+            return;
+        }
+
+        session.setContainerOutputFuture(session.scheduleInEventLoop(() -> {
+            GeyserItemStack template = inventory.getItem(SmithingInventoryTranslator.TEMPLATE);
+            if (template.asItem() != Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE) {
+                // Technically we should probably also do this for custom items, but last I checked Bedrock doesn't even support that.
+                return;
+            }
+
+            GeyserItemStack input = inventory.getItem(SmithingInventoryTranslator.INPUT);
+            GeyserItemStack material = inventory.getItem(SmithingInventoryTranslator.MATERIAL);
+            GeyserItemStack geyserOutput = GeyserItemStack.from(output);
+
+            for (GeyserSmithingRecipe recipe : session.getSmithingRecipes()) {
+                if (InventoryUtils.acceptsAsInput(session, recipe.result(), geyserOutput)
+                && InventoryUtils.acceptsAsInput(session, recipe.base(), input)
+                && InventoryUtils.acceptsAsInput(session, recipe.addition(), material)
+                && InventoryUtils.acceptsAsInput(session, recipe.template(), template)) {
+                    // The client already recognizes this item.
+                    return;
+                }
+            }
+
+            session.getSmithingRecipes().add(new GeyserSmithingRecipe(
+                template.asSlotDisplay(),
+                input.asSlotDisplay(),
+                material.asSlotDisplay(),
+                new ItemStackSlotDisplay(output)
+            ));
+
+            UUID uuid = UUID.randomUUID();
+
+            ItemData bedrockAddition = ItemTranslator.translateToBedrock(session, material.getItemStack());
+
+            CraftingDataPacket craftPacket = new CraftingDataPacket();
+            craftPacket.getCraftingData().add(SmithingTransformRecipeData.of(
+                uuid.toString(),
+                ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, template.getItemStack())),
+                ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, input.getItemStack())),
+                ItemDescriptorWithCount.fromItem(bedrockAddition),
+                ItemTranslator.translateToBedrock(session, output),
+                "smithing_table",
+                session.getLastRecipeNetId().incrementAndGet()
+            ));
+            craftPacket.setCleanRecipes(false);
+            session.sendUpstreamPacket(craftPacket);
+
+            // Just set one of the slots to air, then right back to its proper item.
+            InventorySlotPacket slotPacket = new InventorySlotPacket();
+            slotPacket.setContainerId(ContainerId.UI);
+            slotPacket.setSlot(session.getInventoryTranslator().javaSlotToBedrock(SmithingInventoryTranslator.MATERIAL));
+            slotPacket.setItem(ItemData.AIR);
+            session.sendUpstreamPacket(slotPacket);
+
+            session.getInventoryTranslator().updateSlot(session, inventory, SmithingInventoryTranslator.MATERIAL);
+        }, 150, TimeUnit.MILLISECONDS));
+    }
 }

From 8ba70f0fc83c9732f4c84cb52808e9a49e4aed41 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Tue, 29 Oct 2024 23:16:24 -0400
Subject: [PATCH 033/165] Implement remainder slot display recipes

---
 .../java/org/geysermc/geyser/entity/EntityDefinitions.java   | 1 +
 .../protocol/java/JavaFinishConfigurationTranslator.java     | 1 +
 .../protocol/java/JavaRecipeBookAddTranslator.java           | 5 +++++
 .../protocol/java/JavaSelectKnownPacksTranslator.java        | 3 ++-
 .../java/inventory/JavaContainerSetSlotTranslator.java       | 4 +---
 .../sound/block/ComparatorSoundInteractionTranslator.java    | 5 ++---
 .../sound/block/GrassPathInteractionTranslator.java          | 4 +---
 .../translator/sound/block/HoeInteractionTranslator.java     | 4 +---
 .../sound/block/LeverSoundInteractionTranslator.java         | 5 ++---
 .../sound/block/OpenableSoundInteractionTranslator.java      | 5 ++---
 .../main/java/org/geysermc/geyser/util/InventoryUtils.java   | 4 ++++
 11 files changed, 22 insertions(+), 19 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 1443a9443..62283f4df 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -858,6 +858,7 @@ public final class EntityDefinitions {
             SALMON = EntityDefinition.inherited(abstractFishEntityBase.factory(), abstractFishEntityBase)
                     .type(EntityType.SALMON)
                     .height(0.5f).width(0.7f)
+                    .addTranslator(null) // Scale/variant - TODO
                     .build();
             TADPOLE = EntityDefinition.inherited(TadpoleEntity::new, abstractFishEntityBase)
                     .type(EntityType.TADPOLE)
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
index 6cbefde0d..d73c2e2ed 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
@@ -74,6 +74,7 @@ public class JavaFinishConfigurationTranslator extends PacketTranslator<Clientbo
             session.getUpstream().sendPacket(craftingDataPacket);
             session.getCraftingRecipes().clear();
             session.getJavaToBedrockRecipeIds().clear();
+            session.getSmithingRecipes().clear();
             session.getStonecutterRecipes().clear();
         } else {
             session.getUpstream().queuePostStartGamePacket(craftingDataPacket);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index f23ebebcb..182a1b7d5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -67,6 +67,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSta
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SmithingTrimDemoSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.WithRemainderSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookAddPacket;
 
 import java.util.ArrayList;
@@ -208,6 +209,10 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 .flatMap(List::stream)
                 .toList();
         }
+        if (slotDisplay instanceof WithRemainderSlotDisplay remainder) {
+            // Don't need to worry about what will stay in the crafting table after crafting for the purposes of sending recipes to Bedrock
+            return translateToInput(session, remainder.input());
+        }
         if (slotDisplay instanceof ItemSlotDisplay itemSlot) {
             return Collections.singletonList(fromItem(session, itemSlot.item()));
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
index 9192beacf..5420bee90 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
@@ -40,7 +40,7 @@ import java.util.Set;
 @Translator(packet = ClientboundSelectKnownPacks.class)
 public class JavaSelectKnownPacksTranslator extends PacketTranslator<ClientboundSelectKnownPacks> {
     // todo: dump from client?
-    private static final Set<String> KNOWN_PACK_IDS = Set.of("core", "update_1_21", "bundle", "trade_rebalance");
+    private static final Set<String> KNOWN_PACK_IDS = Set.of("core", "winter_drop", "trade_rebalance", "redstone_experiments", "minecart_improvements");
 
     @Override
     public void translate(GeyserSession session, ClientboundSelectKnownPacks packet) {
@@ -62,6 +62,7 @@ public class JavaSelectKnownPacksTranslator extends PacketTranslator<Clientbound
 
     @Override
     public boolean shouldExecuteInEventLoop() {
+        // This technically isn't correct behavior, but it prevents race conditions between MCProtocolLib's packet handler and ours.
         return false;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index 8f5fab1f9..fa2e3a544 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -268,14 +268,12 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
 
             UUID uuid = UUID.randomUUID();
 
-            ItemData bedrockAddition = ItemTranslator.translateToBedrock(session, material.getItemStack());
-
             CraftingDataPacket craftPacket = new CraftingDataPacket();
             craftPacket.getCraftingData().add(SmithingTransformRecipeData.of(
                 uuid.toString(),
                 ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, template.getItemStack())),
                 ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, input.getItemStack())),
-                ItemDescriptorWithCount.fromItem(bedrockAddition),
+                ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, material.getItemStack())),
                 ItemTranslator.translateToBedrock(session, output),
                 "smithing_table",
                 session.getLastRecipeNetId().incrementAndGet()
diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/block/ComparatorSoundInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/block/ComparatorSoundInteractionTranslator.java
index 9d5d3cd59..745b51117 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/sound/block/ComparatorSoundInteractionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/sound/block/ComparatorSoundInteractionTranslator.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.translator.sound.block;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
+import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.sound.BlockSoundInteractionTranslator;
@@ -38,12 +39,10 @@ public class ComparatorSoundInteractionTranslator implements BlockSoundInteracti
 
     @Override
     public void translate(GeyserSession session, Vector3f position, BlockState state) {
-        String identifier = state.toString();
-        boolean powered = identifier.contains("mode=compare");
         LevelEventPacket levelEventPacket = new LevelEventPacket();
         levelEventPacket.setPosition(position);
         levelEventPacket.setType(LevelEvent.SOUND_CLICK); //TODO: New ID?
-        levelEventPacket.setData(powered ? 500 : 550);
+        levelEventPacket.setData(state.getValue(Properties.MODE_COMPARATOR).equals("compare") ? 500 : 550);
         session.sendUpstreamPacket(levelEventPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/block/GrassPathInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/block/GrassPathInteractionTranslator.java
index a25beaa50..d601d5561 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/sound/block/GrassPathInteractionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/sound/block/GrassPathInteractionTranslator.java
@@ -29,7 +29,6 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
 import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket;
 import org.geysermc.geyser.level.block.type.BlockState;
-import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.sound.BlockSoundInteractionTranslator;
 import org.geysermc.geyser.translator.sound.SoundTranslator;
@@ -39,14 +38,13 @@ public class GrassPathInteractionTranslator implements BlockSoundInteractionTran
 
     @Override
     public void translate(GeyserSession session, Vector3f position, BlockState state) {
-        String identifier = state.toString();
         LevelSoundEventPacket levelSoundEventPacket = new LevelSoundEventPacket();
         levelSoundEventPacket.setPosition(position);
         levelSoundEventPacket.setBabySound(false);
         levelSoundEventPacket.setRelativeVolumeDisabled(false);
         levelSoundEventPacket.setIdentifier(":");
         levelSoundEventPacket.setSound(SoundEvent.ITEM_USE_ON);
-        levelSoundEventPacket.setExtraData(session.getBlockMappings().getBedrockBlockId(BlockRegistries.JAVA_IDENTIFIER_TO_ID.get().getInt(identifier)));
+        levelSoundEventPacket.setExtraData(session.getBlockMappings().getBedrockBlockId(state.javaId()));
         session.sendUpstreamPacket(levelSoundEventPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/block/HoeInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/block/HoeInteractionTranslator.java
index 1a583ab8a..f30aa7493 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/sound/block/HoeInteractionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/sound/block/HoeInteractionTranslator.java
@@ -29,7 +29,6 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
 import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket;
 import org.geysermc.geyser.level.block.type.BlockState;
-import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.sound.BlockSoundInteractionTranslator;
 import org.geysermc.geyser.translator.sound.SoundTranslator;
@@ -39,14 +38,13 @@ public class HoeInteractionTranslator implements BlockSoundInteractionTranslator
 
     @Override
     public void translate(GeyserSession session, Vector3f position, BlockState state) {
-        String identifier = state.toString();
         LevelSoundEventPacket levelSoundEventPacket = new LevelSoundEventPacket();
         levelSoundEventPacket.setPosition(position);
         levelSoundEventPacket.setBabySound(false);
         levelSoundEventPacket.setRelativeVolumeDisabled(false);
         levelSoundEventPacket.setIdentifier(":");
         levelSoundEventPacket.setSound(SoundEvent.ITEM_USE_ON);
-        levelSoundEventPacket.setExtraData(session.getBlockMappings().getBedrockBlockId(BlockRegistries.JAVA_IDENTIFIER_TO_ID.get().getInt(identifier)));
+        levelSoundEventPacket.setExtraData(session.getBlockMappings().getBedrockBlockId(state.javaId()));
         session.sendUpstreamPacket(levelSoundEventPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/block/LeverSoundInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/block/LeverSoundInteractionTranslator.java
index fd045739c..2f596f6aa 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/sound/block/LeverSoundInteractionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/sound/block/LeverSoundInteractionTranslator.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.translator.sound.block;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
+import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.sound.BlockSoundInteractionTranslator;
@@ -38,12 +39,10 @@ public class LeverSoundInteractionTranslator implements BlockSoundInteractionTra
 
     @Override
     public void translate(GeyserSession session, Vector3f position, BlockState state) {
-        String identifier = state.toString();
-        boolean powered = identifier.contains("powered=true");
         LevelEventPacket levelEventPacket = new LevelEventPacket();
         levelEventPacket.setPosition(position);
         levelEventPacket.setType(LevelEvent.SOUND_CLICK);
-        levelEventPacket.setData(powered ? 600 : 500);
+        levelEventPacket.setData(state.getValue(Properties.POWERED) ? 600 : 500);
         session.sendUpstreamPacket(levelEventPacket);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java
index 93d55ca33..05a4804af 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/sound/block/OpenableSoundInteractionTranslator.java
@@ -26,10 +26,9 @@
 package org.geysermc.geyser.translator.sound.block;
 
 import org.cloudburstmc.math.vector.Vector3f;
-import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
-import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket;
+import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.sound.BlockSoundInteractionTranslator;
@@ -42,7 +41,7 @@ public class OpenableSoundInteractionTranslator implements BlockSoundInteraction
     public void translate(GeyserSession session, Vector3f position, BlockState state) {
         String identifier = state.toString();
         if (identifier.contains("iron")) return;
-        SoundEvent event = getSound(identifier.contains("open=true"), identifier);
+        SoundEvent event = getSound(state.getValue(Properties.OPEN, false), identifier);
         LevelSoundEventPacket levelSoundEventPacket = new LevelSoundEventPacket();
         levelSoundEventPacket.setPosition(position.add(0.5, 0.5, 0.5));
         levelSoundEventPacket.setBabySound(false);
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 196a66c0a..41b35d0db 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -67,6 +67,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlo
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemStackSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
+import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.WithRemainderSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
@@ -462,6 +463,9 @@ public class InventoryUtils {
             }
             return compositeSlotDisplay.contents().stream().anyMatch(aSlotDisplay -> acceptsAsInput(session, aSlotDisplay, itemStack));
         }
+        if (slotDisplay instanceof WithRemainderSlotDisplay remainderSlotDisplay) {
+            return acceptsAsInput(session, remainderSlotDisplay.input(), itemStack);
+        }
         if (slotDisplay instanceof ItemSlotDisplay itemSlotDisplay) {
             return itemStack.getJavaId() == itemSlotDisplay.item();
         }

From 74b25ea3a5f5e1e4ad45805140553b4c539837ee Mon Sep 17 00:00:00 2001
From: Tim203 <mctim203@gmail.com>
Date: Wed, 30 Oct 2024 10:41:00 +0100
Subject: [PATCH 034/165] Use deferred where needed instead of a load method on
 all registries (#5112)

* Use deferred where needed instead of a load method on all registries

* We don't have to load the registries, they're now safe to use for tests

* Renamed the deferred registries
---
 .../java/org/geysermc/geyser/GeyserImpl.java  |   1 -
 .../AbstractMappedDeferredRegistry.java       | 103 +++++++++++
 .../geyser/registry/BlockRegistries.java      |  20 +-
 .../geyser/registry/DeferredRegistry.java     |  72 ++-----
 .../geyser/registry/ListDeferredRegistry.java | 175 ++++++++++++++++++
 .../geyser/registry/ListRegistry.java         |  12 ++
 .../geysermc/geyser/registry/Registries.java  |  55 +++---
 .../geysermc/geyser/registry/Registry.java    |  15 +-
 .../registry/SimpleDeferredRegistry.java      | 119 ++++++++++++
 .../SimpleMappedDeferredRegistry.java         | 120 ++++++++++++
 .../registry/VersionedDeferredRegistry.java   | 114 ++++++++++++
 .../registry/loader/RegistryLoaderHolder.java |  33 ----
 .../network/util/GeyserMockContext.java       |   6 -
 13 files changed, 689 insertions(+), 156 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/AbstractMappedDeferredRegistry.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/ListDeferredRegistry.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/SimpleDeferredRegistry.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/SimpleMappedDeferredRegistry.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/VersionedDeferredRegistry.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java

diff --git a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
index f679b412c..0a8222f8d 100644
--- a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
@@ -236,7 +236,6 @@ public class GeyserImpl implements GeyserApi, EventRegistrar {
         Both the block registries and the common registries depend on each other,
         so maintaining this order is crucial for Geyser to load.
          */
-        BlockRegistries.load();
         Registries.load();
         BlockRegistries.populate();
         Registries.populate();
diff --git a/core/src/main/java/org/geysermc/geyser/registry/AbstractMappedDeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/AbstractMappedDeferredRegistry.java
new file mode 100644
index 000000000..2506bb873
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/AbstractMappedDeferredRegistry.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry;
+
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.geysermc.geyser.registry.loader.RegistryLoader;
+
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public abstract class AbstractMappedDeferredRegistry<K, V, M extends Map<K, V>, R extends AbstractMappedRegistry<K, V, M>> extends DeferredRegistry<M, R> {
+    protected <I> AbstractMappedDeferredRegistry(Function<RegistryLoader<I, M>, R> registryLoader, RegistryLoader<I, M> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> AbstractMappedDeferredRegistry(Function<RegistryLoader<I, M>, R> registryLoader, Supplier<RegistryLoader<I, M>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> AbstractMappedDeferredRegistry(I input, RegistryInitializer<M, R> registryInitializer, RegistryLoader<I, M> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    protected <I> AbstractMappedDeferredRegistry(I input, RegistryInitializer<M, R> registryInitializer, Supplier<RegistryLoader<I, M>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Returns the value registered by the given key.
+     *
+     * @param key the key
+     * @return the value registered by the given key.
+     */
+    public @Nullable V get(K key) {
+        return get().get(key);
+    }
+
+    /**
+     * Returns and maps the value by the given key if present.
+     *
+     * @param key the key
+     * @param mapper the mapper
+     * @param <U> the type
+     * @return the mapped value from the given key if present
+     */
+    public <U> Optional<U> map(K key, Function<? super V, ? extends U> mapper) {
+        V value = this.get(key);
+        if (value == null) {
+            return Optional.empty();
+        } else {
+            return Optional.ofNullable(mapper.apply(value));
+        }
+    }
+
+    /**
+     * Returns the value registered by the given key or the default value
+     * specified if null.
+     *
+     * @param key the key
+     * @param defaultValue the default value
+     * @return the value registered by the given key or the default value
+     *         specified if null.
+     */
+    public V getOrDefault(K key, V defaultValue) {
+        return get().getOrDefault(key, defaultValue);
+    }
+
+    /**
+     * Registers a new value into this registry with the given key.
+     *
+     * @param key the key
+     * @param value the value
+     * @return a new value into this registry with the given key.
+     */
+    public V register(K key, V value) {
+        return get().put(key, value);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
index b7c5e2d07..521d67542 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
@@ -69,7 +69,7 @@ public class BlockRegistries {
     /**
      * A mapped registry containing which holds block IDs to its {@link BlockCollision}.
      */
-    public static final ListRegistry<BlockCollision> COLLISIONS = ListRegistry.create(Pair.of("org.geysermc.geyser.translator.collision.CollisionRemapper", "mappings/collisions.nbt"), CollisionRegistryLoader::new);
+    public static final ListDeferredRegistry<BlockCollision> COLLISIONS = ListDeferredRegistry.create(Pair.of("org.geysermc.geyser.translator.collision.CollisionRemapper", "mappings/collisions.nbt"), CollisionRegistryLoader::new);
 
     /**
      * A registry which stores Java IDs to {@link Block}, containing miscellaneous information about
@@ -130,23 +130,6 @@ public class BlockRegistries {
      */
     public static final SimpleMappedRegistry<String, CustomSkull> CUSTOM_SKULLS = SimpleMappedRegistry.create(RegistryLoaders.empty(Object2ObjectOpenHashMap::new));
 
-    public static void load() {
-        BLOCKS.load();
-        BLOCK_STATES.load();
-        // collisions are loaded later, because they are initialized later
-        JAVA_BLOCKS.load();
-        JAVA_IDENTIFIER_TO_ID.load();
-        WATERLOGGED.load();
-        INTERACTIVE.load();
-        INTERACTIVE_MAY_BUILD.load();
-        CUSTOM_BLOCKS.load();
-        CUSTOM_BLOCK_STATE_OVERRIDES.load();
-        NON_VANILLA_BLOCK_STATE_OVERRIDES.load();
-        CUSTOM_BLOCK_ITEM_OVERRIDES.load();
-        EXTENDED_COLLISION_BOXES.load();
-        CUSTOM_SKULLS.load();
-    }
-
     public static void populate() {
         Blocks.VAULT.javaId(); // FIXME
         CustomSkullRegistryPopulator.populate();
@@ -160,5 +143,4 @@ public class BlockRegistries {
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_BEDROCK);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.POST_INIT);
     }
-
 }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java
index ce77261ae..f4273edea 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/DeferredRegistry.java
@@ -43,32 +43,36 @@ import java.util.function.Supplier;
  *
  * @param <M> the value being held by the registry
  */
-public final class DeferredRegistry<M> implements IRegistry<M> {
-    private final Registry<M> backingRegistry;
+class DeferredRegistry<M, R extends IRegistry<M>> implements IRegistry<M> {
+    private final R backingRegistry;
     private final Supplier<M> loader;
 
     private boolean loaded;
 
-    private <I> DeferredRegistry(Function<RegistryLoader<I, M>, Registry<M>> registryLoader, RegistryLoader<I, M> deferredLoader) {
+    protected <I> DeferredRegistry(Function<RegistryLoader<I, M>, R> registryLoader, RegistryLoader<I, M> deferredLoader) {
         this.backingRegistry = registryLoader.apply(RegistryLoaders.uninitialized());
         this.loader = () -> deferredLoader.load(null);
     }
 
-    private <I> DeferredRegistry(Function<RegistryLoader<I, M>, Registry<M>> registryLoader, Supplier<RegistryLoader<I, M>> deferredLoader) {
+    protected <I> DeferredRegistry(Function<RegistryLoader<I, M>, R> registryLoader, Supplier<RegistryLoader<I, M>> deferredLoader) {
         this.backingRegistry = registryLoader.apply(RegistryLoaders.uninitialized());
         this.loader = () -> deferredLoader.get().load(null);
     }
 
-    private <I> DeferredRegistry(I input, RegistryInitializer<M> registryInitializer, RegistryLoader<I, M> deferredLoader) {
+    protected <I> DeferredRegistry(I input, RegistryInitializer<M, R> registryInitializer, RegistryLoader<I, M> deferredLoader) {
         this.backingRegistry = registryInitializer.initialize(input, RegistryLoaders.uninitialized());
         this.loader = () -> deferredLoader.load(input);
     }
 
-    private <I> DeferredRegistry(I input, RegistryInitializer<M> registryInitializer, Supplier<RegistryLoader<I, M>> deferredLoader) {
+    protected <I> DeferredRegistry(I input, RegistryInitializer<M, R> registryInitializer, Supplier<RegistryLoader<I, M>> deferredLoader) {
         this.backingRegistry = registryInitializer.initialize(input, RegistryLoaders.uninitialized());
         this.loader = () -> deferredLoader.get().load(input);
     }
 
+    protected R backingRegistry() {
+        return this.backingRegistry;
+    }
+
     /**
      * Gets the underlying value held by this registry.
      *
@@ -119,64 +123,12 @@ public final class DeferredRegistry<M> implements IRegistry<M> {
         return this.loaded;
     }
 
-    /**
-     * Creates a new deferred registry.
-     *
-     * @param registryLoader the registry loader
-     * @param deferredLoader the deferred loader
-     * @param <I> the input type
-     * @param <M> the registry type
-     * @return the new deferred registry
-     */
-    public static <I, M> DeferredRegistry<M> create(Function<RegistryLoader<I, M>, Registry<M>> registryLoader, RegistryLoader<I, M> deferredLoader) {
-        return new DeferredRegistry<>(registryLoader, deferredLoader);
-    }
-
-    /**
-     * Creates a new deferred registry.
-     *
-     * @param registryLoader the registry loader
-     * @param deferredLoader the deferred loader
-     * @param <I> the input type
-     * @param <M> the registry type
-     * @return the new deferred registry
-     */
-    public static <I, M> DeferredRegistry<M> create(Function<RegistryLoader<I, M>, Registry<M>> registryLoader, Supplier<RegistryLoader<I, M>> deferredLoader) {
-        return new DeferredRegistry<>(registryLoader, deferredLoader);
-    }
-
-    /**
-     * Creates a new deferred registry.
-     *
-     * @param registryInitializer the registry initializer
-     * @param deferredLoader the deferred loader
-     * @param <I> the input type
-     * @param <M> the registry type
-     * @return the new deferred registry
-     */
-    public static <I, M> DeferredRegistry<M> create(I input, RegistryInitializer<M> registryInitializer, RegistryLoader<I, M> deferredLoader) {
-        return new DeferredRegistry<>(input, registryInitializer, deferredLoader);
-    }
-
-    /**
-     * Creates a new deferred registry.
-     *
-     * @param registryInitializer the registry initializer
-     * @param deferredLoader the deferred loader
-     * @param <I> the input type
-     * @param <M> the registry type
-     * @return the new deferred registry
-     */
-    public static <I, M> DeferredRegistry<M> create(I input, RegistryInitializer<M> registryInitializer, Supplier<RegistryLoader<I, M>> deferredLoader) {
-        return new DeferredRegistry<>(input, registryInitializer, deferredLoader);
-    }
-
     /**
      * A registry initializer.
      *
      * @param <M> the registry type
      */
-    interface RegistryInitializer<M> {
+    public interface RegistryInitializer<M, R extends IRegistry<M>> {
 
         /**
          * Initializes the registry.
@@ -186,6 +138,6 @@ public final class DeferredRegistry<M> implements IRegistry<M> {
          * @param <I> the input type
          * @return the initialized registry
          */
-        <I> Registry<M> initialize(I input, RegistryLoader<I, M> registryLoader);
+        <I> R initialize(I input, RegistryLoader<I, M> registryLoader);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/ListDeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/ListDeferredRegistry.java
new file mode 100644
index 000000000..91dc74eb7
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/ListDeferredRegistry.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry;
+
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.geysermc.geyser.registry.loader.RegistryLoader;
+
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class ListDeferredRegistry<V> extends DeferredRegistry<List<V>, ListRegistry<V>> {
+    protected <I> ListDeferredRegistry(Function<RegistryLoader<I, List<V>>, ListRegistry<V>> registryLoader, RegistryLoader<I, List<V>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> ListDeferredRegistry(Function<RegistryLoader<I, List<V>>, ListRegistry<V>> registryLoader, Supplier<RegistryLoader<I, List<V>>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> ListDeferredRegistry(I input, RegistryInitializer<List<V>, ListRegistry<V>> registryInitializer, RegistryLoader<I, List<V>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    protected <I> ListDeferredRegistry(I input, RegistryInitializer<List<V>, ListRegistry<V>> registryInitializer, Supplier<RegistryLoader<I, List<V>>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+    /**
+     * Returns the value registered by the given index.
+     *
+     * @param index the index
+     * @return the value registered by the given index.
+     */
+    @Nullable
+    public V get(int index) {
+        return backingRegistry().get(index);
+    }
+
+    /**
+     * Returns the value registered by the given index or the default value
+     * specified if null.
+     *
+     * @param index the index
+     * @param defaultValue the default value
+     * @return the value registered by the given key or the default value
+     *         specified if null.
+     */
+    public V getOrDefault(int index, V defaultValue) {
+        return backingRegistry().getOrDefault(index, defaultValue);
+    }
+
+    /**
+     * Registers a new value into this registry with the given index.
+     *
+     * @param index the index
+     * @param value the value
+     * @return a new value into this registry with the given index.
+     */
+    public V register(int index, V value) {
+        return backingRegistry().register(index, value);
+    }
+
+    /**
+     * Registers a new value into this registry with the given index, even if this value would normally be outside
+     * the range of a list.
+     *
+     * @param index the index
+     * @param value the value
+     * @param defaultValue the default value to fill empty spaces in the registry with.
+     * @return a new value into this registry with the given index.
+     */
+    public V registerWithAnyIndex(int index, V value, V defaultValue) {
+        return backingRegistry().registerWithAnyIndex(index, value, defaultValue);
+    }
+
+    /**
+     * Mark this registry as unsuitable for new additions. The backing list will then be optimized for storage.
+     */
+    public void freeze() {
+        backingRegistry().freeze();
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> ListDeferredRegistry<V> create(Function<RegistryLoader<I, List<V>>, ListRegistry<V>> registryLoader, RegistryLoader<I, List<V>> deferredLoader) {
+        return new ListDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> ListDeferredRegistry<V> create(Function<RegistryLoader<I, List<V>>, ListRegistry<V>> registryLoader, Supplier<RegistryLoader<I, List<V>>> deferredLoader) {
+        return new ListDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> ListDeferredRegistry<V> create(I input, RegistryInitializer<List<V>, ListRegistry<V>> registryInitializer, RegistryLoader<I, List<V>> deferredLoader) {
+        return new ListDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> ListDeferredRegistry<V> create(I input, RegistryInitializer<List<V>, ListRegistry<V>> registryInitializer, Supplier<RegistryLoader<I, List<V>>> deferredLoader) {
+        return new ListDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> ListDeferredRegistry<V> create(I input, RegistryLoader<I, List<V>> deferredLoader) {
+        return create(input, ListRegistry::create, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> ListDeferredRegistry<V> create(I input, Supplier<RegistryLoader<I, List<V>>> deferredLoader) {
+        return create(input, ListRegistry::create, deferredLoader);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/ListRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/ListRegistry.java
index 2070d67ae..d1d3d7af0 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/ListRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/ListRegistry.java
@@ -140,6 +140,18 @@ public class ListRegistry<M> extends Registry<List<M>> {
         return new ListRegistry<>(null, registryLoader);
     }
 
+    /**
+     * Creates a new integer mapped registry with the given {@link RegistryLoader} and input.
+     *
+     * @param registryLoader the registry loader
+     * @param <I> the input
+     * @param <M> the type value
+     * @return a new registry with the given RegistryLoader
+     */
+    public static <I, M> ListRegistry<M> create(I input, RegistryLoader<I, List<M>> registryLoader) {
+        return new ListRegistry<>(input, registryLoader);
+    }
+
     /**
      * Creates a new integer mapped registry with the given {@link RegistryLoader} and input.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index b86ea3bbf..0d286d5c3 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -37,10 +37,18 @@ import org.geysermc.geyser.api.pack.ResourcePack;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
 import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.loader.*;
+import org.geysermc.geyser.registry.loader.BiomeIdentifierRegistryLoader;
+import org.geysermc.geyser.registry.loader.BlockEntityRegistryLoader;
+import org.geysermc.geyser.registry.loader.ParticleTypesRegistryLoader;
+import org.geysermc.geyser.registry.loader.PotionMixRegistryLoader;
+import org.geysermc.geyser.registry.loader.ProviderRegistryLoader;
+import org.geysermc.geyser.registry.loader.RecipeRegistryLoader;
+import org.geysermc.geyser.registry.loader.RegistryLoaders;
+import org.geysermc.geyser.registry.loader.SoundEventsRegistryLoader;
+import org.geysermc.geyser.registry.loader.SoundRegistryLoader;
+import org.geysermc.geyser.registry.loader.SoundTranslatorRegistryLoader;
 import org.geysermc.geyser.registry.populator.ItemRegistryPopulator;
 import org.geysermc.geyser.registry.populator.PacketRegistryPopulator;
-import org.geysermc.geyser.registry.loader.RecipeRegistryLoader;
 import org.geysermc.geyser.registry.provider.ProviderSupplier;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.registry.type.ParticleMapping;
@@ -56,7 +64,13 @@ import org.geysermc.mcprotocollib.protocol.data.game.level.event.LevelEvent;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.RecipeType;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.EnumMap;
+import java.util.HashSet;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * Holds all the common registries in Geyser.
@@ -73,7 +87,7 @@ public final class Registries {
     /**
      * A registry holding a NbtMap of the known entity identifiers.
      */
-    public static final SimpleRegistry<NbtMap> BEDROCK_ENTITY_IDENTIFIERS = SimpleRegistry.create("bedrock/entity_identifiers.dat", RegistryLoaders.NBT);
+    public static final SimpleDeferredRegistry<NbtMap> BEDROCK_ENTITY_IDENTIFIERS = SimpleDeferredRegistry.create("bedrock/entity_identifiers.dat", RegistryLoaders.NBT);
 
     /**
      * A registry containing all the Bedrock packet translators.
@@ -83,17 +97,17 @@ public final class Registries {
     /**
      * A registry holding a NbtMap of all the known biomes.
      */
-    public static final SimpleRegistry<NbtMap> BIOMES_NBT = SimpleRegistry.create("bedrock/biome_definitions.dat", RegistryLoaders.NBT);
+    public static final SimpleDeferredRegistry<NbtMap> BIOMES_NBT = SimpleDeferredRegistry.create("bedrock/biome_definitions.dat", RegistryLoaders.NBT);
 
     /**
      * A mapped registry which stores Java biome identifiers and their Bedrock biome identifier.
      */
-    public static final SimpleRegistry<Object2IntMap<String>> BIOME_IDENTIFIERS = SimpleRegistry.create("mappings/biomes.json", BiomeIdentifierRegistryLoader::new);
+    public static final SimpleDeferredRegistry<Object2IntMap<String>> BIOME_IDENTIFIERS = SimpleDeferredRegistry.create("mappings/biomes.json", BiomeIdentifierRegistryLoader::new);
 
     /**
      * A mapped registry which stores a block entity identifier to its {@link BlockEntityTranslator}.
      */
-    public static final SimpleMappedRegistry<BlockEntityType, BlockEntityTranslator> BLOCK_ENTITIES = SimpleMappedRegistry.create("org.geysermc.geyser.translator.level.block.entity.BlockEntity", BlockEntityRegistryLoader::new);
+    public static final SimpleMappedDeferredRegistry<BlockEntityType, BlockEntityTranslator> BLOCK_ENTITIES = SimpleMappedDeferredRegistry.create("org.geysermc.geyser.translator.level.block.entity.BlockEntity", BlockEntityRegistryLoader::new);
 
     /**
      * A map containing all entity types and their respective Geyser definitions
@@ -135,55 +149,50 @@ public final class Registries {
      * A mapped registry holding the {@link ParticleType} to a corresponding {@link ParticleMapping}, containing various pieces of
      * data primarily for how Bedrock should handle the particle.
      */
-    public static final SimpleMappedRegistry<ParticleType, ParticleMapping> PARTICLES = SimpleMappedRegistry.create("mappings/particles.json", ParticleTypesRegistryLoader::new);
+    public static final SimpleMappedDeferredRegistry<ParticleType, ParticleMapping> PARTICLES = SimpleMappedDeferredRegistry.create("mappings/particles.json", ParticleTypesRegistryLoader::new);
 
     /**
      * A registry holding all the potion mixes.
      */
-    public static final VersionedRegistry<Set<PotionMixData>> POTION_MIXES = VersionedRegistry.create(PotionMixRegistryLoader::new);
+    public static final VersionedDeferredRegistry<Set<PotionMixData>> POTION_MIXES = VersionedDeferredRegistry.create(VersionedRegistry::create, PotionMixRegistryLoader::new);
 
     /**
      * A versioned registry holding all the recipes, with the net ID being the key, and {@link GeyserRecipe} as the value.
      */
-    public static final SimpleMappedRegistry<RecipeType, List<GeyserRecipe>> RECIPES = SimpleMappedRegistry.create("mappings/recipes.nbt", RecipeRegistryLoader::new);
+    public static final SimpleMappedDeferredRegistry<RecipeType, List<GeyserRecipe>> RECIPES = SimpleMappedDeferredRegistry.create("mappings/recipes.nbt", RecipeRegistryLoader::new);
 
     /**
      * A mapped registry holding {@link ResourcePack}'s with the pack uuid as keys.
      */
-    public static final DeferredRegistry<Map<String, ResourcePack>> RESOURCE_PACKS = DeferredRegistry.create(GeyserImpl.getInstance().packDirectory(), SimpleMappedRegistry::create, RegistryLoaders.RESOURCE_PACKS);
+    public static final SimpleMappedDeferredRegistry<String, ResourcePack> RESOURCE_PACKS = SimpleMappedDeferredRegistry.create(GeyserImpl.getInstance().packDirectory(), RegistryLoaders.RESOURCE_PACKS);
 
     /**
      * A mapped registry holding sound identifiers to their corresponding {@link SoundMapping}.
      */
-    public static final SimpleMappedRegistry<String, SoundMapping> SOUNDS = SimpleMappedRegistry.create("mappings/sounds.json", SoundRegistryLoader::new);
+    public static final SimpleMappedDeferredRegistry<String, SoundMapping> SOUNDS = SimpleMappedDeferredRegistry.create("mappings/sounds.json", SoundRegistryLoader::new);
 
     /**
      * A mapped registry holding {@link LevelEvent}s to their corresponding {@link LevelEventTranslator}.
      */
-    public static final SimpleMappedRegistry<LevelEvent, LevelEventTranslator> SOUND_LEVEL_EVENTS = SimpleMappedRegistry.create("mappings/effects.json", SoundEventsRegistryLoader::new);
+    public static final SimpleMappedDeferredRegistry<LevelEvent, LevelEventTranslator> SOUND_LEVEL_EVENTS = SimpleMappedDeferredRegistry.create("mappings/effects.json", SoundEventsRegistryLoader::new);
 
     /**
      * A mapped registry holding {@link SoundTranslator}s to their corresponding {@link SoundInteractionTranslator}.
      */
-    public static final SimpleMappedRegistry<SoundTranslator, SoundInteractionTranslator<?>> SOUND_TRANSLATORS = SimpleMappedRegistry.create("org.geysermc.geyser.translator.sound.SoundTranslator", SoundTranslatorRegistryLoader::new);
+    public static final SimpleMappedDeferredRegistry<SoundTranslator, SoundInteractionTranslator<?>> SOUND_TRANSLATORS = SimpleMappedDeferredRegistry.create("org.geysermc.geyser.translator.sound.SoundTranslator", SoundTranslatorRegistryLoader::new);
 
     public static void load() {
         if (loaded) return;
         loaded = true;
 
-        PROVIDERS.load();
+        // the following registries are registries that are more complicated than initializing as an empty collection.
+        // They generally have in common that they either depend on loading a resource file directly or indirectly
+        // (by using the Items or Blocks class, which loads all the blocks)
+
         BEDROCK_ENTITY_IDENTIFIERS.load();
-        BEDROCK_PACKET_TRANSLATORS.load();
         BIOMES_NBT.load();
         BIOME_IDENTIFIERS.load();
         BLOCK_ENTITIES.load();
-        ENTITY_DEFINITIONS.load();
-        BEDROCK_ENTITY_PROPERTIES.load();
-        JAVA_ENTITY_IDENTIFIERS.load();
-        JAVA_PACKET_TRANSLATORS.load();
-        JAVA_ITEMS.load();
-        JAVA_ITEM_IDENTIFIERS.load();
-        ITEMS.load();
         PARTICLES.load();
         // load potion mixes later
         RECIPES.load();
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registry.java b/core/src/main/java/org/geysermc/geyser/registry/Registry.java
index 4e83a3c2e..8a82af053 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registry.java
@@ -27,7 +27,6 @@ package org.geysermc.geyser.registry;
 
 import java.util.function.Consumer;
 import org.geysermc.geyser.registry.loader.RegistryLoader;
-import org.geysermc.geyser.registry.loader.RegistryLoaderHolder;
 
 /**
  * A wrapper around a value which is loaded based on the output from the provided
@@ -63,9 +62,7 @@ import org.geysermc.geyser.registry.loader.RegistryLoaderHolder;
  *
  * @param <M> the value being held by the registry
  */
-@SuppressWarnings("rawtypes")
 public abstract class Registry<M> implements IRegistry<M> {
-    protected RegistryLoaderHolder loaderHolder;
     protected M mappings;
 
     /**
@@ -78,17 +75,7 @@ public abstract class Registry<M> implements IRegistry<M> {
      * @param <I> the input type
      */
     protected <I> Registry(I input, RegistryLoader<I, M> registryLoader) {
-        this.loaderHolder = new RegistryLoaderHolder<>(input, registryLoader);
-    }
-
-    public void load() {
-        // don't load twice
-        if (this.mappings != null) return;
-
-        var holder = this.loaderHolder;
-        this.loaderHolder = null;
-        //noinspection unchecked
-        this.mappings = (M) holder.registryLoader().load(holder.input());
+        this.mappings = registryLoader.load(input);
     }
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/registry/SimpleDeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/SimpleDeferredRegistry.java
new file mode 100644
index 000000000..cdbd985be
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/SimpleDeferredRegistry.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry;
+
+import org.geysermc.geyser.registry.loader.RegistryLoader;
+
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class SimpleDeferredRegistry<V> extends DeferredRegistry<V, SimpleRegistry<V>> {
+    protected <I> SimpleDeferredRegistry(Function<RegistryLoader<I, V>, SimpleRegistry<V>> registryLoader, RegistryLoader<I, V> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> SimpleDeferredRegistry(Function<RegistryLoader<I, V>, SimpleRegistry<V>> registryLoader, Supplier<RegistryLoader<I, V>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> SimpleDeferredRegistry(I input, RegistryInitializer<V, SimpleRegistry<V>> registryInitializer, RegistryLoader<I, V> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    protected <I> SimpleDeferredRegistry(I input, RegistryInitializer<V, SimpleRegistry<V>> registryInitializer, Supplier<RegistryLoader<I, V>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> SimpleDeferredRegistry<V> create(Function<RegistryLoader<I, V>, SimpleRegistry<V>> registryLoader, RegistryLoader<I, V> deferredLoader) {
+        return new SimpleDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> SimpleDeferredRegistry<V> create(Function<RegistryLoader<I, V>, SimpleRegistry<V>> registryLoader, Supplier<RegistryLoader<I, V>> deferredLoader) {
+        return new SimpleDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> SimpleDeferredRegistry<V> create(I input, RegistryInitializer<V, SimpleRegistry<V>> registryInitializer, RegistryLoader<I, V> deferredLoader) {
+        return new SimpleDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> SimpleDeferredRegistry<V> create(I input, RegistryInitializer<V, SimpleRegistry<V>> registryInitializer, Supplier<RegistryLoader<I, V>> deferredLoader) {
+        return new SimpleDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> SimpleDeferredRegistry<V> create(I input, RegistryLoader<I, V> deferredLoader) {
+        return create(input, SimpleRegistry::create, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> SimpleDeferredRegistry<V> create(I input, Supplier<RegistryLoader<I, V>> deferredLoader) {
+        return create(input, SimpleRegistry::create, deferredLoader);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/SimpleMappedDeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/SimpleMappedDeferredRegistry.java
new file mode 100644
index 000000000..6a837c9e0
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/SimpleMappedDeferredRegistry.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry;
+
+import org.geysermc.geyser.registry.loader.RegistryLoader;
+
+import java.util.Map;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class SimpleMappedDeferredRegistry<K, V> extends AbstractMappedDeferredRegistry<K, V, Map<K, V>, SimpleMappedRegistry<K, V>> {
+    protected <I> SimpleMappedDeferredRegistry(Function<RegistryLoader<I, Map<K, V>>, SimpleMappedRegistry<K, V>> registryLoader, RegistryLoader<I, Map<K, V>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> SimpleMappedDeferredRegistry(Function<RegistryLoader<I, Map<K, V>>, SimpleMappedRegistry<K, V>> registryLoader, Supplier<RegistryLoader<I, Map<K, V>>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> SimpleMappedDeferredRegistry(I input, RegistryInitializer<Map<K, V>, SimpleMappedRegistry<K, V>> registryInitializer, RegistryLoader<I, Map<K, V>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    protected <I> SimpleMappedDeferredRegistry(I input, RegistryInitializer<Map<K, V>, SimpleMappedRegistry<K, V>> registryInitializer, Supplier<RegistryLoader<I, Map<K, V>>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, K, V> SimpleMappedDeferredRegistry<K, V> create(Function<RegistryLoader<I, Map<K, V>>, SimpleMappedRegistry<K, V>> registryLoader, RegistryLoader<I, Map<K, V>> deferredLoader) {
+        return new SimpleMappedDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, K, V> SimpleMappedDeferredRegistry<K, V> create(Function<RegistryLoader<I, Map<K, V>>, SimpleMappedRegistry<K, V>> registryLoader, Supplier<RegistryLoader<I, Map<K, V>>> deferredLoader) {
+        return new SimpleMappedDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, K, V> SimpleMappedDeferredRegistry<K, V> create(I input, DeferredRegistry.RegistryInitializer<Map<K, V>, SimpleMappedRegistry<K, V>> registryInitializer, RegistryLoader<I, Map<K, V>> deferredLoader) {
+        return new SimpleMappedDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, K, V> SimpleMappedDeferredRegistry<K, V> create(I input, DeferredRegistry.RegistryInitializer<Map<K, V>, SimpleMappedRegistry<K, V>> registryInitializer, Supplier<RegistryLoader<I, Map<K, V>>> deferredLoader) {
+        return new SimpleMappedDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, K, V> SimpleMappedDeferredRegistry<K, V> create(I input, RegistryLoader<I, Map<K, V>> deferredLoader) {
+        return create(input, SimpleMappedRegistry::create, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, K, V> SimpleMappedDeferredRegistry<K, V> create(I input, Supplier<RegistryLoader<I, Map<K, V>>> deferredLoader) {
+        return create(input, SimpleMappedRegistry::create, deferredLoader);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/VersionedDeferredRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/VersionedDeferredRegistry.java
new file mode 100644
index 000000000..6b2f9906b
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/VersionedDeferredRegistry.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry;
+
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.geysermc.geyser.registry.loader.RegistryLoader;
+
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class VersionedDeferredRegistry<V> extends AbstractMappedDeferredRegistry<Integer, V, Int2ObjectMap<V>, VersionedRegistry<V>> {
+    protected <I> VersionedDeferredRegistry(Function<RegistryLoader<I, Int2ObjectMap<V>>, VersionedRegistry<V>> registryLoader, RegistryLoader<I, Int2ObjectMap<V>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> VersionedDeferredRegistry(Function<RegistryLoader<I, Int2ObjectMap<V>>, VersionedRegistry<V>> registryLoader, Supplier<RegistryLoader<I, Int2ObjectMap<V>>> deferredLoader) {
+        super(registryLoader, deferredLoader);
+    }
+
+    protected <I> VersionedDeferredRegistry(I input, RegistryInitializer<Int2ObjectMap<V>, VersionedRegistry<V>> registryInitializer, RegistryLoader<I, Int2ObjectMap<V>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    protected <I> VersionedDeferredRegistry(I input, RegistryInitializer<Int2ObjectMap<V>, VersionedRegistry<V>> registryInitializer, Supplier<RegistryLoader<I, Int2ObjectMap<V>>> deferredLoader) {
+        super(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Gets the closest value for the specified version. Only
+     * returns versions higher up than the specified if one
+     * does not exist for the given one. Useful in the event
+     * that you want to get a resource which is guaranteed for
+     * older versions, but not on newer ones.
+     *
+     * @param version the version
+     * @return the closest value for the specified version
+     * @throws IllegalArgumentException if no values exist at or above the given version
+     */
+    @NonNull
+    public V forVersion(int version) {
+        return backingRegistry().forVersion(version);
+    }
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> VersionedDeferredRegistry<V> create(Function<RegistryLoader<I, Int2ObjectMap<V>>, VersionedRegistry<V>> registryLoader, RegistryLoader<I, Int2ObjectMap<V>> deferredLoader) {
+        return new VersionedDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryLoader the registry loader
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> VersionedDeferredRegistry<V> create(Function<RegistryLoader<I, Int2ObjectMap<V>>, VersionedRegistry<V>> registryLoader, Supplier<RegistryLoader<I, Int2ObjectMap<V>>> deferredLoader) {
+        return new VersionedDeferredRegistry<>(registryLoader, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> VersionedDeferredRegistry<V> create(I input, RegistryInitializer<Int2ObjectMap<V>, VersionedRegistry<V>> registryInitializer, RegistryLoader<I, Int2ObjectMap<V>> deferredLoader) {
+        return new VersionedDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+
+    /**
+     * Creates a new deferred registry.
+     *
+     * @param registryInitializer the registry initializer
+     * @param deferredLoader the deferred loader
+     * @param <I> the input type
+     * @return the new deferred registry
+     */
+    public static <I, V> VersionedDeferredRegistry<V> create(I input, RegistryInitializer<Int2ObjectMap<V>, VersionedRegistry<V>> registryInitializer, Supplier<RegistryLoader<I, Int2ObjectMap<V>>> deferredLoader) {
+        return new VersionedDeferredRegistry<>(input, registryInitializer, deferredLoader);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java b/core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java
deleted file mode 100644
index 751cb4ed4..000000000
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/RegistryLoaderHolder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2024 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.registry.loader;
-
-/**
- * A holder of the constructor parameters to prevent them from automatically loading,
- * and instead load them when the load method is called.
- */
-public record RegistryLoaderHolder<I, M>(I input, RegistryLoader<I, M> registryLoader) {
-}
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java
index 1d262d8b8..2b89867fb 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/util/GeyserMockContext.java
@@ -61,12 +61,6 @@ public class GeyserMockContext {
         try (var geyserImplMock = mockStatic(GeyserImpl.class)) {
             geyserImplMock.when(GeyserImpl::getInstance).thenReturn(geyserImpl);
 
-            // Since Geyser isn't actually loaded, the Registries#init will not be called.
-            // This means that we manually load the registries we want to use
-            Registries.ENTITY_DEFINITIONS.load();
-            Registries.JAVA_ENTITY_IDENTIFIERS.load();
-            Registries.BEDROCK_ENTITY_PROPERTIES.load();
-
             geyserContext.accept(context);
         }
     }

From 448c75e8f2ec330893f8669e5ab4b8d5fb7c3121 Mon Sep 17 00:00:00 2001
From: Tjorven Liebe <32434395+Tjorven-Liebe@users.noreply.github.com>
Date: Wed, 30 Oct 2024 15:53:43 +0100
Subject: [PATCH 035/165] Fix pulling and placing skulls/heads from creative
 inventory (#5114)

* fix: pulling and placing skulls/heads from creative inventory

* fix: getting values of map

* fix: correct submodule permalink
---
 .../registry/populator/Conversion685_671.java | 21 ++++----
 .../registry/populator/Conversion712_685.java | 51 +++++++++----------
 .../registry/populator/Conversion729_712.java |  1 +
 .../registry/populator/Conversion748_729.java | 48 +++++++++++++++++
 .../populator/ItemRegistryPopulator.java      | 10 +---
 core/src/main/resources/mappings              |  2 +-
 6 files changed, 87 insertions(+), 46 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java

diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java
index 0c7f540bf..c72ea64b2 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java
@@ -46,8 +46,7 @@ public class Conversion685_671 {
 
     static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
         mapping = Conversion712_685.remapItem(item, mapping);
-
-        String identifer = mapping.getBedrockIdentifier();
+        String identifier = mapping.getBedrockIdentifier();
 
         if (NEW_MUSIC_DISCS.contains(item)) {
             return mapping.withBedrockIdentifier("minecraft:music_disc_otherside");
@@ -59,12 +58,12 @@ public class Conversion685_671 {
             return mapping.withBedrockIdentifier("minecraft:glass_bottle");
         }
 
-        if (!NEW_BLOCKS.contains(identifer)) {
+        if (!NEW_BLOCKS.contains(identifier)) {
             return mapping;
         }
 
-        if (NEW_CORAL_BLOCKS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_CORAL_BLOCKS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:tube_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(0); }
                 case "minecraft:brain_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(1); }
                 case "minecraft:bubble_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(2); }
@@ -78,8 +77,8 @@ public class Conversion685_671 {
             }
         }
 
-        if (NEW_DOUBLE_PLANTS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_DOUBLE_PLANTS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:sunflower" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(0); }
                 case "minecraft:lilac" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(1); }
                 case "minecraft:tall_grass" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(2); }
@@ -89,8 +88,8 @@ public class Conversion685_671 {
             }
         }
 
-        if (NEW_STONE_BLOCK_SLABS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_STONE_BLOCK_SLABS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:smooth_stone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(0); }
                 case "minecraft:sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(1); }
                 case "minecraft:petrified_oak_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(2); }
@@ -102,8 +101,8 @@ public class Conversion685_671 {
             }
         }
 
-        if (NEW_TALLGRASSES.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_TALLGRASSES.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:short_grass" -> { return mapping.withBedrockIdentifier("minecraft:tallgrass").withBedrockData(1); }
                 case "minecraft:fern" -> { return mapping.withBedrockIdentifier("minecraft:tallgrass").withBedrockData(2); }
             }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java
index db715e015..45963cb90 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java
@@ -33,35 +33,34 @@ public class Conversion712_685 {
 
     static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
         mapping = Conversion729_712.remapItem(item, mapping);
+        String identifier = mapping.getBedrockIdentifier();
 
-        String identifer = mapping.getBedrockIdentifier();
-
-        if (!NEW_BLOCKS.contains(identifer)) {
+        if (!NEW_BLOCKS.contains(identifier)) {
             return mapping;
         }
 
-        if (identifer.equals("minecraft:coarse_dirt")) {
+        if (identifier.equals("minecraft:coarse_dirt")) {
             return mapping.withBedrockIdentifier("minecraft:dirt").withBedrockData(1);
         }
 
-        if (identifer.equals("minecraft:dandelion")) {
+        if (identifier.equals("minecraft:dandelion")) {
             return mapping.withBedrockIdentifier("minecraft:yellow_flower").withBedrockData(0);
         }
 
-        if (identifer.equals("minecraft:red_sand")) {
+        if (identifier.equals("minecraft:red_sand")) {
             return mapping.withBedrockIdentifier("minecraft:sand").withBedrockData(1);
         }
 
-        if (NEW_PRISMARINE_BLOCKS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_PRISMARINE_BLOCKS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:prismarine" -> { return mapping.withBedrockIdentifier("minecraft:prismarine").withBedrockData(0); }
                 case "minecraft:dark_prismarine" -> { return mapping.withBedrockIdentifier("minecraft:prismarine").withBedrockData(1); }
                 case "minecraft:prismarine_bricks" -> { return mapping.withBedrockIdentifier("minecraft:prismarine").withBedrockData(2); }
             }
         }
 
-        if (NEW_SANDSTONE_BLOCKS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_SANDSTONE_BLOCKS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(0); }
                 case "minecraft:chiseled_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(1); }
                 case "minecraft:cut_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(2); }
@@ -69,8 +68,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_RED_SANDSTONE_BLOCKS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_RED_SANDSTONE_BLOCKS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(0); }
                 case "minecraft:chiseled_red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(1); }
                 case "minecraft:cut_red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(2); }
@@ -78,8 +77,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_QUARTZ_BLOCKS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_QUARTZ_BLOCKS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:quartz_block" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(0); }
                 case "minecraft:chiseled_quartz_block" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(1); }
                 case "minecraft:quartz_pillar" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(2); }
@@ -87,8 +86,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_STONE_BLOCK_SLABS_2.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_STONE_BLOCK_SLABS_2.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:red_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(0); }
                 case "minecraft:purpur_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(1); }
                 case "minecraft:prismarine_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(2); }
@@ -100,8 +99,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_STONE_BLOCK_SLABS_3.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_STONE_BLOCK_SLABS_3.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:end_stone_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(0); }
                 case "minecraft:smooth_red_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(1); }
                 case "minecraft:polished_andesite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(2); }
@@ -113,8 +112,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_STONE_BLOCK_SLABS_4.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_STONE_BLOCK_SLABS_4.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:mossy_stone_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(0); }
                 case "minecraft:smooth_quartz_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(1); }
                 case "minecraft:normal_stone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(2); }
@@ -123,8 +122,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_MONSTER_EGGS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_MONSTER_EGGS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:infested_stone" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(0); }
                 case "minecraft:infested_cobblestone" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(1); }
                 case "minecraft:infested_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(2); }
@@ -134,8 +133,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_STONEBRICK_BLOCKS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_STONEBRICK_BLOCKS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(0); }
                 case "minecraft:mossy_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(1); }
                 case "minecraft:cracked_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(2); }
@@ -143,8 +142,8 @@ public class Conversion712_685 {
             }
         }
 
-        if (NEW_ANVILS.contains(identifer)) {
-            switch (identifer) {
+        if (NEW_ANVILS.contains(identifier)) {
+            switch (identifier) {
                 case "minecraft:anvil" -> { return mapping.withBedrockIdentifier("minecraft:anvil").withBedrockData(0); }
                 case "minecraft:chipped_anvil" -> { return mapping.withBedrockIdentifier("minecraft:anvil").withBedrockData(4); }
                 case "minecraft:damaged_anvil" -> { return mapping.withBedrockIdentifier("minecraft:anvil").withBedrockData(8); }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java
index 5d4ebdc47..fbc2233bc 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java
@@ -16,6 +16,7 @@ public class Conversion729_712 {
     private static final List<String> NEW_BLOCKS = Stream.of(NEW_PURPUR_BLOCKS, NEW_WALL_BLOCKS, NEW_SPONGE_BLOCKS, NEW_TNT_BLOCKS, STRUCTURE_VOID).flatMap(List::stream).toList();
 
     static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
+        mapping = Conversion748_729.remapItem(item, mapping);
         String identifier = mapping.getBedrockIdentifier();
 
         if (!NEW_BLOCKS.contains(identifier)) {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java
new file mode 100644
index 000000000..7a2d1a0cb
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry.populator;
+
+import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.registry.type.GeyserMappingItem;
+
+import java.util.Map;
+
+public class Conversion748_729 {
+
+    private static final Map<String, Integer> NEW_PLAYER_HEADS = Map.of("minecraft:skeleton_skull", 0, "minecraft:wither_skeleton_skull", 1, "minecraft:zombie_head", 2, "minecraft:player_head", 3, "minecraft:creeper_head", 4, "minecraft:dragon_head", 5, "minecraft:piglin_head", 6);
+
+    static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
+        String identifier = mapping.getBedrockIdentifier();
+
+        if (NEW_PLAYER_HEADS.containsKey(identifier)) {
+            return mapping.withBedrockIdentifier("minecraft:skull")
+                .withBedrockData(NEW_PLAYER_HEADS.get(identifier));
+        }
+
+        return mapping;
+    }
+
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 0b61c7999..65a35aa50 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -113,14 +113,8 @@ public class ItemRegistryPopulator {
         paletteVersions.add(new PaletteVersion("1_20_80", Bedrock_v671.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion685_671::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_0", Bedrock_v685.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion712_685::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_20", Bedrock_v712.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion729_712::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()));
-        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion(), Collections.emptyMap(), (item, mapping) -> {
-            String identifier = item.javaIdentifier();
-            if (identifier.endsWith("_head") || identifier.endsWith("_skull")) {
-                return mapping.withBedrockIdentifier(item.javaIdentifier());
-            }
-            return mapping;
-        }));
+        paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion748_729::remapItem));
+        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 93f207e7e..a6d04157d 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 93f207e7e9d73f58a7c8902f7deda9dcb0524c8e
+Subproject commit a6d04157d1866e55e35f2ce3ebde3cf4e007aabf

From c34b4b311f960b49c8f606cc80534ed7392ef69d Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Wed, 30 Oct 2024 15:37:10 -0400
Subject: [PATCH 036/165] Clean out debug logging statements

---
 .../org/geysermc/geyser/network/UpstreamPacketHandler.java | 7 -------
 .../entity/player/BedrockPlayerAuthInputTranslator.java    | 5 -----
 .../protocol/java/JavaRecipeBookAddTranslator.java         | 4 ----
 .../protocol/java/JavaUpdateRecipesTranslator.java         | 5 -----
 .../java/entity/player/JavaPlayerPositionTranslator.java   | 1 -
 .../main/java/org/geysermc/geyser/util/InventoryUtils.java | 3 +--
 6 files changed, 1 insertion(+), 24 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index b797eb811..19e56c8a8 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -41,7 +41,6 @@ import org.cloudburstmc.protocol.bedrock.packet.ModalFormResponsePacket;
 import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.NetworkSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
-import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.cloudburstmc.protocol.bedrock.packet.RequestNetworkSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkRequestPacket;
@@ -65,7 +64,6 @@ import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.PendingMicrosoftAuthentication;
-import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.util.LoginEncryptionUtils;
 import org.geysermc.geyser.util.MathUtils;
@@ -96,11 +94,6 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     }
 
     private PacketSignal translateAndDefault(BedrockPacket packet) {
-        if (packet instanceof PlayerAuthInputPacket) {
-            //System.out.println(packet);
-        } else {
-            System.out.println(ChatColor.toANSI(ChatColor.GREEN) + packet + ChatColor.ANSI_RESET);
-        }
         Registries.BEDROCK_PACKET_TRANSLATORS.translate(packet.getClass(), packet, session);
         return PacketSignal.HANDLED; // PacketSignal.UNHANDLED will log a WARN publicly
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index a366a5b69..a07ebe04a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -66,14 +66,9 @@ import java.util.Set;
 
 @Translator(packet = PlayerAuthInputPacket.class)
 public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<PlayerAuthInputPacket> {
-    private Set<PlayerAuthInputData> data = Set.of();
 
     @Override
     public void translate(GeyserSession session, PlayerAuthInputPacket packet) {
-        if (!data.equals(packet.getInputData())) {
-            System.out.println(packet.getInputData());
-            this.data = packet.getInputData();
-        }
         SessionPlayerEntity entity = session.getPlayerEntity();
 
         boolean wasJumping = session.getInputCache().wasJumping();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 182a1b7d5..5cc2e3063 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -84,7 +84,6 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
 
     @Override
     public void translate(GeyserSession session, ClientboundRecipeBookAddPacket packet) {
-        System.out.println(packet);
         int netId = session.getLastRecipeNetId().get();
         Int2ObjectMap<List<String>> javaToBedrockRecipeIds = session.getJavaToBedrockRecipeIds();
         Int2ObjectMap<GeyserRecipe> geyserRecipes = session.getCraftingRecipes();
@@ -179,12 +178,10 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     }
                     javaToBedrockRecipeIds.put(contents.id(), bedrockRecipeIds);
                     session.getSmithingRecipes().add(new GeyserSmithingRecipe(smithingRecipe));
-                    System.out.println(new GeyserSmithingRecipe(smithingRecipe));
                 }
             }
         }
 
-        //System.out.println(craftingDataPacket);
         session.sendUpstreamPacket(craftingDataPacket);
         session.sendUpstreamPacket(recipesPacket);
         session.getLastRecipeNetId().set(netId);
@@ -301,7 +298,6 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         }
 
         if (complexInputs) {
-            System.out.println(inputs);
             long size = 1;
             // See how big a cartesian product will get without creating one (Guava throws an error; not really ideal)
             for (List<ItemDescriptorWithCount> list : inputs) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index 9f53a9af4..ad67da81e 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -57,14 +57,12 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.Clientbound
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundUpdateRecipesPacket.SelectableRecipe;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
-import java.util.stream.Collectors;
 
 /**
  * Used to send all valid recipes from Java to Bedrock.
@@ -103,7 +101,6 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
     public void translate(GeyserSession session, ClientboundUpdateRecipesPacket packet) {
         int netId = session.getLastRecipeNetId().get();
         CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
-        System.out.println(packet);
 
         boolean oldSmithingTable;
         int[] smithingBase = packet.getItemSets().get(SMITHING_BASE);
@@ -115,8 +112,6 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
             addSmithingTransformRecipes(session, craftingDataPacket.getCraftingData());
             netId = session.getLastRecipeNetId().get(); // Was updated in the above method.
         } else {
-            System.out.println(Arrays.stream(smithingTemplate).mapToObj(i -> Registries.JAVA_ITEMS.get(i).javaIdentifier()).collect(Collectors.joining(" ")));
-            System.out.println(Arrays.stream(smithingAddition).mapToObj(i -> Registries.JAVA_ITEMS.get(i).javaIdentifier()).collect(Collectors.joining(" ")));
             oldSmithingTable = false;
             // BDS sends armor trim templates and materials before the CraftingDataPacket
             TrimDataPacket trimDataPacket = new TrimDataPacket();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index 89e8eff82..ca1b95997 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -47,7 +47,6 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
 
     @Override
     public void translate(GeyserSession session, ClientboundPlayerPositionPacket packet) {
-        System.out.println(packet);
         if (!session.isLoggedIn())
             return;
 
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 41b35d0db..be357cebd 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -519,7 +519,7 @@ public class InventoryUtils {
                         }
                     }
 
-                    if (!ingredients.equals(mirroredIngredients) ||
+                    if (ingredients.equals(mirroredIngredients) ||
                             !testShapedRecipe(session, mirroredIngredients, inventoryGetter, gridDimensions, firstRow, height, firstCol, width)) {
                         continue;
                     }
@@ -551,7 +551,6 @@ public class InventoryUtils {
                     }
                 }
             }
-            System.out.println("Found existing match for item: " + recipe);
             return recipe;
         }
         return null;

From b3e57fd4653282efbd2ed84f7bff3cb9f92273da Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Wed, 30 Oct 2024 20:11:34 -0400
Subject: [PATCH 037/165] Indicate support for Bedrock 1.21.43

---
 README.md                                                     | 2 +-
 .../main/java/org/geysermc/geyser/network/GameProtocol.java   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index 3e99a96a7..fedb5bb96 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.41 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.43 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index c39629917..464edd487 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -52,7 +52,7 @@ public final class GameProtocol {
      * release of the game that Geyser supports.
      */
     public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
-        .minecraftVersion("1.21.41")
+        .minecraftVersion("1.21.43")
         .build());
 
     /**
@@ -83,7 +83,7 @@ public final class GameProtocol {
             .minecraftVersion("1.21.30/1.21.31")
             .build()));
         SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
-            .minecraftVersion("1.21.40/1.21.41")
+            .minecraftVersion("1.21.40/1.21.41/1.21.43")
             .build());
     }
 

From 37b9e6591ee15471f27d025b75f43e5e435f1032 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Wed, 30 Oct 2024 20:25:57 -0400
Subject: [PATCH 038/165] Re-enable testing

---
 core/build.gradle.kts | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index ff1de4dc0..b0ea5fdf6 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -6,10 +6,6 @@ plugins {
     id("io.freefair.lombok")
 }
 
-tasks.test {
-    enabled = false
-}
-
 dependencies {
     constraints {
         implementation(libs.raknet) // Ensure protocol does not override the RakNet version

From 4588f341ec2cc484a3bb3c1e0b1acfd90aa2ef8a Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Wed, 30 Oct 2024 20:40:34 -0400
Subject: [PATCH 039/165] Fix test

---
 .../scoreboard/network/ScoreboardIssueTests.java  | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
index 17ad7f3d3..7ab518f1d 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
@@ -25,14 +25,6 @@
 
 package org.geysermc.geyser.scoreboard.network;
 
-import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacket;
-import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacketMatch;
-import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNextPacketType;
-import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.assertNoNextPacket;
-import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockContextScoreboard;
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 import net.kyori.adventure.text.Component;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.packet.AddEntityPacket;
@@ -75,6 +67,11 @@ import java.util.EnumSet;
 import java.util.Optional;
 import java.util.UUID;
 
+import static org.geysermc.geyser.scoreboard.network.util.AssertUtils.*;
+import static org.geysermc.geyser.scoreboard.network.util.GeyserMockContextScoreboard.mockContextScoreboard;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 /**
  * Tests for issues reported on GitHub.
  */
@@ -157,7 +154,7 @@ public class ScoreboardIssueTests {
                 new ClientboundPlayerInfoUpdatePacket(
                     EnumSet.of(PlayerListEntryAction.ADD_PLAYER, PlayerListEntryAction.UPDATE_LISTED),
                     new PlayerListEntry[] {
-                        new PlayerListEntry(npcUuid, new GameProfile(npcUuid, "1297"), false, 0, GameMode.SURVIVAL, null, null, 0, null, null)
+                        new PlayerListEntry(npcUuid, new GameProfile(npcUuid, "1297"), false, 0, GameMode.SURVIVAL, null, 0, null, 0, null, null)
                     }));
 
             //todo we don't have to remove an entry that was never in the playerlist in the first place

From faf663d3cd235d129dadf86bdab2e18ec2acedb2 Mon Sep 17 00:00:00 2001
From: Tim203 <mctim203@gmail.com>
Date: Thu, 31 Oct 2024 09:30:01 +0100
Subject: [PATCH 040/165] Check if objective is null and made scoreboard errors
 player-specific

---
 .../org/geysermc/geyser/scoreboard/Scoreboard.java |  2 +-
 .../java/scoreboard/JavaResetScorePacket.java      | 14 ++++++++++++++
 .../java/scoreboard/JavaSetScoreTranslator.java    | 11 ++++-------
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/scoreboard/Scoreboard.java b/core/src/main/java/org/geysermc/geyser/scoreboard/Scoreboard.java
index 6e0867ddc..3d3bfb48d 100644
--- a/core/src/main/java/org/geysermc/geyser/scoreboard/Scoreboard.java
+++ b/core/src/main/java/org/geysermc/geyser/scoreboard/Scoreboard.java
@@ -178,7 +178,7 @@ public final class Scoreboard {
         Team team = teams.get(teamName);
         if (team != null) {
             if (SHOW_SCOREBOARD_LOGS) {
-                logger.info(GeyserLocale.getLocaleStringLog("geyser.network.translator.team.failed_overrides", teamName));
+                logger.info("Ignoring team %s for %s. It overrides without removing old team.".formatted(teamName, session.javaUsername()));
             }
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaResetScorePacket.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaResetScorePacket.java
index cf688bbfd..72dcd4062 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaResetScorePacket.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaResetScorePacket.java
@@ -25,6 +25,8 @@
 
 package org.geysermc.geyser.translator.protocol.java.scoreboard;
 
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.scoreboard.Objective;
 import org.geysermc.geyser.scoreboard.Scoreboard;
 import org.geysermc.geyser.scoreboard.ScoreboardUpdater;
@@ -36,6 +38,10 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.scoreboard.
 
 @Translator(packet = ClientboundResetScorePacket.class)
 public class JavaResetScorePacket extends PacketTranslator<ClientboundResetScorePacket> {
+    private static final boolean SHOW_SCOREBOARD_LOGS = Boolean.parseBoolean(System.getProperty("Geyser.ShowScoreboardLogs", "true"));
+
+    private final GeyserLogger logger = GeyserImpl.getInstance().getLogger();
+
     @Override
     public void translate(GeyserSession session, ClientboundResetScorePacket packet) {
         WorldCache worldCache = session.getWorldCache();
@@ -47,6 +53,14 @@ public class JavaResetScorePacket extends PacketTranslator<ClientboundResetScore
             scoreboard.resetPlayerScores(packet.getOwner());
         } else {
             Objective objective = scoreboard.getObjective(packet.getObjective());
+            if (objective == null) {
+                if (SHOW_SCOREBOARD_LOGS) {
+                    logger.info(String.format(
+                        "Tried to reset score %s for %s without the existence of its requested objective %s",
+                        packet.getOwner(), session.javaUsername(), packet.getObjective()));
+                }
+                return;
+            }
             objective.removeScore(packet.getOwner());
         }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetScoreTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetScoreTranslator.java
index 989f0f2cb..c7159041b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetScoreTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/scoreboard/JavaSetScoreTranslator.java
@@ -32,7 +32,6 @@ import org.geysermc.geyser.scoreboard.Scoreboard;
 import org.geysermc.geyser.scoreboard.ScoreboardUpdater;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.WorldCache;
-import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.scoreboard.ClientboundSetScorePacket;
@@ -41,11 +40,7 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.scoreboard.
 public class JavaSetScoreTranslator extends PacketTranslator<ClientboundSetScorePacket> {
     private static final boolean SHOW_SCOREBOARD_LOGS = Boolean.parseBoolean(System.getProperty("Geyser.ShowScoreboardLogs", "true"));
 
-    private final GeyserLogger logger;
-
-    public JavaSetScoreTranslator() {
-        logger = GeyserImpl.getInstance().getLogger();
-    }
+    private final GeyserLogger logger = GeyserImpl.getInstance().getLogger();
 
     @Override
     public void translate(GeyserSession session, ClientboundSetScorePacket packet) {
@@ -56,7 +51,9 @@ public class JavaSetScoreTranslator extends PacketTranslator<ClientboundSetScore
         Objective objective = scoreboard.getObjective(packet.getObjective());
         if (objective == null) {
             if (SHOW_SCOREBOARD_LOGS) {
-                logger.info(GeyserLocale.getLocaleStringLog("geyser.network.translator.score.failed_objective", packet.getObjective()));
+                logger.info(String.format(
+                    "Tried to update score %s for %s without the existence of its requested objective %s",
+                    packet.getOwner(), session.javaUsername(), packet.getObjective()));
             }
             return;
         }

From 6cc2aa3697c4ec7dd822ef7839a0fe3b460d54e1 Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Thu, 31 Oct 2024 22:52:26 +0000
Subject: [PATCH 041/165] Goat horns and item cooldowns for 1.21.2 (#5102)

Co-authored-by: Camotoy <20743703+Camotoy@users.noreply.github.com>
---
 .../inventory/item/GeyserInstrument.java      | 166 ++++++++++++++++++
 .../geyser/item/enchantment/Enchantment.java  |   4 +-
 .../geysermc/geyser/item/type/ArrowItem.java  |   5 +-
 .../geyser/item/type/CompassItem.java         |  10 +-
 .../geyser/item/type/FilledMapItem.java       |   5 +-
 .../geyser/item/type/GoatHornItem.java        |  40 ++++-
 .../org/geysermc/geyser/item/type/Item.java   |   4 +-
 .../geyser/item/type/OminousBottleItem.java   |   9 +-
 .../geysermc/geyser/item/type/PotionItem.java |  11 +-
 .../geyser/item/type/TippedArrowItem.java     |   5 +-
 .../geysermc/geyser/level/JukeboxSong.java    |  12 +-
 .../geyser/session/cache/RegistryCache.java   |   3 +
 .../geyser/session/cache/WorldCache.java      |  28 ++-
 .../cache/registry/JavaRegistries.java        |   2 +
 .../translator/item/ItemTranslator.java       |   4 +-
 ...BedrockInventoryTransactionTranslator.java |  33 ++--
 .../java/level/JavaCooldownTranslator.java    |   9 +-
 .../translator/text/MessageTranslator.java    |  21 +++
 .../org/geysermc/geyser/util/SoundUtils.java  |  15 ++
 19 files changed, 320 insertions(+), 66 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/inventory/item/GeyserInstrument.java

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/item/GeyserInstrument.java b/core/src/main/java/org/geysermc/geyser/inventory/item/GeyserInstrument.java
new file mode 100644
index 000000000..9983a8e90
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/inventory/item/GeyserInstrument.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.inventory.item;
+
+import net.kyori.adventure.key.Key;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.cloudburstmc.nbt.NbtMap;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistry;
+import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
+import org.geysermc.geyser.translator.text.MessageTranslator;
+import org.geysermc.geyser.util.MinecraftKey;
+import org.geysermc.geyser.util.SoundUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.Holder;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.Instrument;
+import org.geysermc.mcprotocollib.protocol.data.game.level.sound.BuiltinSound;
+
+import java.util.Locale;
+
+public interface GeyserInstrument {
+
+    static GeyserInstrument read(RegistryEntryContext context) {
+        NbtMap data = context.data();
+        String soundEvent = SoundUtils.readSoundEvent(data, "instrument " + context.id());
+        float range = data.getFloat("range");
+        String description = MessageTranslator.deserializeDescriptionForTooltip(context.session(), data);
+        BedrockInstrument bedrockInstrument = BedrockInstrument.getByJavaIdentifier(context.id());
+        return new GeyserInstrument.Impl(soundEvent, range, description, bedrockInstrument);
+    }
+
+    String soundEvent();
+
+    float range();
+
+    /**
+     * In Bedrock format
+     */
+    String description();
+
+    BedrockInstrument bedrockInstrument();
+
+    /**
+     * @return the ID of the Bedrock counterpart for this instrument. If there is none ({@link #bedrockInstrument()} is null), then -1 is returned.
+     */
+    default int bedrockId() {
+        BedrockInstrument bedrockInstrument = bedrockInstrument();
+        if (bedrockInstrument != null) {
+            return bedrockInstrument.ordinal();
+        }
+        return -1;
+    }
+
+    /**
+     * @return the ID of the Java counterpart for the given Bedrock ID. If an invalid Bedrock ID was given, or there is no counterpart, -1 is returned.
+     */
+    static int bedrockIdToJava(GeyserSession session, int id) {
+        JavaRegistry<GeyserInstrument> instruments = session.getRegistryCache().instruments();
+        BedrockInstrument bedrockInstrument = BedrockInstrument.getByBedrockId(id);
+        if (bedrockInstrument != null) {
+            for (int i = 0; i < instruments.values().size(); i++) {
+                GeyserInstrument instrument = instruments.byId(i);
+                if (instrument.bedrockInstrument() == bedrockInstrument) {
+                    return i;
+                }
+            }
+        }
+        return -1;
+    }
+
+    static GeyserInstrument fromHolder(GeyserSession session, Holder<Instrument> holder) {
+        if (holder.isId()) {
+            return session.getRegistryCache().instruments().byId(holder.id());
+        }
+        Instrument custom = holder.custom();
+        return new Wrapper(custom, session.locale());
+    }
+
+    record Wrapper(Instrument instrument, String locale) implements GeyserInstrument {
+        @Override
+        public String soundEvent() {
+            return instrument.getSoundEvent().getName();
+        }
+
+        @Override
+        public float range() {
+            return instrument.getRange();
+        }
+
+        @Override
+        public String description() {
+            return MessageTranslator.convertMessageForTooltip(instrument.getDescription(), locale);
+        }
+
+        @Override
+        public BedrockInstrument bedrockInstrument() {
+            if (instrument.getSoundEvent() instanceof BuiltinSound) {
+                return BedrockInstrument.getByJavaIdentifier(MinecraftKey.key(instrument.getSoundEvent().getName()));
+            }
+            // Probably custom
+            return null;
+        }
+    }
+
+    record Impl(String soundEvent, float range, String description, @Nullable BedrockInstrument bedrockInstrument) implements GeyserInstrument {
+    }
+
+    /**
+     * Each vanilla instrument on Bedrock, ordered in their network IDs.
+     */
+    enum BedrockInstrument {
+        PONDER,
+        SING,
+        SEEK,
+        FEEL,
+        ADMIRE,
+        CALL,
+        YEARN,
+        DREAM;
+
+        private static final BedrockInstrument[] VALUES = values();
+        private final Key javaIdentifier;
+
+        BedrockInstrument() {
+            this.javaIdentifier = MinecraftKey.key(this.name().toLowerCase(Locale.ENGLISH) + "_goat_horn");
+        }
+
+        public static @Nullable BedrockInstrument getByJavaIdentifier(Key javaIdentifier) {
+            for (BedrockInstrument instrument : VALUES) {
+                if (instrument.javaIdentifier.equals(javaIdentifier)) {
+                    return instrument;
+                }
+            }
+            return null;
+        }
+
+        public static @Nullable BedrockInstrument getByBedrockId(int bedrockId) {
+            if (bedrockId >= 0 && bedrockId < VALUES.length) {
+                return VALUES[bedrockId];
+            }
+            return null;
+        }
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java b/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java
index 9088d9626..e0b4f6e0f 100644
--- a/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java
+++ b/core/src/main/java/org/geysermc/geyser/item/enchantment/Enchantment.java
@@ -41,7 +41,7 @@ import java.util.Map;
 import java.util.Set;
 
 /**
- * @param description only populated if {@link #bedrockEnchantment()} is not null.
+ * @param description only populated if {@link #bedrockEnchantment()} is null.
  * @param anvilCost also as a rarity multiplier
  */
 public record Enchantment(String identifier,
@@ -66,8 +66,6 @@ public record Enchantment(String identifier,
 
         BedrockEnchantment bedrockEnchantment = BedrockEnchantment.getByJavaIdentifier(context.id().asString());
 
-        // TODO - description is a component. So if a hardcoded literal string is given, this will display normally on Java,
-        //  but Geyser will attempt to lookup the literal string as translation - and will fail, displaying an empty string as enchantment name.
         String description = bedrockEnchantment == null ? MessageTranslator.deserializeDescription(context.session(), data) : null;
 
         return new Enchantment(context.id().asString(), effects, supportedItems, maxLevel,
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java
index 4e4f1830e..b2d3737d8 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java
@@ -32,6 +32,7 @@ import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
@@ -41,9 +42,9 @@ public class ArrowItem extends Item {
     }
 
     @Override
-    public @NonNull GeyserItemStack translateToJava(@NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
+    public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         Potion potion = Potion.getByTippedArrowDamage(itemData.getDamage());
-        GeyserItemStack itemStack = super.translateToJava(itemData, mapping, mappings);
+        GeyserItemStack itemStack = super.translateToJava(session, itemData, mapping, mappings);
         if (potion != null) {
             itemStack = Items.TIPPED_ARROW.newItemStack(itemStack.getAmount(), itemStack.getComponents());
             PotionContents contents = potion.toComponent();
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java b/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java
index 712e75a23..1c0ec0d5f 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java
@@ -43,11 +43,11 @@ public class CompassItem extends Item {
     }
 
     @Override
-    public ItemData.Builder translateToBedrock(int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
         if (isLodestoneCompass(components)) {
-            return super.translateToBedrock(count, components, mappings.getLodestoneCompass(), mappings);
+            return super.translateToBedrock(session, count, components, mappings.getLodestoneCompass(), mappings);
         }
-        return super.translateToBedrock(count, components, mapping, mappings);
+        return super.translateToBedrock(session, count, components, mapping, mappings);
     }
 
     @Override
@@ -78,12 +78,12 @@ public class CompassItem extends Item {
     }
 
     @Override
-    public @NonNull GeyserItemStack translateToJava(@NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
+    public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         if (mapping.getBedrockIdentifier().equals("minecraft:lodestone_compass")) {
             // Revert the entry back to the compass
             mapping = mappings.getStoredItems().compass();
         }
 
-        return super.translateToJava(itemData, mapping, mappings);
+        return super.translateToJava(session, itemData, mapping, mappings);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java b/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java
index e571a796a..07a0ad133 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.item.type;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
@@ -37,8 +38,8 @@ public class FilledMapItem extends MapItem {
     }
 
     @Override
-    public ItemData.Builder translateToBedrock(int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
-        ItemData.Builder builder = super.translateToBedrock(count, components, mapping, mappings);
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+        ItemData.Builder builder = super.translateToBedrock(session, count, components, mapping, mappings);
         if (components == null) {
             // This is a fallback for maps with no nbt (Change added back in June 2020; is it needed in 2023?)
             //return builder.tag(NbtMap.builder().putInt("map", 0).build()); TODO if this is *still* broken, let's move it to translateComponentsToBedrock
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java b/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java
index d0e85ec52..9af07a40e 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java
@@ -28,8 +28,11 @@ package org.geysermc.geyser.item.type;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.item.GeyserInstrument;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.Holder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
@@ -41,24 +44,45 @@ public class GoatHornItem extends Item {
     }
 
     @Override
-    public ItemData.Builder translateToBedrock(int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
-        ItemData.Builder builder = super.translateToBedrock(count, components, mapping, mappings);
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+        ItemData.Builder builder = super.translateToBedrock(session, count, components, mapping, mappings);
         if (components == null) {
             return builder;
         }
-        Holder<Instrument> instrument = components.get(DataComponentType.INSTRUMENT);
-        if (instrument != null && instrument.isId()) {
-            builder.damage(instrument.id());
+
+        Holder<Instrument> holder = components.get(DataComponentType.INSTRUMENT);
+        if (holder != null) {
+            GeyserInstrument instrument = GeyserInstrument.fromHolder(session, holder);
+            int bedrockId = instrument.bedrockId();
+            if (bedrockId >= 0) {
+                builder.damage(bedrockId);
+            }
         }
+
         return builder;
     }
 
     @Override
-    public @NonNull GeyserItemStack translateToJava(@NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
-        GeyserItemStack itemStack = super.translateToJava(itemData, mapping, mappings);
+    public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
+        super.translateComponentsToBedrock(session, components, builder);
+
+        Holder<Instrument> holder = components.get(DataComponentType.INSTRUMENT);
+        if (holder != null && components.get(DataComponentType.HIDE_TOOLTIP) == null
+            && components.get(DataComponentType.HIDE_ADDITIONAL_TOOLTIP) == null) {
+            GeyserInstrument instrument = GeyserInstrument.fromHolder(session, holder);
+            if (instrument.bedrockInstrument() == null) {
+                builder.getOrCreateLore().add(instrument.description());
+            }
+        }
+    }
+
+    @Override
+    public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
+        GeyserItemStack itemStack = super.translateToJava(session, itemData, mapping, mappings);
 
         int damage = itemData.getDamage();
-        itemStack.getOrCreateComponents().put(DataComponentType.INSTRUMENT, Holder.ofId(damage));
+        // This could cause an issue since -1 is returned for non-vanilla goat horns
+        itemStack.getOrCreateComponents().put(DataComponentType.INSTRUMENT, Holder.ofId(GeyserInstrument.bedrockIdToJava(session, damage)));
 
         return itemStack;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index a8a477025..249936e5a 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -115,7 +115,7 @@ public class Item {
 
     /* Translation methods to Bedrock and back */
 
-    public ItemData.Builder translateToBedrock(int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
         if (this == Items.AIR || count <= 0) {
             // Return, essentially, air
             return ItemData.builder();
@@ -130,7 +130,7 @@ public class Item {
         return builder;
     }
 
-    public @NonNull GeyserItemStack translateToJava(@NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
+    public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         return GeyserItemStack.of(javaId, itemData.getCount());
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java b/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java
index 815f71419..92a8d726d 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java
@@ -31,6 +31,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
@@ -40,8 +41,8 @@ public class OminousBottleItem extends Item {
     }
 
     @Override
-    public ItemData.Builder translateToBedrock(int count, @Nullable DataComponents components, ItemMapping mapping, ItemMappings mappings) {
-        var builder = super.translateToBedrock(count, components, mapping, mappings);
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, @Nullable DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+        var builder = super.translateToBedrock(session, count, components, mapping, mappings);
         if (components == null) {
             // Level 1 ominous bottle is null components - Java 1.21.
             return builder;
@@ -54,9 +55,9 @@ public class OminousBottleItem extends Item {
     }
 
     @Override
-    public @NonNull GeyserItemStack translateToJava(@NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
+    public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         // This item can be pulled from the creative inventory with amplifiers.
-        GeyserItemStack itemStack = super.translateToJava(itemData, mapping, mappings);
+        GeyserItemStack itemStack = super.translateToJava(session, itemData, mapping, mappings);
         int damage = itemData.getDamage();
         if (damage == 0) {
             return itemStack;
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
index f8fe2b4ee..89e60b325 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
@@ -33,6 +33,7 @@ import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
@@ -44,8 +45,8 @@ public class PotionItem extends Item {
     }
 
     @Override
-    public ItemData.Builder translateToBedrock(int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
-        if (components == null) return super.translateToBedrock(count, components, mapping, mappings);
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+        if (components == null) return super.translateToBedrock(session, count, components, mapping, mappings);
         PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
         if (potionContents != null) {
             ItemDefinition customItemDefinition = CustomItemTranslator.getCustomItem(components, mapping);
@@ -64,13 +65,13 @@ public class PotionItem extends Item {
                         .count(count);
             }
         }
-        return super.translateToBedrock(count, components, mapping, mappings);
+        return super.translateToBedrock(session, count, components, mapping, mappings);
     }
 
     @Override
-    public @NonNull GeyserItemStack translateToJava(@NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
+    public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         Potion potion = Potion.getByBedrockId(itemData.getDamage());
-        GeyserItemStack itemStack = super.translateToJava(itemData, mapping, mappings);
+        GeyserItemStack itemStack = super.translateToJava(session, itemData, mapping, mappings);
         if (potion != null) {
             itemStack.getOrCreateComponents().put(DataComponentType.POTION_CONTENTS, potion.toComponent());
         }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
index d9e58eaf9..09e4ee21f 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
@@ -30,6 +30,7 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
@@ -40,7 +41,7 @@ public class TippedArrowItem extends ArrowItem {
     }
 
     @Override
-    public ItemData.Builder translateToBedrock(int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
         if (components != null) {
             PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
             if (potionContents != null) {
@@ -54,6 +55,6 @@ public class TippedArrowItem extends ArrowItem {
                 GeyserImpl.getInstance().getLogger().debug("Unknown Java potion (tipped arrow): " + potionContents.getPotionId());
             }
         }
-        return super.translateToBedrock(count, components, mapping, mappings);
+        return super.translateToBedrock(session, count, components, mapping, mappings);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java b/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java
index 86d66e209..fad13d1bb 100644
--- a/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java
+++ b/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java
@@ -29,21 +29,13 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
 import org.geysermc.geyser.translator.text.MessageTranslator;
+import org.geysermc.geyser.util.SoundUtils;
 
 public record JukeboxSong(String soundEvent, String description) {
 
     public static JukeboxSong read(RegistryEntryContext context) {
         NbtMap data = context.data();
-        Object soundEventObject = data.get("sound_event");
-        String soundEvent;
-        if (soundEventObject instanceof NbtMap map) {
-            soundEvent = map.getString("sound_id");
-        } else if (soundEventObject instanceof String string) {
-            soundEvent = string;
-        } else {
-            soundEvent = "";
-            GeyserImpl.getInstance().getLogger().debug("Sound event for " + context.id() + " was of an unexpected type! Expected string or NBT map, got " + soundEventObject);
-        }
+        String soundEvent = SoundUtils.readSoundEvent(data, "jukebox song " + context.id());;
         String description = MessageTranslator.deserializeDescription(context.session(), data);
         return new JukeboxSong(soundEvent, description);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
index fcbc7c64c..2cc7bd5a6 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
@@ -42,6 +42,7 @@ import org.geysermc.geyser.entity.type.living.animal.tameable.WolfEntity;
 import org.geysermc.geyser.inventory.item.BannerPattern;
 import org.geysermc.geyser.inventory.recipe.TrimRecipe;
 import org.geysermc.geyser.item.enchantment.Enchantment;
+import org.geysermc.geyser.inventory.item.GeyserInstrument;
 import org.geysermc.geyser.level.JavaDimension;
 import org.geysermc.geyser.level.JukeboxSong;
 import org.geysermc.geyser.level.PaintingType;
@@ -90,6 +91,7 @@ public final class RegistryCache {
         register(JavaRegistries.BIOME, (cache, array) -> cache.biomeTranslations = array, BiomeTranslator::loadServerBiome);
         register(JavaRegistries.BANNER_PATTERN, cache -> cache.bannerPatterns, context -> BannerPattern.getByJavaIdentifier(context.id()));
         register(JavaRegistries.WOLF_VARIANT, cache -> cache.wolfVariants, context -> WolfEntity.BuiltInWolfVariant.getByJavaIdentifier(context.id().asString()));
+        register(JavaRegistries.INSTRUMENT, cache -> cache.instruments, GeyserInstrument::read);
 
         // Load from MCProtocolLib's classloader
         NbtMap tag = MinecraftProtocol.loadNetworkCodec();
@@ -129,6 +131,7 @@ public final class RegistryCache {
 
     private final JavaRegistry<BannerPattern> bannerPatterns = new SimpleJavaRegistry<>();
     private final JavaRegistry<WolfEntity.BuiltInWolfVariant> wolfVariants = new SimpleJavaRegistry<>();
+    private final JavaRegistry<GeyserInstrument> instruments = new SimpleJavaRegistry<>();
 
     public RegistryCache(GeyserSession session) {
         this.session = session;
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
index 5927963c0..2663fc511 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
@@ -31,15 +31,18 @@ import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import lombok.Getter;
 import lombok.Setter;
+import net.kyori.adventure.key.Key;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.protocol.bedrock.packet.SetTitlePacket;
-import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.scoreboard.Scoreboard;
 import org.geysermc.geyser.scoreboard.ScoreboardUpdater.ScoreboardSession;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.ChunkUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.UseCooldown;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.Difficulty;
 
 import java.util.Iterator;
@@ -72,7 +75,7 @@ public final class WorldCache {
     @Setter
     private boolean editingSignOnFront;
 
-    private final Object2IntMap<Item> activeCooldowns = new Object2IntOpenHashMap<>(2);
+    private final Object2IntMap<String> activeCooldowns = new Object2IntOpenHashMap<>(2);
 
     public WorldCache(GeyserSession session) {
         this.session = session;
@@ -204,17 +207,24 @@ public final class WorldCache {
         return this.activeRecords.remove(pos);
     }
 
-    public void setCooldown(Item item, int ticks) {
+    public void setCooldown(Key cooldownGroup, int ticks) {
         if (ticks == 0) {
             // As of Java 1.21
-            this.activeCooldowns.removeInt(item);
+            this.activeCooldowns.removeInt(cooldownGroup.asString());
             return;
         }
-        this.activeCooldowns.put(item, session.getTicks() + ticks);
+        this.activeCooldowns.put(cooldownGroup.asString(), session.getTicks() + ticks);
     }
 
-    public boolean hasCooldown(Item item) {
-        return this.activeCooldowns.containsKey(item);
+    public boolean hasCooldown(GeyserItemStack item) {
+        UseCooldown cooldown = item.getComponent(DataComponentType.USE_COOLDOWN);
+        String cooldownGroup;
+        if (cooldown != null && cooldown.cooldownGroup() != null) {
+            cooldownGroup = cooldown.cooldownGroup().asString();
+        } else {
+            cooldownGroup = item.asItem().javaIdentifier();
+        }
+        return this.activeCooldowns.containsKey(cooldownGroup);
     }
 
     public void tick() {
@@ -222,9 +232,9 @@ public final class WorldCache {
         // but we don't want the cooldown field to balloon in size from overuse.
         if (!this.activeCooldowns.isEmpty()) {
             int ticks = session.getTicks();
-            Iterator<Object2IntMap.Entry<Item>> it = Object2IntMaps.fastIterator(this.activeCooldowns);
+            Iterator<Object2IntMap.Entry<String>> it = Object2IntMaps.fastIterator(this.activeCooldowns);
             while (it.hasNext()) {
-                Object2IntMap.Entry<Item> entry = it.next();
+                Object2IntMap.Entry<String> entry = it.next();
                 if (entry.getIntValue() <= ticks) {
                     it.remove();
                 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
index cb51f488e..f0cd3afde 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
@@ -33,6 +33,7 @@ import org.geysermc.geyser.entity.type.living.animal.tameable.WolfEntity;
 import org.geysermc.geyser.inventory.item.BannerPattern;
 import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.inventory.item.GeyserInstrument;
 import org.geysermc.geyser.level.JavaDimension;
 import org.geysermc.geyser.level.JukeboxSong;
 import org.geysermc.geyser.level.PaintingType;
@@ -62,6 +63,7 @@ public class JavaRegistries {
     public static final JavaRegistryKey<PaintingType> PAINTING_VARIANT = create("painting_variant", RegistryCache::paintings);
     public static final JavaRegistryKey<TrimMaterial> TRIM_MATERIAL = create("trim_material", RegistryCache::trimMaterials);
     public static final JavaRegistryKey<TrimPattern> TRIM_PATTERN = create("trim_pattern", RegistryCache::trimPatterns);
+    public static final JavaRegistryKey<GeyserInstrument> INSTRUMENT = create("instrument", RegistryCache::instruments);
     /**
      * This registry should not be used in holder sets, tags, etc. It's simply used as a mapping from Java biomes to Bedrock ones.
      */
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 163eef20b..3cfd00233 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -108,7 +108,7 @@ public final class ItemTranslator {
         ItemMapping bedrockItem = session.getItemMappings().getMapping(data);
         Item javaItem = bedrockItem.getJavaItem();
 
-        GeyserItemStack itemStack = javaItem.translateToJava(data, bedrockItem, session.getItemMappings());
+        GeyserItemStack itemStack = javaItem.translateToJava(session, data, bedrockItem, session.getItemMappings());
 
         NbtMap nbt = data.getTag();
         if (nbt != null && !nbt.isEmpty()) {
@@ -198,7 +198,7 @@ public final class ItemTranslator {
             nbtMapBuilder.putIfAbsent("ench", NbtList.EMPTY);
         }
 
-        ItemData.Builder builder = javaItem.translateToBedrock(count, components, bedrockItem, session.getItemMappings());
+        ItemData.Builder builder = javaItem.translateToBedrock(session, count, components, bedrockItem, session.getItemMappings());
         // Finalize the Bedrock NBT
         builder.tag(nbtBuilder.build());
         if (bedrockItem.isBlock()) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
index 421e082b1..422c45b9b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
@@ -42,6 +42,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.transaction.LegacySetIte
 import org.cloudburstmc.protocol.bedrock.packet.ContainerOpenPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryTransactionPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEventPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlaySoundPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateBlockPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.Entity;
@@ -51,6 +52,7 @@ import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.PlayerInventory;
 import org.geysermc.geyser.inventory.click.Click;
+import org.geysermc.geyser.inventory.item.GeyserInstrument;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.item.type.BoatItem;
@@ -75,6 +77,7 @@ import org.geysermc.geyser.util.CooldownUtils;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.geyser.util.SoundUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.Holder;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
@@ -379,18 +382,28 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                                 session.setCurrentBook(packet.getItemInHand());
                             } else if (session.getPlayerInventory().getItemInHand().asItem() == Items.GOAT_HORN) {
                                 // Temporary workaround while we don't have full item/block use tracking.
-                                if (!session.getWorldCache().hasCooldown(Items.GOAT_HORN)) {
-                                    Holder<Instrument> instrument = session.getPlayerInventory()
+                                if (!session.getWorldCache().hasCooldown(session.getPlayerInventory().getItemInHand())) {
+                                    Holder<Instrument> holder = session.getPlayerInventory()
                                         .getItemInHand()
                                         .getComponent(DataComponentType.INSTRUMENT);
-                                    if (instrument != null && instrument.isId()) {
-                                        // BDS uses a LevelSoundEvent2Packet, but that doesn't work here... (as of 1.21.20)
-                                        LevelSoundEventPacket soundPacket = new LevelSoundEventPacket();
-                                        soundPacket.setSound(SoundEvent.valueOf("GOAT_CALL_" + instrument.id()));
-                                        soundPacket.setPosition(session.getPlayerEntity().getPosition());
-                                        soundPacket.setIdentifier("minecraft:player");
-                                        soundPacket.setExtraData(-1);
-                                        session.sendUpstreamPacket(soundPacket);
+                                    if (holder != null) {
+                                        GeyserInstrument instrument = GeyserInstrument.fromHolder(session, holder);
+                                        if (instrument.bedrockInstrument() != null) {
+                                            // BDS uses a LevelSoundEvent2Packet, but that doesn't work here... (as of 1.21.20)
+                                            LevelSoundEventPacket soundPacket = new LevelSoundEventPacket();
+                                            soundPacket.setSound(SoundEvent.valueOf("GOAT_CALL_" + instrument.bedrockInstrument().ordinal()));
+                                            soundPacket.setPosition(session.getPlayerEntity().getPosition());
+                                            soundPacket.setIdentifier("minecraft:player");
+                                            soundPacket.setExtraData(-1);
+                                            session.sendUpstreamPacket(soundPacket);
+                                        } else {
+                                            PlaySoundPacket playSoundPacket = new PlaySoundPacket();
+                                            playSoundPacket.setPosition(session.getPlayerEntity().position());
+                                            playSoundPacket.setSound(SoundUtils.translatePlaySound(instrument.soundEvent()));
+                                            playSoundPacket.setPitch(1.0F);
+                                            playSoundPacket.setVolume(instrument.range() / 16.0F);
+                                            session.sendUpstreamPacket(playSoundPacket);
+                                        }
                                     }
                                 }
                             }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
index 168992dd4..2b14f015f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.java.level;
 
+import net.kyori.adventure.key.Key;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundCooldownPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerStartItemCooldownPacket;
 import org.geysermc.geyser.item.Items;
@@ -39,7 +40,11 @@ public class JavaCooldownTranslator extends PacketTranslator<ClientboundCooldown
 
     @Override
     public void translate(GeyserSession session, ClientboundCooldownPacket packet) {
-        Item item = Registries.JAVA_ITEMS.get().get(0); // FIXME
+        // If the cooldown group is a modded item, an item that Bedrock doesn't support custom cooldowns for, or a custom cooldown group,
+        // then the cooldown won't be translated correctly. The cooldown won't show up on Bedrock, but they are still unable to use the item.
+        Key cooldownGroup = packet.getCooldownGroup();
+        Item item = Registries.JAVA_ITEM_IDENTIFIERS.get(cooldownGroup.asString());
+
         // Not every item, as of 1.19, appears to be server-driven. Just these two.
         // Use a map here if it gets too big.
         String cooldownCategory;
@@ -58,6 +63,6 @@ public class JavaCooldownTranslator extends PacketTranslator<ClientboundCooldown
             session.sendUpstreamPacket(bedrockPacket);
         }
 
-        session.getWorldCache().setCooldown(item, packet.getCooldownTicks());
+        session.getWorldCache().setCooldown(cooldownGroup, packet.getCooldownTicks());
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java
index eca86ff32..5c3b21b5a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/text/MessageTranslator.java
@@ -137,6 +137,18 @@ public class MessageTranslator {
         return convertMessage(message, locale, true);
     }
 
+    /**
+     * Convert a Java message to the legacy format ready for bedrock, for use in item tooltips
+     * (a gray color is applied).
+     *
+     * @param message Java message
+     * @param locale Locale to use for translation strings
+     * @return Parsed and formatted message for bedrock, in gray color
+     */
+    public static String convertMessageForTooltip(Component message, String locale) {
+        return RESET + ChatColor.GRAY + convertMessageRaw(message, locale);
+    }
+
     /**
      * Convert a Java message to the legacy format ready for bedrock. Unlike {@link #convertMessage(Component, String)}
      * this version does not add a leading color reset. In Bedrock some places have build-in colors.
@@ -422,6 +434,15 @@ public class MessageTranslator {
         return convertMessage(session, parsed);
     }
 
+    /**
+     * Deserialize an NbtMap with a description text component (usually provided from a registry) into a Bedrock-formatted string.
+     */
+    public static String deserializeDescriptionForTooltip(GeyserSession session, NbtMap tag) {
+        Object description = tag.get("description");
+        Component parsed = componentFromNbtTag(description);
+        return convertMessageForTooltip(parsed, session.locale());
+    }
+
     public static Component componentFromNbtTag(Object nbtTag) {
         return componentFromNbtTag(nbtTag, Style.empty());
     }
diff --git a/core/src/main/java/org/geysermc/geyser/util/SoundUtils.java b/core/src/main/java/org/geysermc/geyser/util/SoundUtils.java
index 693ce136a..d1c1c77e3 100644
--- a/core/src/main/java/org/geysermc/geyser/util/SoundUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/SoundUtils.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.util;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3f;
+import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.data.SoundEvent;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
@@ -162,6 +163,20 @@ public final class SoundUtils {
         session.sendUpstreamPacket(soundPacket);
     }
 
+    public static String readSoundEvent(NbtMap data, String context) {
+        Object soundEventObject = data.get("sound_event");
+        String soundEvent;
+        if (soundEventObject instanceof NbtMap map) {
+            soundEvent = map.getString("sound_id");
+        } else if (soundEventObject instanceof String string) {
+            soundEvent = string;
+        } else {
+            soundEvent = "";
+            GeyserImpl.getInstance().getLogger().debug("Sound event for " + context + " was of an unexpected type! Expected string or NBT map, got " + soundEventObject);
+        }
+        return soundEvent;
+    }
+
     private SoundUtils() {
     }
 }

From 4da8eca99abeb86da93b9a13a1b4bd5735439fb9 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 31 Oct 2024 19:31:34 -0400
Subject: [PATCH 042/165] Cleanup and update Adapters

---
 .../geyser/inventory/recipe/GeyserRecipe.java |  2 +-
 .../geyser/session/cache/RegistryCache.java   | 62 ++++++++++++-------
 .../cache/registry/JavaRegistries.java        | 27 --------
 gradle/libs.versions.toml                     |  2 +-
 4 files changed, 43 insertions(+), 50 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
index d9cae943f..b0f5a1b44 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
@@ -29,7 +29,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 /**
- * A more compact version of {link org.geysermc.mcprotocollib.protocol.data.game.recipe.Recipe}.
+ * A more compact version of {@link org.geysermc.mcprotocollib.protocol.data.game.recipe.display.RecipeDisplay}.
  */
 public interface GeyserRecipe {
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
index 2cc7bd5a6..ecd293bff 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/RegistryCache.java
@@ -40,9 +40,9 @@ import org.cloudburstmc.protocol.bedrock.data.TrimPattern;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.entity.type.living.animal.tameable.WolfEntity;
 import org.geysermc.geyser.inventory.item.BannerPattern;
+import org.geysermc.geyser.inventory.item.GeyserInstrument;
 import org.geysermc.geyser.inventory.recipe.TrimRecipe;
 import org.geysermc.geyser.item.enchantment.Enchantment;
-import org.geysermc.geyser.inventory.item.GeyserInstrument;
 import org.geysermc.geyser.level.JavaDimension;
 import org.geysermc.geyser.level.JukeboxSong;
 import org.geysermc.geyser.level.PaintingType;
@@ -77,35 +77,35 @@ import java.util.function.ToIntFunction;
 @Accessors(fluent = true)
 @Getter
 public final class RegistryCache {
-    private static final Map<JavaRegistryKey<?>, Map<Key, NbtMap>> DEFAULTS;
-    private static final Map<JavaRegistryKey<?>, BiConsumer<RegistryCache, List<RegistryEntry>>> REGISTRIES = new HashMap<>();
+    private static final Map<Key, Map<Key, NbtMap>> DEFAULTS;
+    private static final Map<Key, BiConsumer<RegistryCache, List<RegistryEntry>>> REGISTRIES = new HashMap<>();
 
     static {
-        register(JavaRegistries.CHAT_TYPE, cache -> cache.chatTypes, ChatDecoration::readChatType);
-        register(JavaRegistries.DIMENSION_TYPE, cache -> cache.dimensions, JavaDimension::read);
+        register("chat_type", cache -> cache.chatTypes, ChatDecoration::readChatType);
+        register("dimension_type", cache -> cache.dimensions, JavaDimension::read);
         register(JavaRegistries.ENCHANTMENT, cache -> cache.enchantments, Enchantment::read);
-        register(JavaRegistries.JUKEBOX_SONG, cache -> cache.jukeboxSongs, JukeboxSong::read);
-        register(JavaRegistries.PAINTING_VARIANT, cache -> cache.paintings, context -> PaintingType.getByName(context.id()));
-        register(JavaRegistries.TRIM_MATERIAL, cache -> cache.trimMaterials, TrimRecipe::readTrimMaterial);
-        register(JavaRegistries.TRIM_PATTERN, cache -> cache.trimPatterns, TrimRecipe::readTrimPattern);
-        register(JavaRegistries.BIOME, (cache, array) -> cache.biomeTranslations = array, BiomeTranslator::loadServerBiome);
-        register(JavaRegistries.BANNER_PATTERN, cache -> cache.bannerPatterns, context -> BannerPattern.getByJavaIdentifier(context.id()));
-        register(JavaRegistries.WOLF_VARIANT, cache -> cache.wolfVariants, context -> WolfEntity.BuiltInWolfVariant.getByJavaIdentifier(context.id().asString()));
-        register(JavaRegistries.INSTRUMENT, cache -> cache.instruments, GeyserInstrument::read);
+        register("instrument", cache -> cache.instruments, GeyserInstrument::read);
+        register("jukebox_song", cache -> cache.jukeboxSongs, JukeboxSong::read);
+        register("painting_variant", cache -> cache.paintings, context -> PaintingType.getByName(context.id()));
+        register("trim_material", cache -> cache.trimMaterials, TrimRecipe::readTrimMaterial);
+        register("trim_pattern", cache -> cache.trimPatterns, TrimRecipe::readTrimPattern);
+        register("worldgen/biome", (cache, array) -> cache.biomeTranslations = array, BiomeTranslator::loadServerBiome);
+        register("banner_pattern", cache -> cache.bannerPatterns, context -> BannerPattern.getByJavaIdentifier(context.id()));
+        register("wolf_variant", cache -> cache.wolfVariants, context -> WolfEntity.BuiltInWolfVariant.getByJavaIdentifier(context.id().asString()));
 
         // Load from MCProtocolLib's classloader
         NbtMap tag = MinecraftProtocol.loadNetworkCodec();
-        Map<JavaRegistryKey<?>, Map<Key, NbtMap>> defaults = new HashMap<>();
+        Map<Key, Map<Key, NbtMap>> defaults = new HashMap<>();
         // Don't create a keySet - no need to create the cached object in HashMap if we don't use it again
-        REGISTRIES.forEach((registry, $) -> {
-            List<NbtMap> rawValues = tag.getCompound(registry.registryKey().asString()).getList("value", NbtType.COMPOUND);
+        REGISTRIES.forEach((key, $) -> {
+            List<NbtMap> rawValues = tag.getCompound(key.asString()).getList("value", NbtType.COMPOUND);
             Map<Key, NbtMap> values = new HashMap<>();
             for (NbtMap value : rawValues) {
                 Key name = MinecraftKey.key(value.getString("name"));
                 values.put(name, value.getCompound("element"));
             }
             // Can make these maps immutable and as efficient as possible after initialization
-            defaults.put(registry, Map.copyOf(values));
+            defaults.put(key, Map.copyOf(values));
         });
 
         DEFAULTS = Map.copyOf(defaults);
@@ -141,7 +141,7 @@ public final class RegistryCache {
      * Loads a registry in, if we are tracking it.
      */
     public void load(ClientboundRegistryDataPacket packet) {
-        var reader = REGISTRIES.get(JavaRegistries.fromKey(packet.getRegistry()));
+        var reader = REGISTRIES.get(packet.getRegistry());
         if (reader != null) {
             reader.accept(this, packet.getEntries());
         } else {
@@ -155,7 +155,27 @@ public final class RegistryCache {
      * @param reader converts the RegistryEntry NBT into a class file
      * @param <T> the class that represents these entries.
      */
-    private static <T> void register(JavaRegistryKey<T> registry, Function<RegistryCache, JavaRegistry<T>> localCacheFunction, Function<RegistryEntryContext, T> reader) {
+    private static <T> void register(String registry, Function<RegistryCache, JavaRegistry<T>> localCacheFunction, Function<RegistryEntryContext, T> reader) {
+        register(MinecraftKey.key(registry), localCacheFunction, reader);
+    }
+
+    /**
+     * @param registry the Java registry resource location.
+     * @param localCacheFunction which local field in RegistryCache are we caching entries for this registry?
+     * @param reader converts the RegistryEntry NBT into a class file
+     * @param <T> the class that represents these entries.
+     */
+    private static <T> void register(JavaRegistryKey<?> registry, Function<RegistryCache, JavaRegistry<T>> localCacheFunction, Function<RegistryEntryContext, T> reader) {
+        register(registry.registryKey(), localCacheFunction, reader);
+    }
+
+    /**
+     * @param registry the Java registry resource location.
+     * @param localCacheFunction which local field in RegistryCache are we caching entries for this registry?
+     * @param reader converts the RegistryEntry NBT into a class file
+     * @param <T> the class that represents these entries.
+     */
+    private static <T> void register(Key registry, Function<RegistryCache, JavaRegistry<T>> localCacheFunction, Function<RegistryEntryContext, T> reader) {
         REGISTRIES.put(registry, (registryCache, entries) -> {
             Map<Key, NbtMap> localRegistry = null;
             JavaRegistry<T> localCache = localCacheFunction.apply(registryCache);
@@ -192,8 +212,8 @@ public final class RegistryCache {
     /**
      * @param localCacheFunction the int array to set the final values to.
      */
-    private static void register(JavaRegistryKey<?> registry, BiConsumer<RegistryCache, int[]> localCacheFunction, ToIntFunction<RegistryEntry> reader) {
-        REGISTRIES.put(registry, (registryCache, entries) -> {
+    private static void register(String registry, BiConsumer<RegistryCache, int[]> localCacheFunction, ToIntFunction<RegistryEntry> reader) {
+        REGISTRIES.put(MinecraftKey.key(registry), (registryCache, entries) -> {
             Int2IntMap temp = new Int2IntOpenHashMap();
             int greatestId = 0;
             for (int i = 0; i < entries.size(); i++) {
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
index f0cd3afde..646b647d0 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/registry/JavaRegistries.java
@@ -27,23 +27,14 @@ package org.geysermc.geyser.session.cache.registry;
 
 import net.kyori.adventure.key.Key;
 import org.checkerframework.checker.nullness.qual.Nullable;
-import org.cloudburstmc.protocol.bedrock.data.TrimMaterial;
-import org.cloudburstmc.protocol.bedrock.data.TrimPattern;
-import org.geysermc.geyser.entity.type.living.animal.tameable.WolfEntity;
-import org.geysermc.geyser.inventory.item.BannerPattern;
 import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.inventory.item.GeyserInstrument;
-import org.geysermc.geyser.level.JavaDimension;
-import org.geysermc.geyser.level.JukeboxSong;
-import org.geysermc.geyser.level.PaintingType;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.ListRegistry;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.cache.RegistryCache;
 import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.mcprotocollib.protocol.data.game.chat.ChatType;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -56,20 +47,7 @@ public class JavaRegistries {
 
     public static final JavaRegistryKey<Block> BLOCK = create("block", BlockRegistries.JAVA_BLOCKS, Block::javaId);
     public static final JavaRegistryKey<Item> ITEM = create("item", Registries.JAVA_ITEMS, Item::javaId);
-    public static final JavaRegistryKey<ChatType> CHAT_TYPE = create("chat_type", RegistryCache::chatTypes);
-    public static final JavaRegistryKey<JavaDimension> DIMENSION_TYPE = create("dimension_type", RegistryCache::dimensions);
     public static final JavaRegistryKey<Enchantment> ENCHANTMENT = create("enchantment", RegistryCache::enchantments);
-    public static final JavaRegistryKey<JukeboxSong> JUKEBOX_SONG = create("jukebox_song", RegistryCache::jukeboxSongs);
-    public static final JavaRegistryKey<PaintingType> PAINTING_VARIANT = create("painting_variant", RegistryCache::paintings);
-    public static final JavaRegistryKey<TrimMaterial> TRIM_MATERIAL = create("trim_material", RegistryCache::trimMaterials);
-    public static final JavaRegistryKey<TrimPattern> TRIM_PATTERN = create("trim_pattern", RegistryCache::trimPatterns);
-    public static final JavaRegistryKey<GeyserInstrument> INSTRUMENT = create("instrument", RegistryCache::instruments);
-    /**
-     * This registry should not be used in holder sets, tags, etc. It's simply used as a mapping from Java biomes to Bedrock ones.
-     */
-    public static final JavaRegistryKey<Integer> BIOME = create("worldgen/biome");
-    public static final JavaRegistryKey<BannerPattern> BANNER_PATTERN = create("banner_pattern", RegistryCache::bannerPatterns);
-    public static final JavaRegistryKey<WolfEntity.BuiltInWolfVariant> WOLF_VARIANT = create("wolf_variant", RegistryCache::wolfVariants);
 
     private static <T> JavaRegistryKey<T> create(String key, JavaRegistryKey.NetworkSerializer<T> networkSerializer, JavaRegistryKey.NetworkDeserializer<T> networkDeserializer) {
         JavaRegistryKey<T> registry = new JavaRegistryKey<>(MinecraftKey.key(key), networkSerializer, networkDeserializer);
@@ -85,11 +63,6 @@ public class JavaRegistries {
         return create(key, (session, object) -> getter.get(session.getRegistryCache()).byValue(object), (session, id) -> getter.get(session.getRegistryCache()).byId(id));
     }
 
-    private static <T> JavaRegistryKey<T> create(String key) {
-        // Cast for ambiguous call
-        return create(key, (JavaRegistryKey.NetworkSerializer<T>) null, null);
-    }
-
     @Nullable
     public static JavaRegistryKey<?> fromKey(Key registryKey) {
         for (JavaRegistryKey<?> registry : VALUES) {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index a88862965..9031799cf 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -25,7 +25,7 @@ jline = "3.21.0"
 terminalconsoleappender = "1.2.0"
 folia = "1.19.4-R0.1-SNAPSHOT"
 viaversion = "4.9.2"
-adapters = "1.13-SNAPSHOT"
+adapters = "1.14-SNAPSHOT"
 cloud = "2.0.0-rc.2"
 cloud-minecraft = "2.0.0-beta.9"
 cloud-minecraft-modded = "2.0.0-beta.7"

From edd62eb39e71cf23ee64141392766a86656bfd40 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 31 Oct 2024 19:48:22 -0400
Subject: [PATCH 043/165] Update CodecProcessor

---
 .../geysermc/geyser/level/JukeboxSong.java    |  3 +-
 .../geyser/network/CodecProcessor.java        | 25 ++++++-
 .../BedrockMoveEntityAbsoluteTranslator.java  | 74 -------------------
 .../bedrock/BedrockPlayerInputTranslator.java | 49 ------------
 .../player/BedrockRiderJumpTranslator.java    | 49 ------------
 5 files changed, 25 insertions(+), 175 deletions(-)
 delete mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockRiderJumpTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java b/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java
index fad13d1bb..1bed4099a 100644
--- a/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java
+++ b/core/src/main/java/org/geysermc/geyser/level/JukeboxSong.java
@@ -26,7 +26,6 @@
 package org.geysermc.geyser.level;
 
 import org.cloudburstmc.nbt.NbtMap;
-import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.SoundUtils;
@@ -35,7 +34,7 @@ public record JukeboxSong(String soundEvent, String description) {
 
     public static JukeboxSong read(RegistryEntryContext context) {
         NbtMap data = context.data();
-        String soundEvent = SoundUtils.readSoundEvent(data, "jukebox song " + context.id());;
+        String soundEvent = SoundUtils.readSoundEvent(data, "jukebox song " + context.id());
         String description = MessageTranslator.deserializeDescription(context.session(), data);
         return new JukeboxSong(soundEvent, description);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
index d5a4dd246..15aa8bc2c 100644
--- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
+++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
@@ -31,11 +31,13 @@ import org.cloudburstmc.protocol.bedrock.codec.BedrockCodecHelper;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockPacketSerializer;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MobArmorEquipmentSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MobEquipmentSerializer_v291;
+import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MoveEntityAbsoluteSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.PlayerHotbarSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.SetEntityLinkSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v390.serializer.PlayerSkinSerializer_v390;
 import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.InventoryContentSerializer_v407;
 import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.InventorySlotSerializer_v407;
+import org.cloudburstmc.protocol.bedrock.codec.v419.serializer.MovePlayerSerializer_v419;
 import org.cloudburstmc.protocol.bedrock.codec.v486.serializer.BossEventSerializer_v486;
 import org.cloudburstmc.protocol.bedrock.codec.v557.serializer.SetEntityDataSerializer_v557;
 import org.cloudburstmc.protocol.bedrock.codec.v662.serializer.SetEntityMotionSerializer_v662;
@@ -67,14 +69,18 @@ import org.cloudburstmc.protocol.bedrock.packet.MapCreateLockedCopyPacket;
 import org.cloudburstmc.protocol.bedrock.packet.MapInfoRequestPacket;
 import org.cloudburstmc.protocol.bedrock.packet.MobArmorEquipmentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.MobEquipmentPacket;
+import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
+import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.MultiplayerSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.NpcRequestPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PhotoInfoRequestPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PhotoTransferPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerHotbarPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerInputPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayerSkinPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PurchaseReceiptPacket;
 import org.cloudburstmc.protocol.bedrock.packet.RefreshEntitlementsPacket;
+import org.cloudburstmc.protocol.bedrock.packet.RiderJumpPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ScriptMessagePacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetEntityDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetEntityLinkPacket;
@@ -189,6 +195,20 @@ class CodecProcessor {
         }
     };
 
+    private static final BedrockPacketSerializer<MovePlayerPacket> MOVE_PLAYER_SERIALIZER = new MovePlayerSerializer_v419() {
+        @Override
+        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, MovePlayerPacket packet) {
+            throw new IllegalArgumentException("Client cannot send MovePlayerPacket in server-auth movement environment!");
+        }
+    };
+
+    private static final BedrockPacketSerializer<MoveEntityAbsolutePacket> MOVE_ENTITY_SERIALIZER = new MoveEntityAbsoluteSerializer_v291() {
+        @Override
+        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, MoveEntityAbsolutePacket packet) {
+            throw new IllegalArgumentException("Client cannot send MoveEntityAbsolutePacket in server-auth movement environment!");
+        }
+    };
+
     /**
      * Serializer that does nothing when trying to deserialize BossEventPacket since it is not used from the client.
      */
@@ -317,7 +337,6 @@ class CodecProcessor {
             .updateSerializer(ClientCheatAbilityPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(CraftingEventPacket.class, ILLEGAL_SERIALIZER)
             // Illegal unusued serverbound packets that relate to unused features
-            //.updateSerializer(PlayerAuthInputPacket.class, ILLEGAL_SERIALIZER) TODO keeping until we determine which packets should replace
             .updateSerializer(ClientCacheBlobStatusPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(SubClientLoginPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(SubChunkRequestPacket.class, ILLEGAL_SERIALIZER)
@@ -333,6 +352,10 @@ class CodecProcessor {
             // Illegal when serverbound due to Geyser specific setup
             .updateSerializer(InventoryContentPacket.class, inventoryContentSerializer)
             .updateSerializer(InventorySlotPacket.class, inventorySlotSerializer)
+            .updateSerializer(MovePlayerPacket.class, MOVE_PLAYER_SERIALIZER)
+            .updateSerializer(MoveEntityAbsolutePacket.class, MOVE_ENTITY_SERIALIZER)
+            .updateSerializer(RiderJumpPacket.class, ILLEGAL_SERIALIZER)
+            .updateSerializer(PlayerInputPacket.class, ILLEGAL_SERIALIZER)
             // Ignored only when serverbound
             .updateSerializer(BossEventPacket.class, BOSS_EVENT_SERIALIZER)
             .updateSerializer(MobArmorEquipmentPacket.class, is712OrAbove ? MOB_ARMOR_EQUIPMENT_SERIALIZER_V712 : MOB_ARMOR_EQUIPMENT_SERIALIZER_V291)
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
deleted file mode 100644
index 81b06c87d..000000000
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMoveEntityAbsoluteTranslator.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.translator.protocol.bedrock;
-
-import org.cloudburstmc.math.vector.Vector3f;
-import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
-import org.geysermc.geyser.entity.type.BoatEntity;
-import org.geysermc.geyser.entity.type.Entity;
-import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundMoveVehiclePacket;
-
-/**
- * Sent by the client when moving a horse or boat.
- */
-@Translator(packet = MoveEntityAbsolutePacket.class)
-public class BedrockMoveEntityAbsoluteTranslator extends PacketTranslator<MoveEntityAbsolutePacket> {
-
-    @Override
-    public void translate(GeyserSession session, MoveEntityAbsolutePacket packet) {
-        Entity ridingEntity = session.getPlayerEntity().getVehicle();
-        if (ridingEntity != null && session.getWorldBorder().isPassingIntoBorderBoundaries(packet.getPosition(), false)) {
-            Vector3f position = Vector3f.from(ridingEntity.getPosition().getX(), packet.getPosition().getY(),
-                    ridingEntity.getPosition().getZ());
-            if (ridingEntity instanceof BoatEntity) {
-                // Undo the changes usually applied to the boat
-//                ridingEntity.as(BoatEntity.class)
-//                        .moveAbsoluteWithoutAdjustments(position, ridingEntity.getYaw(),
-//                        ridingEntity.isOnGround(), true);
-            } else {
-                // This doesn't work if teleported is false
-                ridingEntity.moveAbsolute(position,
-                        ridingEntity.getYaw(), ridingEntity.getPitch(), ridingEntity.getHeadYaw(),
-                        ridingEntity.isOnGround(), true);
-            }
-            return;
-        }
-
-        float y = packet.getPosition().getY();
-        if (ridingEntity instanceof BoatEntity && !ridingEntity.isOnGround()) {
-            // Remove the offset to prevents boats from looking like they're floating in water
-            y -= ridingEntity.getDefinition().offset();
-        }
-        ServerboundMoveVehiclePacket ServerboundMoveVehiclePacket = new ServerboundMoveVehiclePacket(
-                packet.getPosition().getX(), y, packet.getPosition().getZ(),
-                packet.getRotation().getY() - 90, packet.getRotation().getX()
-        );
-        session.sendDownstreamGamePacket(ServerboundMoveVehiclePacket);
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
deleted file mode 100644
index 46d6b9203..000000000
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockPlayerInputTranslator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.translator.protocol.bedrock;
-
-import org.cloudburstmc.math.vector.Vector3f;
-import org.cloudburstmc.protocol.bedrock.packet.PlayerInputPacket;
-import org.geysermc.geyser.entity.type.BoatEntity;
-import org.geysermc.geyser.entity.type.Entity;
-import org.geysermc.geyser.entity.type.living.animal.horse.AbstractHorseEntity;
-import org.geysermc.geyser.entity.type.living.animal.horse.LlamaEntity;
-import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundMoveVehiclePacket;
-
-/**
- * Sent by the client for minecarts and boats.
- */
-@Translator(packet = PlayerInputPacket.class)
-public class BedrockPlayerInputTranslator extends PacketTranslator<PlayerInputPacket> {
-
-    @Override
-    public void translate(GeyserSession session, PlayerInputPacket packet) {
-
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockRiderJumpTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockRiderJumpTranslator.java
deleted file mode 100644
index 17668e000..000000000
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockRiderJumpTranslator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
-
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerState;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerCommandPacket;
-import org.cloudburstmc.protocol.bedrock.packet.RiderJumpPacket;
-import org.geysermc.geyser.entity.type.Entity;
-import org.geysermc.geyser.entity.type.living.animal.horse.AbstractHorseEntity;
-import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
-
-@Translator(packet = RiderJumpPacket.class)
-public class BedrockRiderJumpTranslator extends PacketTranslator<RiderJumpPacket> {
-    @Override
-    public void translate(GeyserSession session, RiderJumpPacket packet) {
-        session.getPlayerEntity().setVehicleJumpStrength(packet.getJumpStrength());
-
-        Entity vehicle = session.getPlayerEntity().getVehicle();
-        if (vehicle instanceof AbstractHorseEntity) {
-            ServerboundPlayerCommandPacket playerCommandPacket = new ServerboundPlayerCommandPacket(vehicle.getEntityId(), PlayerState.START_HORSE_JUMP, packet.getJumpStrength());
-            session.sendDownstreamGamePacket(playerCommandPacket);
-        }
-    }
-}

From df8bd9b58319ea38535906c991484b7593af4871 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 1 Nov 2024 00:39:24 -0400
Subject: [PATCH 044/165] Implement rich commands for Cloud on standalone

---
 .../geyser/command/CommandRegistry.java       | 111 ++++++++++++++++++
 .../protocol/java/JavaCommandsTranslator.java |   5 +
 2 files changed, 116 insertions(+)

diff --git a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
index 54681abea..78e8a5cb1 100644
--- a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
@@ -27,6 +27,13 @@ package org.geysermc.geyser.command;
 
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import org.checkerframework.checker.nullness.qual.NonNull;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandData;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandEnumConstraint;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandEnumData;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandOverloadData;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandParam;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandParamData;
+import org.cloudburstmc.protocol.bedrock.data.command.CommandPermission;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.command.Command;
 import org.geysermc.geyser.api.event.EventRegistrar;
@@ -51,14 +58,26 @@ import org.geysermc.geyser.command.defaults.StopCommand;
 import org.geysermc.geyser.command.defaults.VersionCommand;
 import org.geysermc.geyser.event.type.GeyserDefineCommandsEventImpl;
 import org.geysermc.geyser.extension.command.GeyserExtensionCommand;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.GeyserLocale;
 import org.incendo.cloud.Command.Builder;
 import org.incendo.cloud.CommandManager;
 import org.incendo.cloud.execution.ExecutionCoordinator;
+import org.incendo.cloud.internal.CommandNode;
+import org.incendo.cloud.parser.standard.EnumParser;
+import org.incendo.cloud.parser.standard.IntegerParser;
+import org.incendo.cloud.parser.standard.LiteralParser;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
+import java.util.Set;
 
 import static org.geysermc.geyser.command.GeyserCommand.DEFAULT_ROOT_COMMAND;
 
@@ -299,4 +318,96 @@ public class CommandRegistry implements EventRegistrar {
     public void runCommand(@NonNull GeyserCommandSource source, @NonNull String command) {
         cloud.commandExecutor().executeCommand(source, command);
     }
+
+    public void export(GeyserSession session, List<CommandData> bedrockCommands) {
+        cloud.commandTree().rootNode().children().forEach(commandTree -> {
+            var command = commandTree.command();
+            // Command null happens if you register an extension command with custom Cloud parameters...
+            if (command == null || session.hasPermission(command.commandPermission().permissionString())) {
+                var rootComponent = commandTree.component();
+                String name = rootComponent.name();
+
+                LinkedHashMap<String, Set<CommandEnumConstraint>> values = new LinkedHashMap<>();
+                for (String s : rootComponent.aliases()) {
+                    values.put(s, EnumSet.of(CommandEnumConstraint.ALLOW_ALIASES));
+                }
+                CommandEnumData aliases = new CommandEnumData(name + "Aliases", values, false);
+
+                List<CommandOverloadData> data = new ArrayList<>();
+                for (var node : commandTree.children()) {
+                    List<List<CommandParamData>> params = new ArrayList<>();
+                     createParamData(node, params);
+                     params.forEach(param -> data.add(new CommandOverloadData(false, param.toArray(CommandParamData[]::new))));
+                }
+
+                CommandData bedrockCommand = new CommandData(name, rootComponent.description().textDescription(),
+                    Set.of(CommandData.Flag.NOT_CHEAT), CommandPermission.ANY, aliases,
+                    Collections.emptyList(), data.toArray(new CommandOverloadData[0]));
+                bedrockCommands.add(bedrockCommand);
+            }
+        });
+    }
+
+    private void createParamData(CommandNode<GeyserCommandSource> node, List<List<CommandParamData>> bedrockData) {
+        CommandParamData data = new CommandParamData();
+        var component = node.component();
+        data.setName(component.name());
+        data.setOptional(component.optional());
+        var suggestionProvider = component.suggestionProvider();
+        if (suggestionProvider instanceof LiteralParser<GeyserCommandSource> parser) {
+            Map<String, Set<CommandEnumConstraint>> values = new LinkedHashMap<>();
+            for (String alias : parser.aliases()) {
+                values.put(alias, Set.of());
+            }
+
+            data.setEnumData(new CommandEnumData(component.name(), values, false));
+        } else if (suggestionProvider instanceof IntegerParser<GeyserCommandSource>) {
+            data.setType(CommandParam.INT);
+        } else if (suggestionProvider instanceof EnumParser<?,?> parser) {
+            LinkedHashMap<String, Set<CommandEnumConstraint>> map = new LinkedHashMap<>();
+            for (Enum<?> e : parser.acceptedValues()) {
+                map.put(e.name().toLowerCase(Locale.ROOT), Set.of());
+            }
+
+            data.setEnumData(new CommandEnumData(component.name().toLowerCase(Locale.ROOT), map, false));
+        } else {
+            data.setType(CommandParam.STRING);
+        }
+
+        // This, realistically, is not going to be used without extensions using internals and implementing complicated commands.
+        // It essentially does the same behavior as JavaCommandsTranslator#isCompatible.
+        // But, selfishly, I would like to use it, and in the future it's possible extensions can register commands
+        // using Cloud, and in that case this becomes relevant!
+        if (bedrockData.isEmpty()) {
+            List<CommandParamData> list = new ArrayList<>();
+            list.add(data);
+            bedrockData.add(list);
+        } else {
+            int size = bedrockData.size(); // Preserve original list size in case new entries get added.
+            for (int i = 0; i < size; i++) {
+                List<CommandParamData> cpdList = bedrockData.get(i);
+                if (cpdList.size() <= 1) { // No commands or parent will be root.
+                    cpdList.add(data);
+                } else {
+                    String parentName = node.parent().component().name(); // Should never be null.
+                    if (!cpdList.get(cpdList.size() - 1).getName().equals(parentName)) { // We need to copy the list as this is a new branch.
+                        for (int j = cpdList.size() - 2; j >= 0; j--) {
+                            if (cpdList.get(j).getName().equals(parentName)) {
+                                List<CommandParamData> newList = new ArrayList<>(cpdList.subList(0, j + 1));
+                                newList.add(data);
+                                bedrockData.add(newList);
+                                break;
+                            }
+                        }
+                    } else {
+                        cpdList.add(data);
+                    }
+                }
+            }
+        }
+
+        for (var child : node.children()) {
+            createParamData(child, bedrockData);
+        }
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java
index f189658cd..8eff3d16c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java
@@ -41,6 +41,7 @@ import org.cloudburstmc.protocol.bedrock.data.command.*;
 import org.cloudburstmc.protocol.bedrock.packet.AvailableCommandsPacket;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.event.java.ServerDefineCommandsEvent;
+import org.geysermc.geyser.api.util.PlatformType;
 import org.geysermc.geyser.command.CommandRegistry;
 import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.registry.BlockRegistries;
@@ -213,6 +214,10 @@ public class JavaCommandsTranslator extends PacketTranslator<ClientboundCommands
             commandData.add(createFakeHelpCommand());
         }
 
+        if (session.getGeyser().platformType() == PlatformType.STANDALONE) {
+            session.getGeyser().commandRegistry().export(session, commandData);
+        }
+
         // Add our commands to the AvailableCommandsPacket for the bedrock client
         AvailableCommandsPacket availableCommandsPacket = new AvailableCommandsPacket();
         availableCommandsPacket.getCommands().addAll(commandData);

From dc1674fcbfd321ab2a1c323b4333ba95d08ba596 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 1 Nov 2024 13:13:20 -0400
Subject: [PATCH 045/165] Massively clean up Cloud -> Bedrock code

---
 .../geyser/command/CommandRegistry.java       | 55 ++++++-------------
 1 file changed, 18 insertions(+), 37 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
index 78e8a5cb1..03569d49f 100644
--- a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
@@ -67,6 +67,7 @@ import org.incendo.cloud.internal.CommandNode;
 import org.incendo.cloud.parser.standard.EnumParser;
 import org.incendo.cloud.parser.standard.IntegerParser;
 import org.incendo.cloud.parser.standard.LiteralParser;
+import org.incendo.cloud.parser.standard.StringArrayParser;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -320,7 +321,7 @@ public class CommandRegistry implements EventRegistrar {
     }
 
     public void export(GeyserSession session, List<CommandData> bedrockCommands) {
-        cloud.commandTree().rootNode().children().forEach(commandTree -> {
+        cloud.commandTree().rootNodes().forEach(commandTree -> {
             var command = commandTree.command();
             // Command null happens if you register an extension command with custom Cloud parameters...
             if (command == null || session.hasPermission(command.commandPermission().permissionString())) {
@@ -335,9 +336,8 @@ public class CommandRegistry implements EventRegistrar {
 
                 List<CommandOverloadData> data = new ArrayList<>();
                 for (var node : commandTree.children()) {
-                    List<List<CommandParamData>> params = new ArrayList<>();
-                     createParamData(node, params);
-                     params.forEach(param -> data.add(new CommandOverloadData(false, param.toArray(CommandParamData[]::new))));
+                    List<List<CommandParamData>> params = createParamData(node);
+                    params.forEach(param -> data.add(new CommandOverloadData(false, param.toArray(CommandParamData[]::new))));
                 }
 
                 CommandData bedrockCommand = new CommandData(name, rootComponent.description().textDescription(),
@@ -348,7 +348,7 @@ public class CommandRegistry implements EventRegistrar {
         });
     }
 
-    private void createParamData(CommandNode<GeyserCommandSource> node, List<List<CommandParamData>> bedrockData) {
+    private List<List<CommandParamData>> createParamData(CommandNode<GeyserCommandSource> node) {
         CommandParamData data = new CommandParamData();
         var component = node.component();
         data.setName(component.name());
@@ -370,44 +370,25 @@ public class CommandRegistry implements EventRegistrar {
             }
 
             data.setEnumData(new CommandEnumData(component.name().toLowerCase(Locale.ROOT), map, false));
+        } else if (component.parser() instanceof StringArrayParser<?>) {
+            data.setType(CommandParam.TEXT);
         } else {
             data.setType(CommandParam.STRING);
         }
 
-        // This, realistically, is not going to be used without extensions using internals and implementing complicated commands.
-        // It essentially does the same behavior as JavaCommandsTranslator#isCompatible.
-        // But, selfishly, I would like to use it, and in the future it's possible extensions can register commands
-        // using Cloud, and in that case this becomes relevant!
-        if (bedrockData.isEmpty()) {
-            List<CommandParamData> list = new ArrayList<>();
+        var children = node.children();
+        if (children.isEmpty()) {
+            List<CommandParamData> list = new ArrayList<>(); // Must be mutable; parents will be added to list.
             list.add(data);
-            bedrockData.add(list);
-        } else {
-            int size = bedrockData.size(); // Preserve original list size in case new entries get added.
-            for (int i = 0; i < size; i++) {
-                List<CommandParamData> cpdList = bedrockData.get(i);
-                if (cpdList.size() <= 1) { // No commands or parent will be root.
-                    cpdList.add(data);
-                } else {
-                    String parentName = node.parent().component().name(); // Should never be null.
-                    if (!cpdList.get(cpdList.size() - 1).getName().equals(parentName)) { // We need to copy the list as this is a new branch.
-                        for (int j = cpdList.size() - 2; j >= 0; j--) {
-                            if (cpdList.get(j).getName().equals(parentName)) {
-                                List<CommandParamData> newList = new ArrayList<>(cpdList.subList(0, j + 1));
-                                newList.add(data);
-                                bedrockData.add(newList);
-                                break;
-                            }
-                        }
-                    } else {
-                        cpdList.add(data);
-                    }
-                }
-            }
+            return Collections.singletonList(list); // Safe to do; will be consumed in an addAll call.
         }
-
-        for (var child : node.children()) {
-            createParamData(child, bedrockData);
+        List<List<CommandParamData>> collectiveData = new ArrayList<>();
+        // If a node has multiple children, this will need to be represented
+        // by creating a new list/branch for each and cloning this node down each line.
+        for (var child : children) {
+            collectiveData.addAll(createParamData(child));
         }
+        collectiveData.forEach(list -> list.add(0, data));
+        return collectiveData;
     }
 }

From dd8a7a7edda4058748c5cd5d9c25adb73f26d524 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 1 Nov 2024 14:42:21 -0400
Subject: [PATCH 046/165] Map experimental items to 'minecraft:unknown' Bedrock
 block

---
 .../geyser/command/CommandRegistry.java       |  6 ++++-
 .../populator/BlockRegistryPopulator.java     |  2 +-
 .../populator/ItemRegistryPopulator.java      | 26 ++++++++++++-------
 .../protocol/java/JavaCommandsTranslator.java |  2 +-
 .../java/JavaRecipeBookAddTranslator.java     |  7 +++++
 core/src/main/resources/mappings              |  2 +-
 6 files changed, 31 insertions(+), 14 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
index 03569d49f..9de7582a5 100644
--- a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
@@ -320,13 +320,17 @@ public class CommandRegistry implements EventRegistrar {
         cloud.commandExecutor().executeCommand(source, command);
     }
 
-    public void export(GeyserSession session, List<CommandData> bedrockCommands) {
+    public void export(GeyserSession session, List<CommandData> bedrockCommands, Set<String> knownAliases) {
         cloud.commandTree().rootNodes().forEach(commandTree -> {
             var command = commandTree.command();
             // Command null happens if you register an extension command with custom Cloud parameters...
             if (command == null || session.hasPermission(command.commandPermission().permissionString())) {
                 var rootComponent = commandTree.component();
                 String name = rootComponent.name();
+                if (!knownAliases.add(name)) {
+                    // If the server already defined the command, let's not crash.
+                    return;
+                }
 
                 LinkedHashMap<String, Set<CommandEnumConstraint>> values = new LinkedHashMap<>();
                 for (String s : rootComponent.aliases()) {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index a8c3ee89f..b95da4f8f 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -283,7 +283,7 @@ public final class BlockRegistryPopulator {
                         .build();
                 }
 
-                GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.getOrDefault(bedrockTag, airDefinition); // FIXME EEE
+                GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.get(bedrockTag);
 
                 GeyserBedrockBlock bedrockDefinition;
                 CustomBlockState blockStateOverride = BlockRegistries.CUSTOM_BLOCK_STATE_OVERRIDES.get(javaRuntimeId);
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index e8b894759..18a34f088 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -84,6 +84,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -95,7 +96,7 @@ import java.util.concurrent.atomic.AtomicInteger;
  */
 public class ItemRegistryPopulator {
 
-    record PaletteVersion(String version, int protocolVersion, Map<Item, String> javaOnlyItems, Remapper remapper) {
+    record PaletteVersion(String version, int protocolVersion, Map<Item, Item> javaOnlyItems, Remapper remapper) {
 
         public PaletteVersion(String version, int protocolVersion) {
             this(version, protocolVersion, Collections.emptyMap(), (item, mapping) -> mapping);
@@ -109,11 +110,17 @@ public class ItemRegistryPopulator {
     }
 
     public static void populate() {
+        List<Item> bundles = List.of(Items.BUNDLE, Items.BLACK_BUNDLE, Items.BLUE_BUNDLE, Items.BROWN_BUNDLE, Items.CYAN_BUNDLE, Items.GRAY_BUNDLE,
+            Items.GREEN_BUNDLE, Items.LIGHT_BLUE_BUNDLE, Items.LIGHT_GRAY_BUNDLE, Items.LIME_BUNDLE, Items.MAGENTA_BUNDLE, Items.ORANGE_BUNDLE, Items.RED_BUNDLE,
+            Items.PINK_BUNDLE, Items.PURPLE_BUNDLE, Items.WHITE_BUNDLE, Items.YELLOW_BUNDLE);
+        Map<Item, Item> pre1_21_2Items = new HashMap<>();
+        bundles.forEach(bundle -> pre1_21_2Items.put(bundle, Items.SHULKER_SHELL));
+
         List<PaletteVersion> paletteVersions = new ArrayList<>(3);
-        paletteVersions.add(new PaletteVersion("1_20_80", Bedrock_v671.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion685_671::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_0", Bedrock_v685.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion712_685::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_20", Bedrock_v712.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion729_712::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion(), Collections.emptyMap(), Conversion748_729::remapItem));
+        paletteVersions.add(new PaletteVersion("1_20_80", Bedrock_v671.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion685_671::remapItem));
+        paletteVersions.add(new PaletteVersion("1_21_0", Bedrock_v685.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion712_685::remapItem));
+        paletteVersions.add(new PaletteVersion("1_21_20", Bedrock_v712.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion729_712::remapItem));
+        paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion748_729::remapItem));
         paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
@@ -227,7 +234,7 @@ public class ItemRegistryPopulator {
 
             Set<Item> javaOnlyItems = new ObjectOpenHashSet<>();
             Collections.addAll(javaOnlyItems, Items.SPECTRAL_ARROW, Items.DEBUG_STICK,
-                    Items.KNOWLEDGE_BOOK, Items.TIPPED_ARROW, Items.BUNDLE);
+                    Items.KNOWLEDGE_BOOK, Items.TIPPED_ARROW);
             if (!customItemsAllowed) {
                 javaOnlyItems.add(Items.FURNACE_MINECART);
             }
@@ -243,9 +250,9 @@ public class ItemRegistryPopulator {
                     throw new RuntimeException("Extra item in mappings? " + entry.getKey());
                 }
                 GeyserMappingItem mappingItem;
-                String replacementItem = palette.javaOnlyItems().get(javaItem);
+                Item replacementItem = palette.javaOnlyItems().get(javaItem);
                 if (replacementItem != null) {
-                    mappingItem = items.get(replacementItem); // java only item, a java id fallback has been provided
+                    mappingItem = items.get(replacementItem.javaIdentifier()); // java only item, a java id fallback has been provided
                 } else {
                     // check if any mapping changes need to be made on this version
                     mappingItem = palette.remapper().remap(javaItem, entry.getValue());
@@ -260,8 +267,7 @@ public class ItemRegistryPopulator {
                 String bedrockIdentifier = mappingItem.getBedrockIdentifier();
                 ItemDefinition definition = definitions.get(bedrockIdentifier);
                 if (definition == null) {
-                    definition = definitions.get("minecraft:air");
-                    //throw new RuntimeException("Missing Bedrock ItemDefinition in version " + palette.version() + " for mapping: " + mappingItem);
+                    throw new RuntimeException("Missing Bedrock ItemDefinition in version " + palette.version() + " for mapping: " + mappingItem);
                 }
 
                 BlockDefinition bedrockBlock = null;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java
index 8eff3d16c..5500deb80 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCommandsTranslator.java
@@ -215,7 +215,7 @@ public class JavaCommandsTranslator extends PacketTranslator<ClientboundCommands
         }
 
         if (session.getGeyser().platformType() == PlatformType.STANDALONE) {
-            session.getGeyser().commandRegistry().export(session, commandData);
+            session.getGeyser().commandRegistry().export(session, commandData, knownAliases);
         }
 
         // Add our commands to the AvailableCommandsPacket for the bedrock client
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 5cc2e3063..d59d608a2 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -110,6 +110,9 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     for (int i = 0; i < left.size(); i++) {
                         List<ItemDescriptorWithCount> inputs = left.get(i);
                         String recipeId = contents.id() + "_" + i;
+                        if (recipeId.equals("1318_0")) {
+                            System.out.println(display);
+                        }
                         int recipeNetworkId = netId++;
                         craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
                             shapedRecipe.width(), shapedRecipe.height(), inputs,
@@ -268,8 +271,12 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         Pair<Item, ItemData> pair = translateToOutput(session, display.result());
         if (pair == null || !pair.right().isValid()) {
             // Likely modded item Bedrock will complain about
+            // Implementation note: ItemData#isValid() may return true for air because count might be > 0 and the air definition may not be ItemDefinition.AIR
             return null;
         }
+        if (pair.left() == Items.PALE_OAK_TRAPDOOR) {
+            System.out.println(pair.right());
+        }
 
         ItemData output = pair.right();
         if (!(pair.left() instanceof BedrockRequiresTagItem)) {
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 4200a8c57..e1eafe2c5 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 4200a8c57a79a87b5b9e7ea1aaf9d5522c4f5626
+Subproject commit e1eafe2c5304012d23acba80659459f7868fe2b1

From 293102e60dd98a6d54e667b58c150698874f3489 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 1 Nov 2024 14:44:08 -0400
Subject: [PATCH 047/165] Remove debug code

---
 .../protocol/java/JavaRecipeBookAddTranslator.java          | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index d59d608a2..039afc2e7 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -110,9 +110,6 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                     for (int i = 0; i < left.size(); i++) {
                         List<ItemDescriptorWithCount> inputs = left.get(i);
                         String recipeId = contents.id() + "_" + i;
-                        if (recipeId.equals("1318_0")) {
-                            System.out.println(display);
-                        }
                         int recipeNetworkId = netId++;
                         craftingDataPacket.getCraftingData().add(ShapedRecipeData.shaped(recipeId,
                             shapedRecipe.width(), shapedRecipe.height(), inputs,
@@ -274,9 +271,6 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
             // Implementation note: ItemData#isValid() may return true for air because count might be > 0 and the air definition may not be ItemDefinition.AIR
             return null;
         }
-        if (pair.left() == Items.PALE_OAK_TRAPDOOR) {
-            System.out.println(pair.right());
-        }
 
         ItemData output = pair.right();
         if (!(pair.left() instanceof BedrockRequiresTagItem)) {

From 67a1805fa65374b079e72da6ca8db83da6aabed4 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Fri, 1 Nov 2024 14:48:07 -0400
Subject: [PATCH 048/165] Indicate support for Bedrock 1.21.44

Bedrock are u ok
---
 README.md                                                     | 2 +-
 .../main/java/org/geysermc/geyser/network/GameProtocol.java   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/README.md b/README.md
index fedb5bb96..329a9045e 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.43 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.44 and Minecraft Java 1.21/1.21.1. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index 464edd487..873fa413a 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -52,7 +52,7 @@ public final class GameProtocol {
      * release of the game that Geyser supports.
      */
     public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
-        .minecraftVersion("1.21.43")
+        .minecraftVersion("1.21.44")
         .build());
 
     /**
@@ -83,7 +83,7 @@ public final class GameProtocol {
             .minecraftVersion("1.21.30/1.21.31")
             .build()));
         SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
-            .minecraftVersion("1.21.40/1.21.41/1.21.43")
+            .minecraftVersion("1.21.40 - 1.21.44")
             .build());
     }
 

From 0eec65c1880396a0ba105a58eccea30fa7d08eec Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 31 Oct 2024 18:24:54 +0800
Subject: [PATCH 049/165] Fix: Geyser-NeoForge complaining about jackson

---
 bootstrap/mod/fabric/build.gradle.kts              |  1 -
 bootstrap/mod/neoforge/build.gradle.kts            | 14 ++++++++++++++
 ...eyser.modrinth-uploading-conventions.gradle.kts |  1 +
 gradle/libs.versions.toml                          |  5 +++--
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/bootstrap/mod/fabric/build.gradle.kts b/bootstrap/mod/fabric/build.gradle.kts
index 56bec322e..2599a47b5 100644
--- a/bootstrap/mod/fabric/build.gradle.kts
+++ b/bootstrap/mod/fabric/build.gradle.kts
@@ -46,7 +46,6 @@ tasks.withType<Jar> {
 
 relocate("org.cloudburstmc.netty")
 relocate("org.cloudburstmc.protocol")
-relocate("com.github.steveice10.mc.auth")
 
 tasks {
     remapJar {
diff --git a/bootstrap/mod/neoforge/build.gradle.kts b/bootstrap/mod/neoforge/build.gradle.kts
index 4ab005b4f..23f16d64e 100644
--- a/bootstrap/mod/neoforge/build.gradle.kts
+++ b/bootstrap/mod/neoforge/build.gradle.kts
@@ -13,6 +13,9 @@ architectury {
 provided("org.cloudburstmc.math", "api")
 provided("com.google.errorprone", "error_prone_annotations")
 
+// Jackson shipped by Minecraft is too old, so we shade & relocate our newer version
+relocate("com.fasterxml.jackson")
+
 val includeTransitive: Configuration = configurations.getByName("includeTransitive")
 
 dependencies {
@@ -31,6 +34,12 @@ dependencies {
     }
     shadow(projects.core) { isTransitive = false }
 
+    // Minecraft (1.21.2+) includes jackson. But an old version!
+    shadow(libs.jackson.core) { isTransitive = false }
+    shadow(libs.jackson.databind) { isTransitive = false }
+    shadow(libs.jackson.dataformat.yaml) { isTransitive = false }
+    shadow(libs.jackson.annotations) { isTransitive = false }
+
     // Let's shade in our own api
     shadow(projects.api) { isTransitive = false }
 
@@ -56,6 +65,11 @@ tasks {
     remapModrinthJar {
         archiveBaseName.set("geyser-neoforge")
     }
+
+    shadowJar {
+        // Without this, jackson's service files are not relocated
+        mergeServiceFiles()
+    }
 }
 
 modrinth {
diff --git a/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts b/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
index 3c0d102f7..59f85d182 100644
--- a/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
+++ b/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
@@ -7,6 +7,7 @@ tasks.modrinth.get().dependsOn(tasks.modrinthSyncBody)
 
 modrinth {
     token.set(System.getenv("MODRINTH_TOKEN") ?: "") // Even though this is the default value, apparently this prevents GitHub Actions caching the token?
+    debugMode.set(System.getenv("MODRINTH_TOKEN") == null)
     projectId.set("geyser")
     versionName.set(versionName(project))
     versionNumber.set(projectVersion(project))
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 9031799cf..60fe78448 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -60,7 +60,8 @@ erosion-bukkit-nms = { group = "org.geysermc.erosion", name = "bukkit-nms", vers
 erosion-common = { group = "org.geysermc.erosion", name = "common", version.ref = "erosion" }
 
 jackson-annotations = { group = "com.fasterxml.jackson.core", name = "jackson-annotations", version.ref = "jackson" }
-jackson-core = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson" }
+jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version.ref = "jackson" }
+jackson-core = { group = "com.fasterxml.jackson.core", name = "jackson-core", version.ref = "jackson" }
 jackson-dataformat-yaml = { group = "com.fasterxml.jackson.dataformat", name = "jackson-dataformat-yaml", version.ref = "jackson" }
 
 fastutil-int-int-maps = { group = "com.nukkitx.fastutil", name = "fastutil-int-int-maps", version.ref = "fastutil" }
@@ -150,7 +151,7 @@ indra = { id = "net.kyori.indra", version.ref = "indra" }
 blossom = { id = "net.kyori.blossom", version.ref = "blossom" }
 
 [bundles]
-jackson = [ "jackson-annotations", "jackson-core", "jackson-dataformat-yaml" ]
+jackson = [ "jackson-annotations", "jackson-databind", "jackson-dataformat-yaml" ]
 fastutil = [ "fastutil-int-int-maps", "fastutil-int-long-maps", "fastutil-int-byte-maps", "fastutil-int-boolean-maps", "fastutil-object-int-maps", "fastutil-object-object-maps" ]
 adventure = [ "adventure-text-serializer-gson", "adventure-text-serializer-legacy", "adventure-text-serializer-plain" ]
 log4j = [ "log4j-api", "log4j-core", "log4j-slf4j2-impl" ]

From 734e429cef16049ae0b4b3f39dc168b2b0ce52b1 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 2 Nov 2024 01:38:24 -0400
Subject: [PATCH 050/165] Map Java tags to Bedrock tags in recipes where
 possible

Bedrock tags have been generated from Endstone's devtools.
---
 .../geysermc/geyser/registry/Registries.java  |   8 +
 .../populator/TagRegistryPopulator.java       | 133 +++
 .../geyser/session/cache/TagCache.java        |  11 +-
 .../java/JavaRecipeBookAddTranslator.java     |  14 +
 .../resources/bedrock/item_tags.1_20_80.json  | 784 +++++++++++++++++
 .../resources/bedrock/item_tags.1_21_0.json   | 802 +++++++++++++++++
 .../resources/bedrock/item_tags.1_21_20.json  | 806 ++++++++++++++++++
 .../resources/bedrock/item_tags.1_21_30.json  | 806 ++++++++++++++++++
 .../resources/bedrock/item_tags.1_21_40.json  | 806 ++++++++++++++++++
 9 files changed, 4167 insertions(+), 3 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
 create mode 100644 core/src/main/resources/bedrock/item_tags.1_20_80.json
 create mode 100644 core/src/main/resources/bedrock/item_tags.1_21_0.json
 create mode 100644 core/src/main/resources/bedrock/item_tags.1_21_20.json
 create mode 100644 core/src/main/resources/bedrock/item_tags.1_21_30.json
 create mode 100644 core/src/main/resources/bedrock/item_tags.1_21_40.json

diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index 20b3c9331..b0ae0d6aa 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.registry;
 
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
@@ -48,6 +49,7 @@ import org.geysermc.geyser.registry.loader.SoundRegistryLoader;
 import org.geysermc.geyser.registry.loader.SoundTranslatorRegistryLoader;
 import org.geysermc.geyser.registry.populator.ItemRegistryPopulator;
 import org.geysermc.geyser.registry.populator.PacketRegistryPopulator;
+import org.geysermc.geyser.registry.populator.TagRegistryPopulator;
 import org.geysermc.geyser.registry.provider.ProviderSupplier;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.registry.type.ParticleMapping;
@@ -163,6 +165,11 @@ public final class Registries {
      */
     public static final SimpleMappedDeferredRegistry<String, ResourcePack> RESOURCE_PACKS = SimpleMappedDeferredRegistry.create(GeyserImpl.getInstance().packDirectory(), RegistryLoaders.RESOURCE_PACKS);
 
+    /**
+     * A versioned registry holding most Bedrock tags, with the Java item list (sorted) being the key, and the tag name as the value.
+     */
+    public static final VersionedRegistry<Object2ObjectMap<int[], String>> TAGS = VersionedRegistry.create(RegistryLoaders.empty(Int2ObjectOpenHashMap::new));
+
     /**
      * A mapped registry holding sound identifiers to their corresponding {@link SoundMapping}.
      */
@@ -202,6 +209,7 @@ public final class Registries {
     public static void populate() {
         PacketRegistryPopulator.populate();
         ItemRegistryPopulator.populate();
+        TagRegistryPopulator.populate();
 
         // potion mixes depend on other registries
         POTION_MIXES.load();
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
new file mode 100644
index 000000000..455145217
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry.populator;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+import it.unimi.dsi.fastutil.Hash;
+import it.unimi.dsi.fastutil.ints.IntArrayList;
+import it.unimi.dsi.fastutil.ints.IntList;
+import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
+import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
+import it.unimi.dsi.fastutil.objects.ObjectIntPair;
+import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
+import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
+import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
+import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
+import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
+import org.geysermc.geyser.GeyserBootstrap;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.registry.type.ItemMapping;
+import org.geysermc.geyser.registry.type.ItemMappings;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public final class TagRegistryPopulator {
+    private static final Gson GSON = new GsonBuilder().create(); // temporary
+
+    public static void populate() {
+        List<ObjectIntPair<String>> paletteVersions = List.of(
+            ObjectIntPair.of("1_20_80", Bedrock_v671.CODEC.getProtocolVersion()),
+            ObjectIntPair.of("1_21_0", Bedrock_v685.CODEC.getProtocolVersion()),
+            ObjectIntPair.of("1_21_20", Bedrock_v712.CODEC.getProtocolVersion()),
+            ObjectIntPair.of("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()),
+            ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion())
+        );
+        TypeToken<Map<String, List<String>>> type = new TypeToken<>() {};
+
+        GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
+
+        for (var palette : paletteVersions) {
+            ItemMappings mappings = Registries.ITEMS.forVersion(palette.rightInt());
+
+            Map<String, List<String>> bedrockTags;
+            try (InputStream stream = bootstrap.getResourceOrThrow(String.format("bedrock/item_tags.%s.json", palette.left()))) {
+                bedrockTags = GSON.fromJson(new InputStreamReader(stream), type);
+            } catch (Exception e) {
+                throw new AssertionError("Unable to load Bedrock runtime item IDs", e);
+            }
+
+            Object2ObjectMap<int[], String> javaItemsToBedrockTag = new Object2ObjectOpenCustomHashMap<>(new Hash.Strategy<>() {
+                // Necessary so arrays can actually be compared
+                @Override
+                public int hashCode(int[] o) {
+                    return Arrays.hashCode(o);
+                }
+
+                @Override
+                public boolean equals(int[] a, int[] b) {
+                    return Arrays.equals(a, b);
+                }
+            });
+
+            for (var entry : bedrockTags.entrySet()) {
+                List<String> value = entry.getValue();
+                if (value.isEmpty() || value.size() == 1) {
+                    // For our usecase, we don't need this. Empty values are worthless; one value can just be a reference
+                    // to the item itself, instead of the tag.
+                    continue;
+                }
+
+                // In some cases, the int list will need to be minimized
+                IntList javaNetworkIds = new IntArrayList(value.size());
+                for (int i = 0; i < value.size(); i++) {
+                    String bedrockIdentifier = value.get(i);
+                    Item javaItem = Registries.JAVA_ITEM_IDENTIFIERS.get(bedrockIdentifier);
+                    if (javaItem == null) {
+                        // Time to search the long way around.
+                        for (ItemMapping mapping : mappings.getItems()) {
+                            if (mapping.getBedrockIdentifier().equals(bedrockIdentifier)) {
+                                javaItem = mapping.getJavaItem();
+                                break;
+                            }
+                        }
+                    }
+                    if (javaItem == null) {
+                        // Triggers for Bedrock-only spawn eggs. We don't care.
+                        continue;
+                    }
+
+                    javaNetworkIds.add(javaItem.javaId());
+                }
+
+                int[] javaNetworkIdArray = javaNetworkIds.toIntArray();
+                // Sort IDs so equality checks just have to match if each is equal and not necessarily an order difference.
+                Arrays.sort(javaNetworkIdArray);
+
+                javaItemsToBedrockTag.put(javaNetworkIdArray, entry.getKey());
+            }
+
+            Registries.TAGS.register(palette.rightInt(), javaItemsToBedrockTag);
+        }
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
index f01ef64c5..2b0f257a3 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
@@ -90,13 +90,18 @@ public final class TagCache {
                 }
             }
 
-            loadTags(registryTags, registry);
+            loadTags(registryTags, registry, registry == JavaRegistries.ITEM);
         }
     }
 
-    private void loadTags(Map<Key, int[]> packetTags, JavaRegistryKey<?> registry) {
+    private void loadTags(Map<Key, int[]> packetTags, JavaRegistryKey<?> registry, boolean sort) {
         for (Map.Entry<Key, int[]> tag : packetTags.entrySet()) {
-            this.tags.put(new Tag<>(registry, tag.getKey()), tag.getValue());
+            int[] value = tag.getValue();
+            if (sort) {
+                // Used in RecipeBookAddTranslator
+                Arrays.sort(value);
+            }
+            this.tags.put(new Tag<>(registry, tag.getKey()), value);
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 039afc2e7..05be7db3d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -37,6 +37,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.Shapeles
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.DefaultDescriptor;
 import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemDescriptorWithCount;
+import org.cloudburstmc.protocol.bedrock.data.inventory.descriptor.ItemTagDescriptor;
 import org.cloudburstmc.protocol.bedrock.packet.CraftingDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UnlockedRecipesPacket;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
@@ -190,6 +191,7 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         TAG_TO_ITEM_DESCRIPTOR_CACHE.remove();
     }
 
+    // Arrays are usually an issue in maps, but because it's referencing the tag array that is unchanged, it actually works out for us.
     private static final ThreadLocal<Map<int[], List<ItemDescriptorWithCount>>> TAG_TO_ITEM_DESCRIPTOR_CACHE = ThreadLocal.withInitial(Object2ObjectOpenHashMap::new);
 
     private List<ItemDescriptorWithCount> translateToInput(GeyserSession session, SlotDisplay slotDisplay) {
@@ -228,6 +230,18 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 // Cache is implemented as, presumably, an item tag will be used multiple times in succession
                 // (E.G. a chest with planks tags)
                 return TAG_TO_ITEM_DESCRIPTOR_CACHE.get().computeIfAbsent(items, key -> {
+                    var bedrockTags = Registries.TAGS.forVersion(session.getUpstream().getProtocolVersion());
+                    String bedrockTag = bedrockTags.get(key);
+                    if (bedrockTag != null) {
+                        return Collections.singletonList(
+                            new ItemDescriptorWithCount(new ItemTagDescriptor(bedrockTag), 1)
+                        );
+                    }
+
+                    // In the future, we can probably search through and use subsets of tags as well.
+                    // I.E. if a Bedrock tag contains [stone stone_brick] and the Java tag uses [stone stone_brick bricks]
+                    // we can still use that Bedrock tag alongside plain item descriptors for "bricks".
+
                     Set<ItemDescriptorWithCount> itemDescriptors = new HashSet<>();
                     for (int item : key) {
                         itemDescriptors.add(fromItem(session, item));
diff --git a/core/src/main/resources/bedrock/item_tags.1_20_80.json b/core/src/main/resources/bedrock/item_tags.1_20_80.json
new file mode 100644
index 000000000..4203c96c1
--- /dev/null
+++ b/core/src/main/resources/bedrock/item_tags.1_20_80.json
@@ -0,0 +1,784 @@
+{
+    "minecraft:arrow": [
+        "minecraft:arrow"
+    ],
+    "minecraft:banner": [
+        "minecraft:banner"
+    ],
+    "minecraft:boat": [
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:acacia_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:cherry_chest_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:boats": [
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:acacia_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:cherry_chest_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:bookshelf_books": [
+        "minecraft:book",
+        "minecraft:writable_book",
+        "minecraft:enchanted_book",
+        "minecraft:written_book"
+    ],
+    "minecraft:chainmail_tier": [
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_boots"
+    ],
+    "minecraft:chest_boat": [],
+    "minecraft:coals": [
+        "minecraft:coal",
+        "minecraft:charcoal"
+    ],
+    "minecraft:crimson_stems": [
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:crimson_stem",
+        "minecraft:stripped_crimson_stem"
+    ],
+    "minecraft:decorated_pot_sherds": [
+        "minecraft:blade_pottery_sherd",
+        "minecraft:brick",
+        "minecraft:angler_pottery_sherd",
+        "minecraft:burn_pottery_sherd",
+        "minecraft:archer_pottery_sherd",
+        "minecraft:arms_up_pottery_sherd",
+        "minecraft:heartbreak_pottery_sherd",
+        "minecraft:brewer_pottery_sherd",
+        "minecraft:danger_pottery_sherd",
+        "minecraft:explorer_pottery_sherd",
+        "minecraft:friend_pottery_sherd",
+        "minecraft:heart_pottery_sherd",
+        "minecraft:howl_pottery_sherd",
+        "minecraft:miner_pottery_sherd",
+        "minecraft:mourner_pottery_sherd",
+        "minecraft:plenty_pottery_sherd",
+        "minecraft:skull_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
+        "minecraft:sheaf_pottery_sherd",
+        "minecraft:shelter_pottery_sherd",
+        "minecraft:snort_pottery_sherd"
+    ],
+    "minecraft:diamond_tier": [
+        "minecraft:diamond_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots"
+    ],
+    "minecraft:digger": [
+        "minecraft:stone_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_shovel",
+        "minecraft:iron_axe",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_pickaxe",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:door": [
+        "minecraft:wooden_door",
+        "minecraft:iron_door",
+        "minecraft:spruce_door",
+        "minecraft:birch_door",
+        "minecraft:crimson_door",
+        "minecraft:jungle_door",
+        "minecraft:dark_oak_door",
+        "minecraft:acacia_door",
+        "minecraft:mangrove_door",
+        "minecraft:warped_door",
+        "minecraft:cherry_door",
+        "minecraft:bamboo_door"
+    ],
+    "minecraft:golden_tier": [
+        "minecraft:golden_sword",
+        "minecraft:golden_hoe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:golden_leggings",
+        "minecraft:golden_helmet",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:hanging_actor": [
+        "minecraft:painting"
+    ],
+    "minecraft:hanging_sign": [
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:warped_hanging_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign"
+    ],
+    "minecraft:horse_armor": [
+        "minecraft:leather_horse_armor",
+        "minecraft:iron_horse_armor",
+        "minecraft:golden_horse_armor",
+        "minecraft:diamond_horse_armor"
+    ],
+    "minecraft:iron_tier": [
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_shovel",
+        "minecraft:iron_sword",
+        "minecraft:iron_axe",
+        "minecraft:iron_hoe",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots"
+    ],
+    "minecraft:is_armor": [
+        "minecraft:leather_boots",
+        "minecraft:leather_leggings",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:elytra",
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_boots"
+    ],
+    "minecraft:is_axe": [
+        "minecraft:iron_axe",
+        "minecraft:wooden_axe",
+        "minecraft:diamond_axe",
+        "minecraft:netherite_axe",
+        "minecraft:stone_axe",
+        "minecraft:golden_axe"
+    ],
+    "minecraft:is_cooked": [
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_cod",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_beef",
+        "minecraft:cooked_chicken",
+        "minecraft:cooked_rabbit",
+        "minecraft:cooked_mutton"
+    ],
+    "minecraft:is_fish": [
+        "minecraft:cod",
+        "minecraft:salmon",
+        "minecraft:tropical_fish",
+        "minecraft:pufferfish",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_cod"
+    ],
+    "minecraft:is_food": [
+        "minecraft:porkchop",
+        "minecraft:cooked_mutton",
+        "minecraft:apple",
+        "minecraft:golden_apple",
+        "minecraft:dried_kelp",
+        "minecraft:cooked_porkchop",
+        "minecraft:mushroom_stew",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:bread",
+        "minecraft:cookie",
+        "minecraft:melon_slice",
+        "minecraft:beef",
+        "minecraft:cooked_beef",
+        "minecraft:chicken",
+        "minecraft:cooked_chicken",
+        "minecraft:rotten_flesh",
+        "minecraft:carrot",
+        "minecraft:potato",
+        "minecraft:baked_potato",
+        "minecraft:golden_carrot",
+        "minecraft:pumpkin_pie",
+        "minecraft:beetroot",
+        "minecraft:beetroot_soup",
+        "minecraft:sweet_berries",
+        "minecraft:rabbit",
+        "minecraft:cooked_rabbit",
+        "minecraft:rabbit_stew",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_hoe": [
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:netherite_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe"
+    ],
+    "minecraft:is_meat": [
+        "minecraft:rotten_flesh",
+        "minecraft:porkchop",
+        "minecraft:cooked_mutton",
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_chicken",
+        "minecraft:beef",
+        "minecraft:rabbit",
+        "minecraft:cooked_beef",
+        "minecraft:chicken",
+        "minecraft:cooked_rabbit",
+        "minecraft:rabbit_stew",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_minecart": [
+        "minecraft:minecart",
+        "minecraft:tnt_minecart",
+        "minecraft:chest_minecart",
+        "minecraft:hopper_minecart",
+        "minecraft:command_block_minecart"
+    ],
+    "minecraft:is_pickaxe": [
+        "minecraft:iron_pickaxe",
+        "minecraft:stone_pickaxe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_pickaxe"
+    ],
+    "minecraft:is_shovel": [
+        "minecraft:iron_shovel",
+        "minecraft:golden_shovel",
+        "minecraft:wooden_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:diamond_shovel",
+        "minecraft:netherite_shovel"
+    ],
+    "minecraft:is_sword": [
+        "minecraft:iron_sword",
+        "minecraft:wooden_sword",
+        "minecraft:stone_sword",
+        "minecraft:golden_sword",
+        "minecraft:diamond_sword",
+        "minecraft:netherite_sword"
+    ],
+    "minecraft:is_tool": [
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_shovel",
+        "minecraft:iron_sword",
+        "minecraft:stone_hoe",
+        "minecraft:iron_axe",
+        "minecraft:wooden_sword",
+        "minecraft:diamond_hoe",
+        "minecraft:wooden_shovel",
+        "minecraft:golden_sword",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_axe",
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:netherite_sword",
+        "minecraft:iron_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_trident": [
+        "minecraft:trident"
+    ],
+    "minecraft:leather_tier": [
+        "minecraft:leather_helmet",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:leather_chestplate"
+    ],
+    "minecraft:lectern_books": [
+        "minecraft:writable_book",
+        "minecraft:written_book"
+    ],
+    "minecraft:logs": [
+        "minecraft:oak_log",
+        "minecraft:stripped_oak_wood",
+        "minecraft:spruce_log",
+        "minecraft:crimson_stem",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_wood",
+        "minecraft:oak_wood",
+        "minecraft:dark_oak_log",
+        "minecraft:acacia_log",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:birch_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:warped_hyphae",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:stripped_warped_stem",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_crimson_stem",
+        "minecraft:mangrove_wood",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_acacia_log",
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:stripped_birch_log",
+        "minecraft:warped_stem",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:cherry_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:logs_that_burn": [
+        "minecraft:oak_log",
+        "minecraft:stripped_oak_wood",
+        "minecraft:spruce_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_wood",
+        "minecraft:oak_wood",
+        "minecraft:dark_oak_log",
+        "minecraft:acacia_log",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:birch_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:mangrove_wood",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_acacia_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:cherry_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:mangrove_logs": [
+        "minecraft:mangrove_log",
+        "minecraft:mangrove_wood",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:music_disc": [
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_13",
+        "minecraft:music_disc_cat",
+        "minecraft:music_disc_11",
+        "minecraft:music_disc_blocks",
+        "minecraft:music_disc_mellohi",
+        "minecraft:music_disc_chirp",
+        "minecraft:music_disc_ward",
+        "minecraft:music_disc_far",
+        "minecraft:music_disc_mall",
+        "minecraft:music_disc_strad",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_otherside",
+        "minecraft:music_disc_pigstep",
+        "minecraft:music_disc_5",
+        "minecraft:music_disc_relic"
+    ],
+    "minecraft:netherite_tier": [
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_hoe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_helmet",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_boots"
+    ],
+    "minecraft:piglin_loved": [],
+    "minecraft:piglin_repellents": [],
+    "minecraft:planks": [
+        "minecraft:dark_oak_planks",
+        "minecraft:oak_planks",
+        "minecraft:warped_planks",
+        "minecraft:spruce_planks",
+        "minecraft:birch_planks",
+        "minecraft:jungle_planks",
+        "minecraft:mangrove_planks",
+        "minecraft:acacia_planks",
+        "minecraft:crimson_planks",
+        "minecraft:bamboo_planks",
+        "minecraft:cherry_planks"
+    ],
+    "minecraft:sand": [
+        "minecraft:sand"
+    ],
+    "minecraft:sign": [
+        "minecraft:dark_oak_sign",
+        "minecraft:oak_sign",
+        "minecraft:spruce_sign",
+        "minecraft:crimson_sign",
+        "minecraft:birch_sign",
+        "minecraft:jungle_sign",
+        "minecraft:warped_sign",
+        "minecraft:bamboo_sign",
+        "minecraft:acacia_sign",
+        "minecraft:mangrove_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:cherry_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:warped_hanging_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign"
+    ],
+    "minecraft:soul_fire_base_blocks": [
+        "minecraft:soul_soil",
+        "minecraft:soul_sand"
+    ],
+    "minecraft:spawn_egg": [
+        "minecraft:zombie_villager_spawn_egg",
+        "minecraft:ender_dragon_spawn_egg",
+        "minecraft:zombie_horse_spawn_egg",
+        "minecraft:creeper_spawn_egg",
+        "minecraft:chicken_spawn_egg",
+        "minecraft:skeleton_spawn_egg",
+        "minecraft:cow_spawn_egg",
+        "minecraft:pig_spawn_egg",
+        "minecraft:dolphin_spawn_egg",
+        "minecraft:sheep_spawn_egg",
+        "minecraft:slime_spawn_egg",
+        "minecraft:wolf_spawn_egg",
+        "minecraft:phantom_spawn_egg",
+        "minecraft:mooshroom_spawn_egg",
+        "minecraft:agent_spawn_egg",
+        "minecraft:enderman_spawn_egg",
+        "minecraft:silverfish_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:fox_spawn_egg",
+        "minecraft:spider_spawn_egg",
+        "minecraft:zombie_spawn_egg",
+        "minecraft:bat_spawn_egg",
+        "minecraft:zombie_pigman_spawn_egg",
+        "minecraft:villager_spawn_egg",
+        "minecraft:vex_spawn_egg",
+        "minecraft:llama_spawn_egg",
+        "minecraft:squid_spawn_egg",
+        "minecraft:cat_spawn_egg",
+        "minecraft:ocelot_spawn_egg",
+        "minecraft:witch_spawn_egg",
+        "minecraft:ghast_spawn_egg",
+        "minecraft:allay_spawn_egg",
+        "minecraft:strider_spawn_egg",
+        "minecraft:magma_cube_spawn_egg",
+        "minecraft:blaze_spawn_egg",
+        "minecraft:cave_spider_spawn_egg",
+        "minecraft:guardian_spawn_egg",
+        "minecraft:horse_spawn_egg",
+        "minecraft:husk_spawn_egg",
+        "minecraft:rabbit_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:mule_spawn_egg",
+        "minecraft:stray_spawn_egg",
+        "minecraft:wither_skeleton_spawn_egg",
+        "minecraft:donkey_spawn_egg",
+        "minecraft:skeleton_horse_spawn_egg",
+        "minecraft:shulker_spawn_egg",
+        "minecraft:npc_spawn_egg",
+        "minecraft:elder_guardian_spawn_egg",
+        "minecraft:polar_bear_spawn_egg",
+        "minecraft:cod_spawn_egg",
+        "minecraft:vindicator_spawn_egg",
+        "minecraft:evoker_spawn_egg",
+        "minecraft:parrot_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:salmon_spawn_egg",
+        "minecraft:drowned_spawn_egg",
+        "minecraft:turtle_spawn_egg",
+        "minecraft:piglin_spawn_egg",
+        "minecraft:panda_spawn_egg",
+        "minecraft:pillager_spawn_egg",
+        "minecraft:wandering_trader_spawn_egg",
+        "minecraft:ravager_spawn_egg",
+        "minecraft:bee_spawn_egg",
+        "minecraft:hoglin_spawn_egg",
+        "minecraft:piglin_brute_spawn_egg",
+        "minecraft:sniffer_spawn_egg",
+        "minecraft:axolotl_spawn_egg",
+        "minecraft:goat_spawn_egg",
+        "minecraft:glow_squid_spawn_egg",
+        "minecraft:iron_golem_spawn_egg",
+        "minecraft:snow_golem_spawn_egg",
+        "minecraft:wither_spawn_egg",
+        "minecraft:frog_spawn_egg",
+        "minecraft:tadpole_spawn_egg",
+        "minecraft:warden_spawn_egg",
+        "minecraft:trader_llama_spawn_egg",
+        "minecraft:camel_spawn_egg",
+        "minecraft:armadillo_spawn_egg",
+        "minecraft:spawn_egg"
+    ],
+    "minecraft:stone_bricks": [
+        "minecraft:stonebrick"
+    ],
+    "minecraft:stone_crafting_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:stone_tier": [
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:stone_hoe"
+    ],
+    "minecraft:stone_tool_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:transform_materials": [
+        "minecraft:netherite_ingot"
+    ],
+    "minecraft:transform_templates": [
+        "minecraft:netherite_upgrade_smithing_template"
+    ],
+    "minecraft:transformable_items": [
+        "minecraft:diamond_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:trim_materials": [
+        "minecraft:diamond",
+        "minecraft:emerald",
+        "minecraft:iron_ingot",
+        "minecraft:quartz",
+        "minecraft:lapis_lazuli",
+        "minecraft:gold_ingot",
+        "minecraft:redstone",
+        "minecraft:copper_ingot",
+        "minecraft:netherite_ingot",
+        "minecraft:amethyst_shard"
+    ],
+    "minecraft:trim_templates": [
+        "minecraft:tide_armor_trim_smithing_template",
+        "minecraft:sentry_armor_trim_smithing_template",
+        "minecraft:coast_armor_trim_smithing_template",
+        "minecraft:dune_armor_trim_smithing_template",
+        "minecraft:wild_armor_trim_smithing_template",
+        "minecraft:ward_armor_trim_smithing_template",
+        "minecraft:eye_armor_trim_smithing_template",
+        "minecraft:vex_armor_trim_smithing_template",
+        "minecraft:snout_armor_trim_smithing_template",
+        "minecraft:rib_armor_trim_smithing_template",
+        "minecraft:spire_armor_trim_smithing_template",
+        "minecraft:silence_armor_trim_smithing_template",
+        "minecraft:wayfinder_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:host_armor_trim_smithing_template"
+    ],
+    "minecraft:trimmable_armors": [
+        "minecraft:leather_boots",
+        "minecraft:leather_leggings",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_boots"
+    ],
+    "minecraft:vibration_damper": [
+        "minecraft:pink_wool",
+        "minecraft:lime_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:red_wool",
+        "minecraft:orange_wool",
+        "minecraft:yellow_carpet",
+        "minecraft:light_blue_wool",
+        "minecraft:yellow_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:cyan_wool",
+        "minecraft:purple_wool",
+        "minecraft:purple_carpet",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:green_wool",
+        "minecraft:black_wool",
+        "minecraft:white_carpet",
+        "minecraft:orange_carpet",
+        "minecraft:magenta_carpet",
+        "minecraft:light_blue_carpet",
+        "minecraft:lime_carpet",
+        "minecraft:pink_carpet",
+        "minecraft:gray_carpet",
+        "minecraft:light_gray_carpet",
+        "minecraft:cyan_carpet",
+        "minecraft:blue_carpet",
+        "minecraft:brown_carpet",
+        "minecraft:green_carpet",
+        "minecraft:red_carpet",
+        "minecraft:black_carpet"
+    ],
+    "minecraft:warped_stems": [
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:warped_hyphae",
+        "minecraft:stripped_warped_stem",
+        "minecraft:warped_stem"
+    ],
+    "minecraft:wooden_slabs": [
+        "minecraft:mangrove_slab",
+        "minecraft:birch_slab",
+        "minecraft:cherry_slab",
+        "minecraft:jungle_slab",
+        "minecraft:spruce_slab",
+        "minecraft:bamboo_slab",
+        "minecraft:oak_slab",
+        "minecraft:acacia_slab",
+        "minecraft:dark_oak_slab",
+        "minecraft:crimson_slab",
+        "minecraft:warped_slab"
+    ],
+    "minecraft:wooden_tier": [
+        "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_axe",
+        "minecraft:wooden_hoe"
+    ],
+    "minecraft:wool": [
+        "minecraft:pink_wool",
+        "minecraft:lime_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:red_wool",
+        "minecraft:orange_wool",
+        "minecraft:light_blue_wool",
+        "minecraft:yellow_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:cyan_wool",
+        "minecraft:purple_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:green_wool",
+        "minecraft:black_wool"
+    ]
+}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_0.json b/core/src/main/resources/bedrock/item_tags.1_21_0.json
new file mode 100644
index 000000000..5fac99114
--- /dev/null
+++ b/core/src/main/resources/bedrock/item_tags.1_21_0.json
@@ -0,0 +1,802 @@
+{
+    "minecraft:arrow": [
+        "minecraft:arrow"
+    ],
+    "minecraft:banner": [
+        "minecraft:banner"
+    ],
+    "minecraft:boat": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:boats": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:bookshelf_books": [
+        "minecraft:written_book",
+        "minecraft:book",
+        "minecraft:writable_book",
+        "minecraft:enchanted_book"
+    ],
+    "minecraft:chainmail_tier": [
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots"
+    ],
+    "minecraft:coals": [
+        "minecraft:coal",
+        "minecraft:charcoal"
+    ],
+    "minecraft:crimson_stems": [
+        "minecraft:stripped_crimson_stem",
+        "minecraft:crimson_hyphae",
+        "minecraft:crimson_stem",
+        "minecraft:stripped_crimson_hyphae"
+    ],
+    "minecraft:decorated_pot_sherds": [
+        "minecraft:skull_pottery_sherd",
+        "minecraft:angler_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
+        "minecraft:mourner_pottery_sherd",
+        "minecraft:arms_up_pottery_sherd",
+        "minecraft:burn_pottery_sherd",
+        "minecraft:snort_pottery_sherd",
+        "minecraft:brick",
+        "minecraft:heartbreak_pottery_sherd",
+        "minecraft:miner_pottery_sherd",
+        "minecraft:brewer_pottery_sherd",
+        "minecraft:plenty_pottery_sherd",
+        "minecraft:scrape_pottery_sherd",
+        "minecraft:howl_pottery_sherd",
+        "minecraft:explorer_pottery_sherd",
+        "minecraft:archer_pottery_sherd",
+        "minecraft:blade_pottery_sherd",
+        "minecraft:danger_pottery_sherd",
+        "minecraft:flow_pottery_sherd",
+        "minecraft:friend_pottery_sherd",
+        "minecraft:guster_pottery_sherd",
+        "minecraft:heart_pottery_sherd",
+        "minecraft:sheaf_pottery_sherd",
+        "minecraft:shelter_pottery_sherd"
+    ],
+    "minecraft:diamond_tier": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots"
+    ],
+    "minecraft:digger": [
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:door": [
+        "minecraft:warped_door",
+        "minecraft:waxed_weathered_copper_door",
+        "minecraft:wooden_door",
+        "minecraft:iron_door",
+        "minecraft:mangrove_door",
+        "minecraft:exposed_copper_door",
+        "minecraft:bamboo_door",
+        "minecraft:weathered_copper_door",
+        "minecraft:jungle_door",
+        "minecraft:spruce_door",
+        "minecraft:birch_door",
+        "minecraft:acacia_door",
+        "minecraft:dark_oak_door",
+        "minecraft:crimson_door",
+        "minecraft:cherry_door",
+        "minecraft:copper_door",
+        "minecraft:oxidized_copper_door",
+        "minecraft:waxed_copper_door",
+        "minecraft:waxed_exposed_copper_door",
+        "minecraft:waxed_oxidized_copper_door"
+    ],
+    "minecraft:golden_tier": [
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:golden_hoe",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:hanging_actor": [
+        "minecraft:painting"
+    ],
+    "minecraft:hanging_sign": [
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:horse_armor": [
+        "minecraft:golden_horse_armor",
+        "minecraft:leather_horse_armor",
+        "minecraft:iron_horse_armor",
+        "minecraft:diamond_horse_armor"
+    ],
+    "minecraft:iron_tier": [
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:iron_hoe",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots"
+    ],
+    "minecraft:is_armor": [
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:elytra",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:is_axe": [
+        "minecraft:iron_axe",
+        "minecraft:wooden_axe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_axe",
+        "minecraft:netherite_axe"
+    ],
+    "minecraft:is_cooked": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_beef",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton"
+    ],
+    "minecraft:is_fish": [
+        "minecraft:cooked_cod",
+        "minecraft:cod",
+        "minecraft:salmon",
+        "minecraft:tropical_fish",
+        "minecraft:pufferfish",
+        "minecraft:cooked_salmon"
+    ],
+    "minecraft:is_food": [
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:mushroom_stew",
+        "minecraft:beetroot",
+        "minecraft:apple",
+        "minecraft:carrot",
+        "minecraft:chicken",
+        "minecraft:potato",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:sweet_berries",
+        "minecraft:golden_apple",
+        "minecraft:bread",
+        "minecraft:porkchop",
+        "minecraft:cookie",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:dried_kelp",
+        "minecraft:beetroot_soup",
+        "minecraft:melon_slice",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:baked_potato",
+        "minecraft:golden_carrot",
+        "minecraft:pumpkin_pie",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_hoe": [
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_meat": [
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:chicken",
+        "minecraft:porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_minecart": [
+        "minecraft:command_block_minecart",
+        "minecraft:minecart",
+        "minecraft:chest_minecart",
+        "minecraft:tnt_minecart",
+        "minecraft:hopper_minecart"
+    ],
+    "minecraft:is_pickaxe": [
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:stone_pickaxe",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_pickaxe",
+        "minecraft:netherite_pickaxe"
+    ],
+    "minecraft:is_shovel": [
+        "minecraft:wooden_shovel",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:diamond_shovel",
+        "minecraft:golden_shovel",
+        "minecraft:netherite_shovel"
+    ],
+    "minecraft:is_sword": [
+        "minecraft:iron_sword",
+        "minecraft:stone_sword",
+        "minecraft:wooden_sword",
+        "minecraft:diamond_sword",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:netherite_sword"
+    ],
+    "minecraft:is_tool": [
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:stone_sword",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_axe",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_trident": [
+        "minecraft:trident"
+    ],
+    "minecraft:leather_tier": [
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots"
+    ],
+    "minecraft:lectern_books": [
+        "minecraft:written_book",
+        "minecraft:writable_book"
+    ],
+    "minecraft:logs": [
+        "minecraft:stripped_oak_log",
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_crimson_stem",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:acacia_log",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:crimson_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:stripped_spruce_log",
+        "minecraft:warped_stem",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_warped_stem",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:logs_that_burn": [
+        "minecraft:stripped_oak_log",
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:acacia_log",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:mangrove_logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:music_disc": [
+        "minecraft:music_disc_ward",
+        "minecraft:music_disc_strad",
+        "minecraft:music_disc_chirp",
+        "minecraft:music_disc_creator_music_box",
+        "minecraft:music_disc_mall",
+        "minecraft:music_disc_pigstep",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_11",
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_13",
+        "minecraft:music_disc_cat",
+        "minecraft:music_disc_blocks",
+        "minecraft:music_disc_far",
+        "minecraft:music_disc_mellohi",
+        "minecraft:music_disc_otherside",
+        "minecraft:music_disc_5",
+        "minecraft:music_disc_relic",
+        "minecraft:music_disc_creator",
+        "minecraft:music_disc_precipice"
+    ],
+    "minecraft:netherite_tier": [
+        "minecraft:netherite_boots",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:planks": [
+        "minecraft:spruce_planks",
+        "minecraft:oak_planks",
+        "minecraft:mangrove_planks",
+        "minecraft:birch_planks",
+        "minecraft:jungle_planks",
+        "minecraft:acacia_planks",
+        "minecraft:dark_oak_planks",
+        "minecraft:bamboo_planks",
+        "minecraft:warped_planks",
+        "minecraft:crimson_planks",
+        "minecraft:cherry_planks"
+    ],
+    "minecraft:sand": [
+        "minecraft:sand"
+    ],
+    "minecraft:sign": [
+        "minecraft:bamboo_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:cherry_sign",
+        "minecraft:oak_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:warped_sign",
+        "minecraft:spruce_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:acacia_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:birch_sign",
+        "minecraft:jungle_sign",
+        "minecraft:dark_oak_sign",
+        "minecraft:mangrove_sign",
+        "minecraft:crimson_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:soul_fire_base_blocks": [
+        "minecraft:soul_sand",
+        "minecraft:soul_soil"
+    ],
+    "minecraft:spawn_egg": [
+        "minecraft:enderman_spawn_egg",
+        "minecraft:ravager_spawn_egg",
+        "minecraft:strider_spawn_egg",
+        "minecraft:slime_spawn_egg",
+        "minecraft:glow_squid_spawn_egg",
+        "minecraft:pillager_spawn_egg",
+        "minecraft:blaze_spawn_egg",
+        "minecraft:witch_spawn_egg",
+        "minecraft:horse_spawn_egg",
+        "minecraft:polar_bear_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:stray_spawn_egg",
+        "minecraft:zombie_pigman_spawn_egg",
+        "minecraft:snow_golem_spawn_egg",
+        "minecraft:panda_spawn_egg",
+        "minecraft:axolotl_spawn_egg",
+        "minecraft:agent_spawn_egg",
+        "minecraft:shulker_spawn_egg",
+        "minecraft:vindicator_spawn_egg",
+        "minecraft:evoker_spawn_egg",
+        "minecraft:parrot_spawn_egg",
+        "minecraft:wolf_spawn_egg",
+        "minecraft:elder_guardian_spawn_egg",
+        "minecraft:silverfish_spawn_egg",
+        "minecraft:tadpole_spawn_egg",
+        "minecraft:cow_spawn_egg",
+        "minecraft:bogged_spawn_egg",
+        "minecraft:ocelot_spawn_egg",
+        "minecraft:bee_spawn_egg",
+        "minecraft:piglin_brute_spawn_egg",
+        "minecraft:rabbit_spawn_egg",
+        "minecraft:camel_spawn_egg",
+        "minecraft:creeper_spawn_egg",
+        "minecraft:drowned_spawn_egg",
+        "minecraft:chicken_spawn_egg",
+        "minecraft:pig_spawn_egg",
+        "minecraft:sheep_spawn_egg",
+        "minecraft:mooshroom_spawn_egg",
+        "minecraft:skeleton_spawn_egg",
+        "minecraft:spider_spawn_egg",
+        "minecraft:zombie_spawn_egg",
+        "minecraft:villager_spawn_egg",
+        "minecraft:squid_spawn_egg",
+        "minecraft:bat_spawn_egg",
+        "minecraft:ghast_spawn_egg",
+        "minecraft:magma_cube_spawn_egg",
+        "minecraft:cave_spider_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:guardian_spawn_egg",
+        "minecraft:husk_spawn_egg",
+        "minecraft:piglin_spawn_egg",
+        "minecraft:wither_skeleton_spawn_egg",
+        "minecraft:donkey_spawn_egg",
+        "minecraft:mule_spawn_egg",
+        "minecraft:skeleton_horse_spawn_egg",
+        "minecraft:zombie_horse_spawn_egg",
+        "minecraft:npc_spawn_egg",
+        "minecraft:breeze_spawn_egg",
+        "minecraft:llama_spawn_egg",
+        "minecraft:vex_spawn_egg",
+        "minecraft:warden_spawn_egg",
+        "minecraft:zombie_villager_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
+        "minecraft:cod_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:salmon_spawn_egg",
+        "minecraft:dolphin_spawn_egg",
+        "minecraft:turtle_spawn_egg",
+        "minecraft:phantom_spawn_egg",
+        "minecraft:cat_spawn_egg",
+        "minecraft:fox_spawn_egg",
+        "minecraft:wandering_trader_spawn_egg",
+        "minecraft:hoglin_spawn_egg",
+        "minecraft:sniffer_spawn_egg",
+        "minecraft:goat_spawn_egg",
+        "minecraft:iron_golem_spawn_egg",
+        "minecraft:ender_dragon_spawn_egg",
+        "minecraft:wither_spawn_egg",
+        "minecraft:frog_spawn_egg",
+        "minecraft:allay_spawn_egg",
+        "minecraft:trader_llama_spawn_egg",
+        "minecraft:armadillo_spawn_egg",
+        "minecraft:spawn_egg"
+    ],
+    "minecraft:stone_bricks": [
+        "minecraft:stonebrick"
+    ],
+    "minecraft:stone_crafting_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:stone_tier": [
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:stone_hoe"
+    ],
+    "minecraft:stone_tool_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:transform_materials": [
+        "minecraft:netherite_ingot"
+    ],
+    "minecraft:transform_templates": [
+        "minecraft:netherite_upgrade_smithing_template"
+    ],
+    "minecraft:transformable_items": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:trim_materials": [
+        "minecraft:gold_ingot",
+        "minecraft:iron_ingot",
+        "minecraft:diamond",
+        "minecraft:redstone",
+        "minecraft:netherite_ingot",
+        "minecraft:lapis_lazuli",
+        "minecraft:quartz",
+        "minecraft:copper_ingot",
+        "minecraft:emerald",
+        "minecraft:amethyst_shard"
+    ],
+    "minecraft:trim_templates": [
+        "minecraft:vex_armor_trim_smithing_template",
+        "minecraft:wild_armor_trim_smithing_template",
+        "minecraft:flow_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:silence_armor_trim_smithing_template",
+        "minecraft:coast_armor_trim_smithing_template",
+        "minecraft:snout_armor_trim_smithing_template",
+        "minecraft:dune_armor_trim_smithing_template",
+        "minecraft:rib_armor_trim_smithing_template",
+        "minecraft:host_armor_trim_smithing_template",
+        "minecraft:bolt_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:eye_armor_trim_smithing_template",
+        "minecraft:spire_armor_trim_smithing_template",
+        "minecraft:sentry_armor_trim_smithing_template",
+        "minecraft:ward_armor_trim_smithing_template",
+        "minecraft:tide_armor_trim_smithing_template",
+        "minecraft:wayfinder_armor_trim_smithing_template"
+    ],
+    "minecraft:trimmable_armors": [
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:vibration_damper": [
+        "minecraft:black_carpet",
+        "minecraft:blue_carpet",
+        "minecraft:pink_carpet",
+        "minecraft:lime_carpet",
+        "minecraft:green_wool",
+        "minecraft:cyan_carpet",
+        "minecraft:orange_wool",
+        "minecraft:white_carpet",
+        "minecraft:purple_carpet",
+        "minecraft:yellow_carpet",
+        "minecraft:light_gray_wool",
+        "minecraft:magenta_carpet",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:red_carpet",
+        "minecraft:brown_carpet",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool",
+        "minecraft:orange_carpet",
+        "minecraft:light_blue_carpet",
+        "minecraft:gray_carpet",
+        "minecraft:light_gray_carpet",
+        "minecraft:green_carpet"
+    ],
+    "minecraft:warped_stems": [
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:warped_hyphae",
+        "minecraft:warped_stem",
+        "minecraft:stripped_warped_stem"
+    ],
+    "minecraft:wooden_slabs": [
+        "minecraft:birch_slab",
+        "minecraft:oak_slab",
+        "minecraft:spruce_slab",
+        "minecraft:bamboo_slab",
+        "minecraft:warped_slab",
+        "minecraft:mangrove_slab",
+        "minecraft:cherry_slab",
+        "minecraft:jungle_slab",
+        "minecraft:acacia_slab",
+        "minecraft:dark_oak_slab",
+        "minecraft:crimson_slab"
+    ],
+    "minecraft:wooden_tier": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_axe",
+        "minecraft:wooden_hoe"
+    ],
+    "minecraft:wool": [
+        "minecraft:green_wool",
+        "minecraft:orange_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool"
+    ]
+}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_20.json b/core/src/main/resources/bedrock/item_tags.1_21_20.json
new file mode 100644
index 000000000..faad0ed0c
--- /dev/null
+++ b/core/src/main/resources/bedrock/item_tags.1_21_20.json
@@ -0,0 +1,806 @@
+{
+    "minecraft:arrow": [
+        "minecraft:arrow"
+    ],
+    "minecraft:banner": [
+        "minecraft:banner"
+    ],
+    "minecraft:boat": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:boats": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:bookshelf_books": [
+        "minecraft:written_book",
+        "minecraft:book",
+        "minecraft:writable_book",
+        "minecraft:enchanted_book"
+    ],
+    "minecraft:chainmail_tier": [
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots"
+    ],
+    "minecraft:coals": [
+        "minecraft:coal",
+        "minecraft:charcoal"
+    ],
+    "minecraft:crimson_stems": [
+        "minecraft:stripped_crimson_stem",
+        "minecraft:crimson_hyphae",
+        "minecraft:crimson_stem",
+        "minecraft:stripped_crimson_hyphae"
+    ],
+    "minecraft:decorated_pot_sherds": [
+        "minecraft:angler_pottery_sherd",
+        "minecraft:skull_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
+        "minecraft:mourner_pottery_sherd",
+        "minecraft:arms_up_pottery_sherd",
+        "minecraft:burn_pottery_sherd",
+        "minecraft:snort_pottery_sherd",
+        "minecraft:brick",
+        "minecraft:heartbreak_pottery_sherd",
+        "minecraft:miner_pottery_sherd",
+        "minecraft:brewer_pottery_sherd",
+        "minecraft:plenty_pottery_sherd",
+        "minecraft:scrape_pottery_sherd",
+        "minecraft:howl_pottery_sherd",
+        "minecraft:explorer_pottery_sherd",
+        "minecraft:archer_pottery_sherd",
+        "minecraft:blade_pottery_sherd",
+        "minecraft:danger_pottery_sherd",
+        "minecraft:flow_pottery_sherd",
+        "minecraft:friend_pottery_sherd",
+        "minecraft:guster_pottery_sherd",
+        "minecraft:heart_pottery_sherd",
+        "minecraft:sheaf_pottery_sherd",
+        "minecraft:shelter_pottery_sherd"
+    ],
+    "minecraft:diamond_tier": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots"
+    ],
+    "minecraft:digger": [
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:door": [
+        "minecraft:warped_door",
+        "minecraft:waxed_weathered_copper_door",
+        "minecraft:wooden_door",
+        "minecraft:iron_door",
+        "minecraft:mangrove_door",
+        "minecraft:exposed_copper_door",
+        "minecraft:bamboo_door",
+        "minecraft:weathered_copper_door",
+        "minecraft:jungle_door",
+        "minecraft:spruce_door",
+        "minecraft:birch_door",
+        "minecraft:acacia_door",
+        "minecraft:dark_oak_door",
+        "minecraft:crimson_door",
+        "minecraft:cherry_door",
+        "minecraft:copper_door",
+        "minecraft:oxidized_copper_door",
+        "minecraft:waxed_copper_door",
+        "minecraft:waxed_exposed_copper_door",
+        "minecraft:waxed_oxidized_copper_door"
+    ],
+    "minecraft:golden_tier": [
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:golden_hoe",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:hanging_actor": [
+        "minecraft:painting"
+    ],
+    "minecraft:hanging_sign": [
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:horse_armor": [
+        "minecraft:golden_horse_armor",
+        "minecraft:leather_horse_armor",
+        "minecraft:iron_horse_armor",
+        "minecraft:diamond_horse_armor"
+    ],
+    "minecraft:iron_tier": [
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:iron_hoe",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots"
+    ],
+    "minecraft:is_armor": [
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:elytra",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:is_axe": [
+        "minecraft:iron_axe",
+        "minecraft:wooden_axe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_axe",
+        "minecraft:netherite_axe"
+    ],
+    "minecraft:is_cooked": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_beef",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton"
+    ],
+    "minecraft:is_fish": [
+        "minecraft:cooked_cod",
+        "minecraft:cod",
+        "minecraft:salmon",
+        "minecraft:tropical_fish",
+        "minecraft:pufferfish",
+        "minecraft:cooked_salmon"
+    ],
+    "minecraft:is_food": [
+        "minecraft:beetroot",
+        "minecraft:apple",
+        "minecraft:carrot",
+        "minecraft:chicken",
+        "minecraft:potato",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:sweet_berries",
+        "minecraft:golden_carrot",
+        "minecraft:golden_apple",
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:mushroom_stew",
+        "minecraft:bread",
+        "minecraft:porkchop",
+        "minecraft:cookie",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:dried_kelp",
+        "minecraft:beetroot_soup",
+        "minecraft:melon_slice",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:baked_potato",
+        "minecraft:pumpkin_pie",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_hoe": [
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_meat": [
+        "minecraft:chicken",
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_minecart": [
+        "minecraft:command_block_minecart",
+        "minecraft:minecart",
+        "minecraft:chest_minecart",
+        "minecraft:tnt_minecart",
+        "minecraft:hopper_minecart"
+    ],
+    "minecraft:is_pickaxe": [
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:stone_pickaxe",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_pickaxe",
+        "minecraft:netherite_pickaxe"
+    ],
+    "minecraft:is_shovel": [
+        "minecraft:wooden_shovel",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:diamond_shovel",
+        "minecraft:golden_shovel",
+        "minecraft:netherite_shovel"
+    ],
+    "minecraft:is_sword": [
+        "minecraft:iron_sword",
+        "minecraft:stone_sword",
+        "minecraft:wooden_sword",
+        "minecraft:diamond_sword",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:netherite_sword"
+    ],
+    "minecraft:is_tool": [
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:stone_sword",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_axe",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_trident": [
+        "minecraft:trident"
+    ],
+    "minecraft:leather_tier": [
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots"
+    ],
+    "minecraft:lectern_books": [
+        "minecraft:written_book",
+        "minecraft:writable_book"
+    ],
+    "minecraft:logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_crimson_stem",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:acacia_log",
+        "minecraft:stripped_warped_stem",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:crimson_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:stripped_spruce_log",
+        "minecraft:warped_stem",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:logs_that_burn": [
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:acacia_log",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:mangrove_logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:music_disc": [
+        "minecraft:music_disc_ward",
+        "minecraft:music_disc_strad",
+        "minecraft:music_disc_chirp",
+        "minecraft:music_disc_creator_music_box",
+        "minecraft:music_disc_mall",
+        "minecraft:music_disc_pigstep",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_11",
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_13",
+        "minecraft:music_disc_cat",
+        "minecraft:music_disc_blocks",
+        "minecraft:music_disc_far",
+        "minecraft:music_disc_mellohi",
+        "minecraft:music_disc_otherside",
+        "minecraft:music_disc_5",
+        "minecraft:music_disc_relic",
+        "minecraft:music_disc_creator",
+        "minecraft:music_disc_precipice"
+    ],
+    "minecraft:netherite_tier": [
+        "minecraft:netherite_boots",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:planks": [
+        "minecraft:spruce_planks",
+        "minecraft:oak_planks",
+        "minecraft:mangrove_planks",
+        "minecraft:dark_oak_planks",
+        "minecraft:birch_planks",
+        "minecraft:jungle_planks",
+        "minecraft:acacia_planks",
+        "minecraft:bamboo_planks",
+        "minecraft:warped_planks",
+        "minecraft:crimson_planks",
+        "minecraft:cherry_planks"
+    ],
+    "minecraft:sand": [
+        "minecraft:sand",
+        "minecraft:red_sand"
+    ],
+    "minecraft:sign": [
+        "minecraft:bamboo_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:cherry_sign",
+        "minecraft:oak_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:warped_sign",
+        "minecraft:spruce_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:acacia_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:birch_sign",
+        "minecraft:jungle_sign",
+        "minecraft:dark_oak_sign",
+        "minecraft:mangrove_sign",
+        "minecraft:crimson_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:soul_fire_base_blocks": [
+        "minecraft:soul_soil",
+        "minecraft:soul_sand"
+    ],
+    "minecraft:spawn_egg": [
+        "minecraft:enderman_spawn_egg",
+        "minecraft:strider_spawn_egg",
+        "minecraft:ravager_spawn_egg",
+        "minecraft:slime_spawn_egg",
+        "minecraft:glow_squid_spawn_egg",
+        "minecraft:pillager_spawn_egg",
+        "minecraft:blaze_spawn_egg",
+        "minecraft:witch_spawn_egg",
+        "minecraft:horse_spawn_egg",
+        "minecraft:polar_bear_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:stray_spawn_egg",
+        "minecraft:zombie_pigman_spawn_egg",
+        "minecraft:snow_golem_spawn_egg",
+        "minecraft:panda_spawn_egg",
+        "minecraft:axolotl_spawn_egg",
+        "minecraft:agent_spawn_egg",
+        "minecraft:shulker_spawn_egg",
+        "minecraft:vindicator_spawn_egg",
+        "minecraft:evoker_spawn_egg",
+        "minecraft:parrot_spawn_egg",
+        "minecraft:wolf_spawn_egg",
+        "minecraft:elder_guardian_spawn_egg",
+        "minecraft:silverfish_spawn_egg",
+        "minecraft:tadpole_spawn_egg",
+        "minecraft:cow_spawn_egg",
+        "minecraft:bogged_spawn_egg",
+        "minecraft:ocelot_spawn_egg",
+        "minecraft:bee_spawn_egg",
+        "minecraft:piglin_brute_spawn_egg",
+        "minecraft:rabbit_spawn_egg",
+        "minecraft:camel_spawn_egg",
+        "minecraft:creeper_spawn_egg",
+        "minecraft:drowned_spawn_egg",
+        "minecraft:chicken_spawn_egg",
+        "minecraft:pig_spawn_egg",
+        "minecraft:sheep_spawn_egg",
+        "minecraft:mooshroom_spawn_egg",
+        "minecraft:skeleton_spawn_egg",
+        "minecraft:spider_spawn_egg",
+        "minecraft:zombie_spawn_egg",
+        "minecraft:villager_spawn_egg",
+        "minecraft:squid_spawn_egg",
+        "minecraft:bat_spawn_egg",
+        "minecraft:ghast_spawn_egg",
+        "minecraft:magma_cube_spawn_egg",
+        "minecraft:cave_spider_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:guardian_spawn_egg",
+        "minecraft:husk_spawn_egg",
+        "minecraft:piglin_spawn_egg",
+        "minecraft:wither_skeleton_spawn_egg",
+        "minecraft:donkey_spawn_egg",
+        "minecraft:mule_spawn_egg",
+        "minecraft:skeleton_horse_spawn_egg",
+        "minecraft:zombie_horse_spawn_egg",
+        "minecraft:npc_spawn_egg",
+        "minecraft:breeze_spawn_egg",
+        "minecraft:llama_spawn_egg",
+        "minecraft:vex_spawn_egg",
+        "minecraft:warden_spawn_egg",
+        "minecraft:zombie_villager_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
+        "minecraft:cod_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:salmon_spawn_egg",
+        "minecraft:dolphin_spawn_egg",
+        "minecraft:turtle_spawn_egg",
+        "minecraft:phantom_spawn_egg",
+        "minecraft:cat_spawn_egg",
+        "minecraft:fox_spawn_egg",
+        "minecraft:wandering_trader_spawn_egg",
+        "minecraft:hoglin_spawn_egg",
+        "minecraft:sniffer_spawn_egg",
+        "minecraft:goat_spawn_egg",
+        "minecraft:iron_golem_spawn_egg",
+        "minecraft:ender_dragon_spawn_egg",
+        "minecraft:wither_spawn_egg",
+        "minecraft:frog_spawn_egg",
+        "minecraft:allay_spawn_egg",
+        "minecraft:trader_llama_spawn_egg",
+        "minecraft:armadillo_spawn_egg",
+        "minecraft:spawn_egg"
+    ],
+    "minecraft:stone_bricks": [
+        "minecraft:mossy_stone_bricks",
+        "minecraft:stone_bricks",
+        "minecraft:cracked_stone_bricks",
+        "minecraft:chiseled_stone_bricks"
+    ],
+    "minecraft:stone_crafting_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:stone_tier": [
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:stone_hoe"
+    ],
+    "minecraft:stone_tool_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:transform_materials": [
+        "minecraft:netherite_ingot"
+    ],
+    "minecraft:transform_templates": [
+        "minecraft:netherite_upgrade_smithing_template"
+    ],
+    "minecraft:transformable_items": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:trim_materials": [
+        "minecraft:gold_ingot",
+        "minecraft:iron_ingot",
+        "minecraft:diamond",
+        "minecraft:redstone",
+        "minecraft:netherite_ingot",
+        "minecraft:lapis_lazuli",
+        "minecraft:quartz",
+        "minecraft:copper_ingot",
+        "minecraft:emerald",
+        "minecraft:amethyst_shard"
+    ],
+    "minecraft:trim_templates": [
+        "minecraft:vex_armor_trim_smithing_template",
+        "minecraft:wild_armor_trim_smithing_template",
+        "minecraft:flow_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:silence_armor_trim_smithing_template",
+        "minecraft:coast_armor_trim_smithing_template",
+        "minecraft:snout_armor_trim_smithing_template",
+        "minecraft:dune_armor_trim_smithing_template",
+        "minecraft:rib_armor_trim_smithing_template",
+        "minecraft:host_armor_trim_smithing_template",
+        "minecraft:bolt_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:eye_armor_trim_smithing_template",
+        "minecraft:spire_armor_trim_smithing_template",
+        "minecraft:sentry_armor_trim_smithing_template",
+        "minecraft:ward_armor_trim_smithing_template",
+        "minecraft:tide_armor_trim_smithing_template",
+        "minecraft:wayfinder_armor_trim_smithing_template"
+    ],
+    "minecraft:trimmable_armors": [
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:vibration_damper": [
+        "minecraft:black_carpet",
+        "minecraft:blue_carpet",
+        "minecraft:pink_carpet",
+        "minecraft:lime_carpet",
+        "minecraft:green_wool",
+        "minecraft:cyan_carpet",
+        "minecraft:orange_wool",
+        "minecraft:white_carpet",
+        "minecraft:purple_carpet",
+        "minecraft:yellow_carpet",
+        "minecraft:light_gray_wool",
+        "minecraft:magenta_carpet",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:red_carpet",
+        "minecraft:brown_carpet",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool",
+        "minecraft:orange_carpet",
+        "minecraft:light_blue_carpet",
+        "minecraft:gray_carpet",
+        "minecraft:light_gray_carpet",
+        "minecraft:green_carpet"
+    ],
+    "minecraft:warped_stems": [
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:stripped_warped_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:warped_stem"
+    ],
+    "minecraft:wooden_slabs": [
+        "minecraft:birch_slab",
+        "minecraft:oak_slab",
+        "minecraft:spruce_slab",
+        "minecraft:bamboo_slab",
+        "minecraft:warped_slab",
+        "minecraft:mangrove_slab",
+        "minecraft:cherry_slab",
+        "minecraft:jungle_slab",
+        "minecraft:acacia_slab",
+        "minecraft:dark_oak_slab",
+        "minecraft:crimson_slab"
+    ],
+    "minecraft:wooden_tier": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_axe",
+        "minecraft:wooden_hoe"
+    ],
+    "minecraft:wool": [
+        "minecraft:green_wool",
+        "minecraft:orange_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool"
+    ]
+}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_30.json b/core/src/main/resources/bedrock/item_tags.1_21_30.json
new file mode 100644
index 000000000..cff3f2556
--- /dev/null
+++ b/core/src/main/resources/bedrock/item_tags.1_21_30.json
@@ -0,0 +1,806 @@
+{
+    "minecraft:arrow": [
+        "minecraft:arrow"
+    ],
+    "minecraft:banner": [
+        "minecraft:banner"
+    ],
+    "minecraft:boat": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:boats": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:bookshelf_books": [
+        "minecraft:written_book",
+        "minecraft:book",
+        "minecraft:writable_book",
+        "minecraft:enchanted_book"
+    ],
+    "minecraft:chainmail_tier": [
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots"
+    ],
+    "minecraft:coals": [
+        "minecraft:coal",
+        "minecraft:charcoal"
+    ],
+    "minecraft:crimson_stems": [
+        "minecraft:stripped_crimson_stem",
+        "minecraft:crimson_hyphae",
+        "minecraft:crimson_stem",
+        "minecraft:stripped_crimson_hyphae"
+    ],
+    "minecraft:decorated_pot_sherds": [
+        "minecraft:angler_pottery_sherd",
+        "minecraft:skull_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
+        "minecraft:mourner_pottery_sherd",
+        "minecraft:arms_up_pottery_sherd",
+        "minecraft:burn_pottery_sherd",
+        "minecraft:snort_pottery_sherd",
+        "minecraft:brick",
+        "minecraft:heartbreak_pottery_sherd",
+        "minecraft:miner_pottery_sherd",
+        "minecraft:brewer_pottery_sherd",
+        "minecraft:plenty_pottery_sherd",
+        "minecraft:scrape_pottery_sherd",
+        "minecraft:howl_pottery_sherd",
+        "minecraft:explorer_pottery_sherd",
+        "minecraft:archer_pottery_sherd",
+        "minecraft:blade_pottery_sherd",
+        "minecraft:danger_pottery_sherd",
+        "minecraft:flow_pottery_sherd",
+        "minecraft:friend_pottery_sherd",
+        "minecraft:guster_pottery_sherd",
+        "minecraft:heart_pottery_sherd",
+        "minecraft:sheaf_pottery_sherd",
+        "minecraft:shelter_pottery_sherd"
+    ],
+    "minecraft:diamond_tier": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots"
+    ],
+    "minecraft:digger": [
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:door": [
+        "minecraft:warped_door",
+        "minecraft:waxed_weathered_copper_door",
+        "minecraft:wooden_door",
+        "minecraft:iron_door",
+        "minecraft:mangrove_door",
+        "minecraft:exposed_copper_door",
+        "minecraft:bamboo_door",
+        "minecraft:weathered_copper_door",
+        "minecraft:jungle_door",
+        "minecraft:spruce_door",
+        "minecraft:birch_door",
+        "minecraft:acacia_door",
+        "minecraft:dark_oak_door",
+        "minecraft:crimson_door",
+        "minecraft:cherry_door",
+        "minecraft:copper_door",
+        "minecraft:oxidized_copper_door",
+        "minecraft:waxed_copper_door",
+        "minecraft:waxed_exposed_copper_door",
+        "minecraft:waxed_oxidized_copper_door"
+    ],
+    "minecraft:golden_tier": [
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:golden_hoe",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:hanging_actor": [
+        "minecraft:painting"
+    ],
+    "minecraft:hanging_sign": [
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:horse_armor": [
+        "minecraft:golden_horse_armor",
+        "minecraft:leather_horse_armor",
+        "minecraft:iron_horse_armor",
+        "minecraft:diamond_horse_armor"
+    ],
+    "minecraft:iron_tier": [
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:iron_hoe",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots"
+    ],
+    "minecraft:is_armor": [
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:elytra",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:is_axe": [
+        "minecraft:iron_axe",
+        "minecraft:wooden_axe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_axe",
+        "minecraft:netherite_axe"
+    ],
+    "minecraft:is_cooked": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_beef",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton"
+    ],
+    "minecraft:is_fish": [
+        "minecraft:cooked_cod",
+        "minecraft:cod",
+        "minecraft:salmon",
+        "minecraft:tropical_fish",
+        "minecraft:pufferfish",
+        "minecraft:cooked_salmon"
+    ],
+    "minecraft:is_food": [
+        "minecraft:golden_carrot",
+        "minecraft:carrot",
+        "minecraft:chicken",
+        "minecraft:apple",
+        "minecraft:beetroot",
+        "minecraft:potato",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:sweet_berries",
+        "minecraft:golden_apple",
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:mushroom_stew",
+        "minecraft:bread",
+        "minecraft:porkchop",
+        "minecraft:cookie",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:dried_kelp",
+        "minecraft:beetroot_soup",
+        "minecraft:melon_slice",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:baked_potato",
+        "minecraft:pumpkin_pie",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_hoe": [
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_meat": [
+        "minecraft:chicken",
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_minecart": [
+        "minecraft:command_block_minecart",
+        "minecraft:minecart",
+        "minecraft:chest_minecart",
+        "minecraft:tnt_minecart",
+        "minecraft:hopper_minecart"
+    ],
+    "minecraft:is_pickaxe": [
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:stone_pickaxe",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_pickaxe",
+        "minecraft:netherite_pickaxe"
+    ],
+    "minecraft:is_shovel": [
+        "minecraft:wooden_shovel",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:diamond_shovel",
+        "minecraft:golden_shovel",
+        "minecraft:netherite_shovel"
+    ],
+    "minecraft:is_sword": [
+        "minecraft:iron_sword",
+        "minecraft:stone_sword",
+        "minecraft:wooden_sword",
+        "minecraft:diamond_sword",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:netherite_sword"
+    ],
+    "minecraft:is_tool": [
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:stone_sword",
+        "minecraft:iron_axe",
+        "minecraft:iron_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_axe",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_trident": [
+        "minecraft:trident"
+    ],
+    "minecraft:leather_tier": [
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots"
+    ],
+    "minecraft:lectern_books": [
+        "minecraft:written_book",
+        "minecraft:writable_book"
+    ],
+    "minecraft:logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_crimson_stem",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:acacia_log",
+        "minecraft:stripped_warped_stem",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:crimson_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:stripped_spruce_log",
+        "minecraft:warped_stem",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:logs_that_burn": [
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:acacia_log",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:mangrove_logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:music_disc": [
+        "minecraft:music_disc_ward",
+        "minecraft:music_disc_strad",
+        "minecraft:music_disc_chirp",
+        "minecraft:music_disc_creator_music_box",
+        "minecraft:music_disc_mall",
+        "minecraft:music_disc_pigstep",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_11",
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_13",
+        "minecraft:music_disc_cat",
+        "minecraft:music_disc_blocks",
+        "minecraft:music_disc_far",
+        "minecraft:music_disc_mellohi",
+        "minecraft:music_disc_otherside",
+        "minecraft:music_disc_5",
+        "minecraft:music_disc_relic",
+        "minecraft:music_disc_creator",
+        "minecraft:music_disc_precipice"
+    ],
+    "minecraft:netherite_tier": [
+        "minecraft:netherite_boots",
+        "minecraft:netherite_sword",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:planks": [
+        "minecraft:spruce_planks",
+        "minecraft:oak_planks",
+        "minecraft:mangrove_planks",
+        "minecraft:dark_oak_planks",
+        "minecraft:birch_planks",
+        "minecraft:jungle_planks",
+        "minecraft:acacia_planks",
+        "minecraft:bamboo_planks",
+        "minecraft:warped_planks",
+        "minecraft:crimson_planks",
+        "minecraft:cherry_planks"
+    ],
+    "minecraft:sand": [
+        "minecraft:sand",
+        "minecraft:red_sand"
+    ],
+    "minecraft:sign": [
+        "minecraft:bamboo_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:cherry_sign",
+        "minecraft:oak_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:warped_sign",
+        "minecraft:spruce_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:acacia_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:birch_sign",
+        "minecraft:jungle_sign",
+        "minecraft:dark_oak_sign",
+        "minecraft:mangrove_sign",
+        "minecraft:crimson_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:soul_fire_base_blocks": [
+        "minecraft:soul_soil",
+        "minecraft:soul_sand"
+    ],
+    "minecraft:spawn_egg": [
+        "minecraft:enderman_spawn_egg",
+        "minecraft:strider_spawn_egg",
+        "minecraft:ravager_spawn_egg",
+        "minecraft:slime_spawn_egg",
+        "minecraft:glow_squid_spawn_egg",
+        "minecraft:pillager_spawn_egg",
+        "minecraft:blaze_spawn_egg",
+        "minecraft:witch_spawn_egg",
+        "minecraft:horse_spawn_egg",
+        "minecraft:polar_bear_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:stray_spawn_egg",
+        "minecraft:zombie_pigman_spawn_egg",
+        "minecraft:snow_golem_spawn_egg",
+        "minecraft:panda_spawn_egg",
+        "minecraft:axolotl_spawn_egg",
+        "minecraft:agent_spawn_egg",
+        "minecraft:shulker_spawn_egg",
+        "minecraft:vindicator_spawn_egg",
+        "minecraft:evoker_spawn_egg",
+        "minecraft:parrot_spawn_egg",
+        "minecraft:wolf_spawn_egg",
+        "minecraft:sheep_spawn_egg",
+        "minecraft:elder_guardian_spawn_egg",
+        "minecraft:silverfish_spawn_egg",
+        "minecraft:tadpole_spawn_egg",
+        "minecraft:cow_spawn_egg",
+        "minecraft:bogged_spawn_egg",
+        "minecraft:ocelot_spawn_egg",
+        "minecraft:bee_spawn_egg",
+        "minecraft:piglin_brute_spawn_egg",
+        "minecraft:rabbit_spawn_egg",
+        "minecraft:camel_spawn_egg",
+        "minecraft:creeper_spawn_egg",
+        "minecraft:drowned_spawn_egg",
+        "minecraft:chicken_spawn_egg",
+        "minecraft:pig_spawn_egg",
+        "minecraft:mooshroom_spawn_egg",
+        "minecraft:skeleton_spawn_egg",
+        "minecraft:spider_spawn_egg",
+        "minecraft:zombie_spawn_egg",
+        "minecraft:villager_spawn_egg",
+        "minecraft:squid_spawn_egg",
+        "minecraft:bat_spawn_egg",
+        "minecraft:ghast_spawn_egg",
+        "minecraft:magma_cube_spawn_egg",
+        "minecraft:cave_spider_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:guardian_spawn_egg",
+        "minecraft:husk_spawn_egg",
+        "minecraft:piglin_spawn_egg",
+        "minecraft:wither_skeleton_spawn_egg",
+        "minecraft:donkey_spawn_egg",
+        "minecraft:mule_spawn_egg",
+        "minecraft:skeleton_horse_spawn_egg",
+        "minecraft:zombie_horse_spawn_egg",
+        "minecraft:npc_spawn_egg",
+        "minecraft:breeze_spawn_egg",
+        "minecraft:llama_spawn_egg",
+        "minecraft:vex_spawn_egg",
+        "minecraft:warden_spawn_egg",
+        "minecraft:zombie_villager_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
+        "minecraft:cod_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:salmon_spawn_egg",
+        "minecraft:dolphin_spawn_egg",
+        "minecraft:turtle_spawn_egg",
+        "minecraft:phantom_spawn_egg",
+        "minecraft:cat_spawn_egg",
+        "minecraft:fox_spawn_egg",
+        "minecraft:wandering_trader_spawn_egg",
+        "minecraft:hoglin_spawn_egg",
+        "minecraft:sniffer_spawn_egg",
+        "minecraft:goat_spawn_egg",
+        "minecraft:iron_golem_spawn_egg",
+        "minecraft:ender_dragon_spawn_egg",
+        "minecraft:wither_spawn_egg",
+        "minecraft:frog_spawn_egg",
+        "minecraft:allay_spawn_egg",
+        "minecraft:trader_llama_spawn_egg",
+        "minecraft:armadillo_spawn_egg",
+        "minecraft:spawn_egg"
+    ],
+    "minecraft:stone_bricks": [
+        "minecraft:mossy_stone_bricks",
+        "minecraft:stone_bricks",
+        "minecraft:cracked_stone_bricks",
+        "minecraft:chiseled_stone_bricks"
+    ],
+    "minecraft:stone_crafting_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:stone_tier": [
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:stone_hoe"
+    ],
+    "minecraft:stone_tool_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:transform_materials": [
+        "minecraft:netherite_ingot"
+    ],
+    "minecraft:transform_templates": [
+        "minecraft:netherite_upgrade_smithing_template"
+    ],
+    "minecraft:transformable_items": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:trim_materials": [
+        "minecraft:gold_ingot",
+        "minecraft:iron_ingot",
+        "minecraft:diamond",
+        "minecraft:redstone",
+        "minecraft:netherite_ingot",
+        "minecraft:lapis_lazuli",
+        "minecraft:quartz",
+        "minecraft:copper_ingot",
+        "minecraft:emerald",
+        "minecraft:amethyst_shard"
+    ],
+    "minecraft:trim_templates": [
+        "minecraft:vex_armor_trim_smithing_template",
+        "minecraft:wild_armor_trim_smithing_template",
+        "minecraft:flow_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:silence_armor_trim_smithing_template",
+        "minecraft:coast_armor_trim_smithing_template",
+        "minecraft:snout_armor_trim_smithing_template",
+        "minecraft:dune_armor_trim_smithing_template",
+        "minecraft:rib_armor_trim_smithing_template",
+        "minecraft:host_armor_trim_smithing_template",
+        "minecraft:bolt_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:eye_armor_trim_smithing_template",
+        "minecraft:spire_armor_trim_smithing_template",
+        "minecraft:sentry_armor_trim_smithing_template",
+        "minecraft:ward_armor_trim_smithing_template",
+        "minecraft:tide_armor_trim_smithing_template",
+        "minecraft:wayfinder_armor_trim_smithing_template"
+    ],
+    "minecraft:trimmable_armors": [
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_chestplate",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:vibration_damper": [
+        "minecraft:black_carpet",
+        "minecraft:blue_carpet",
+        "minecraft:pink_carpet",
+        "minecraft:lime_carpet",
+        "minecraft:green_wool",
+        "minecraft:cyan_carpet",
+        "minecraft:orange_wool",
+        "minecraft:white_carpet",
+        "minecraft:purple_carpet",
+        "minecraft:yellow_carpet",
+        "minecraft:light_gray_wool",
+        "minecraft:magenta_carpet",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:red_carpet",
+        "minecraft:brown_carpet",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool",
+        "minecraft:orange_carpet",
+        "minecraft:light_blue_carpet",
+        "minecraft:gray_carpet",
+        "minecraft:light_gray_carpet",
+        "minecraft:green_carpet"
+    ],
+    "minecraft:warped_stems": [
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:stripped_warped_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:warped_stem"
+    ],
+    "minecraft:wooden_slabs": [
+        "minecraft:birch_slab",
+        "minecraft:oak_slab",
+        "minecraft:spruce_slab",
+        "minecraft:bamboo_slab",
+        "minecraft:warped_slab",
+        "minecraft:mangrove_slab",
+        "minecraft:cherry_slab",
+        "minecraft:jungle_slab",
+        "minecraft:acacia_slab",
+        "minecraft:dark_oak_slab",
+        "minecraft:crimson_slab"
+    ],
+    "minecraft:wooden_tier": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_axe",
+        "minecraft:wooden_hoe"
+    ],
+    "minecraft:wool": [
+        "minecraft:green_wool",
+        "minecraft:orange_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool"
+    ]
+}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_40.json b/core/src/main/resources/bedrock/item_tags.1_21_40.json
new file mode 100644
index 000000000..d9e63ed26
--- /dev/null
+++ b/core/src/main/resources/bedrock/item_tags.1_21_40.json
@@ -0,0 +1,806 @@
+{
+    "minecraft:arrow": [
+        "minecraft:arrow"
+    ],
+    "minecraft:banner": [
+        "minecraft:banner"
+    ],
+    "minecraft:boat": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:boats": [
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft"
+    ],
+    "minecraft:bookshelf_books": [
+        "minecraft:written_book",
+        "minecraft:book",
+        "minecraft:writable_book",
+        "minecraft:enchanted_book"
+    ],
+    "minecraft:chainmail_tier": [
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots"
+    ],
+    "minecraft:coals": [
+        "minecraft:coal",
+        "minecraft:charcoal"
+    ],
+    "minecraft:crimson_stems": [
+        "minecraft:stripped_crimson_stem",
+        "minecraft:crimson_hyphae",
+        "minecraft:crimson_stem",
+        "minecraft:stripped_crimson_hyphae"
+    ],
+    "minecraft:decorated_pot_sherds": [
+        "minecraft:skull_pottery_sherd",
+        "minecraft:mourner_pottery_sherd",
+        "minecraft:angler_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
+        "minecraft:arms_up_pottery_sherd",
+        "minecraft:burn_pottery_sherd",
+        "minecraft:snort_pottery_sherd",
+        "minecraft:brick",
+        "minecraft:heartbreak_pottery_sherd",
+        "minecraft:miner_pottery_sherd",
+        "minecraft:brewer_pottery_sherd",
+        "minecraft:plenty_pottery_sherd",
+        "minecraft:scrape_pottery_sherd",
+        "minecraft:howl_pottery_sherd",
+        "minecraft:explorer_pottery_sherd",
+        "minecraft:archer_pottery_sherd",
+        "minecraft:blade_pottery_sherd",
+        "minecraft:danger_pottery_sherd",
+        "minecraft:flow_pottery_sherd",
+        "minecraft:friend_pottery_sherd",
+        "minecraft:guster_pottery_sherd",
+        "minecraft:heart_pottery_sherd",
+        "minecraft:sheaf_pottery_sherd",
+        "minecraft:shelter_pottery_sherd"
+    ],
+    "minecraft:diamond_tier": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots"
+    ],
+    "minecraft:digger": [
+        "minecraft:iron_shovel",
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:door": [
+        "minecraft:weathered_copper_door",
+        "minecraft:warped_door",
+        "minecraft:wooden_door",
+        "minecraft:jungle_door",
+        "minecraft:waxed_weathered_copper_door",
+        "minecraft:iron_door",
+        "minecraft:mangrove_door",
+        "minecraft:exposed_copper_door",
+        "minecraft:bamboo_door",
+        "minecraft:spruce_door",
+        "minecraft:birch_door",
+        "minecraft:acacia_door",
+        "minecraft:dark_oak_door",
+        "minecraft:crimson_door",
+        "minecraft:cherry_door",
+        "minecraft:copper_door",
+        "minecraft:oxidized_copper_door",
+        "minecraft:waxed_copper_door",
+        "minecraft:waxed_exposed_copper_door",
+        "minecraft:waxed_oxidized_copper_door"
+    ],
+    "minecraft:golden_tier": [
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:golden_hoe",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:hanging_actor": [
+        "minecraft:painting"
+    ],
+    "minecraft:hanging_sign": [
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:horse_armor": [
+        "minecraft:iron_horse_armor",
+        "minecraft:golden_horse_armor",
+        "minecraft:leather_horse_armor",
+        "minecraft:diamond_horse_armor"
+    ],
+    "minecraft:iron_tier": [
+        "minecraft:iron_chestplate",
+        "minecraft:iron_shovel",
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:iron_hoe",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots"
+    ],
+    "minecraft:is_armor": [
+        "minecraft:iron_chestplate",
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:elytra",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:is_axe": [
+        "minecraft:iron_axe",
+        "minecraft:wooden_axe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_axe",
+        "minecraft:netherite_axe"
+    ],
+    "minecraft:is_cooked": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_rabbit",
+        "minecraft:cooked_beef",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton"
+    ],
+    "minecraft:is_fish": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_salmon",
+        "minecraft:cod",
+        "minecraft:salmon",
+        "minecraft:tropical_fish",
+        "minecraft:pufferfish"
+    ],
+    "minecraft:is_food": [
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:mushroom_stew",
+        "minecraft:potato",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:golden_carrot",
+        "minecraft:carrot",
+        "minecraft:chicken",
+        "minecraft:beetroot",
+        "minecraft:sweet_berries",
+        "minecraft:apple",
+        "minecraft:golden_apple",
+        "minecraft:bread",
+        "minecraft:porkchop",
+        "minecraft:cookie",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:dried_kelp",
+        "minecraft:beetroot_soup",
+        "minecraft:melon_slice",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:baked_potato",
+        "minecraft:pumpkin_pie",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_hoe": [
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_meat": [
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:chicken",
+        "minecraft:porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_minecart": [
+        "minecraft:command_block_minecart",
+        "minecraft:minecart",
+        "minecraft:chest_minecart",
+        "minecraft:tnt_minecart",
+        "minecraft:hopper_minecart"
+    ],
+    "minecraft:is_pickaxe": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:stone_pickaxe",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_pickaxe",
+        "minecraft:netherite_pickaxe"
+    ],
+    "minecraft:is_shovel": [
+        "minecraft:iron_shovel",
+        "minecraft:wooden_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:diamond_shovel",
+        "minecraft:golden_shovel",
+        "minecraft:netherite_shovel"
+    ],
+    "minecraft:is_sword": [
+        "minecraft:netherite_sword",
+        "minecraft:iron_sword",
+        "minecraft:wooden_sword",
+        "minecraft:stone_sword",
+        "minecraft:diamond_sword",
+        "minecraft:mace",
+        "minecraft:golden_sword"
+    ],
+    "minecraft:is_tool": [
+        "minecraft:netherite_sword",
+        "minecraft:iron_shovel",
+        "minecraft:iron_sword",
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_trident": [
+        "minecraft:trident"
+    ],
+    "minecraft:leather_tier": [
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots"
+    ],
+    "minecraft:lectern_books": [
+        "minecraft:written_book",
+        "minecraft:writable_book"
+    ],
+    "minecraft:logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_crimson_stem",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:acacia_log",
+        "minecraft:stripped_warped_stem",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:crimson_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:stripped_spruce_log",
+        "minecraft:warped_stem",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:logs_that_burn": [
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:acacia_log",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_oak_log",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:mangrove_logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:music_disc": [
+        "minecraft:music_disc_ward",
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_cat",
+        "minecraft:music_disc_strad",
+        "minecraft:music_disc_chirp",
+        "minecraft:music_disc_mall",
+        "minecraft:music_disc_creator_music_box",
+        "minecraft:music_disc_pigstep",
+        "minecraft:music_disc_11",
+        "minecraft:music_disc_13",
+        "minecraft:music_disc_blocks",
+        "minecraft:music_disc_far",
+        "minecraft:music_disc_mellohi",
+        "minecraft:music_disc_otherside",
+        "minecraft:music_disc_5",
+        "minecraft:music_disc_relic",
+        "minecraft:music_disc_creator",
+        "minecraft:music_disc_precipice"
+    ],
+    "minecraft:netherite_tier": [
+        "minecraft:netherite_sword",
+        "minecraft:netherite_boots",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:planks": [
+        "minecraft:spruce_planks",
+        "minecraft:oak_planks",
+        "minecraft:mangrove_planks",
+        "minecraft:dark_oak_planks",
+        "minecraft:birch_planks",
+        "minecraft:jungle_planks",
+        "minecraft:acacia_planks",
+        "minecraft:bamboo_planks",
+        "minecraft:warped_planks",
+        "minecraft:crimson_planks",
+        "minecraft:cherry_planks"
+    ],
+    "minecraft:sand": [
+        "minecraft:sand",
+        "minecraft:red_sand"
+    ],
+    "minecraft:sign": [
+        "minecraft:jungle_sign",
+        "minecraft:bamboo_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:cherry_sign",
+        "minecraft:oak_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:warped_sign",
+        "minecraft:spruce_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:acacia_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:birch_sign",
+        "minecraft:dark_oak_sign",
+        "minecraft:mangrove_sign",
+        "minecraft:crimson_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:soul_fire_base_blocks": [
+        "minecraft:soul_soil",
+        "minecraft:soul_sand"
+    ],
+    "minecraft:spawn_egg": [
+        "minecraft:enderman_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
+        "minecraft:ravager_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:strider_spawn_egg",
+        "minecraft:slime_spawn_egg",
+        "minecraft:glow_squid_spawn_egg",
+        "minecraft:blaze_spawn_egg",
+        "minecraft:witch_spawn_egg",
+        "minecraft:horse_spawn_egg",
+        "minecraft:polar_bear_spawn_egg",
+        "minecraft:pillager_spawn_egg",
+        "minecraft:stray_spawn_egg",
+        "minecraft:zombie_pigman_spawn_egg",
+        "minecraft:snow_golem_spawn_egg",
+        "minecraft:panda_spawn_egg",
+        "minecraft:axolotl_spawn_egg",
+        "minecraft:agent_spawn_egg",
+        "minecraft:shulker_spawn_egg",
+        "minecraft:vindicator_spawn_egg",
+        "minecraft:evoker_spawn_egg",
+        "minecraft:parrot_spawn_egg",
+        "minecraft:wolf_spawn_egg",
+        "minecraft:sheep_spawn_egg",
+        "minecraft:elder_guardian_spawn_egg",
+        "minecraft:silverfish_spawn_egg",
+        "minecraft:tadpole_spawn_egg",
+        "minecraft:cow_spawn_egg",
+        "minecraft:bogged_spawn_egg",
+        "minecraft:ocelot_spawn_egg",
+        "minecraft:bee_spawn_egg",
+        "minecraft:piglin_brute_spawn_egg",
+        "minecraft:rabbit_spawn_egg",
+        "minecraft:camel_spawn_egg",
+        "minecraft:creeper_spawn_egg",
+        "minecraft:drowned_spawn_egg",
+        "minecraft:chicken_spawn_egg",
+        "minecraft:pig_spawn_egg",
+        "minecraft:mooshroom_spawn_egg",
+        "minecraft:skeleton_spawn_egg",
+        "minecraft:spider_spawn_egg",
+        "minecraft:zombie_spawn_egg",
+        "minecraft:villager_spawn_egg",
+        "minecraft:squid_spawn_egg",
+        "minecraft:bat_spawn_egg",
+        "minecraft:ghast_spawn_egg",
+        "minecraft:magma_cube_spawn_egg",
+        "minecraft:cave_spider_spawn_egg",
+        "minecraft:guardian_spawn_egg",
+        "minecraft:husk_spawn_egg",
+        "minecraft:piglin_spawn_egg",
+        "minecraft:wither_skeleton_spawn_egg",
+        "minecraft:donkey_spawn_egg",
+        "minecraft:mule_spawn_egg",
+        "minecraft:skeleton_horse_spawn_egg",
+        "minecraft:zombie_horse_spawn_egg",
+        "minecraft:npc_spawn_egg",
+        "minecraft:breeze_spawn_egg",
+        "minecraft:llama_spawn_egg",
+        "minecraft:vex_spawn_egg",
+        "minecraft:warden_spawn_egg",
+        "minecraft:zombie_villager_spawn_egg",
+        "minecraft:cod_spawn_egg",
+        "minecraft:salmon_spawn_egg",
+        "minecraft:dolphin_spawn_egg",
+        "minecraft:turtle_spawn_egg",
+        "minecraft:phantom_spawn_egg",
+        "minecraft:cat_spawn_egg",
+        "minecraft:fox_spawn_egg",
+        "minecraft:wandering_trader_spawn_egg",
+        "minecraft:hoglin_spawn_egg",
+        "minecraft:sniffer_spawn_egg",
+        "minecraft:goat_spawn_egg",
+        "minecraft:iron_golem_spawn_egg",
+        "minecraft:ender_dragon_spawn_egg",
+        "minecraft:wither_spawn_egg",
+        "minecraft:frog_spawn_egg",
+        "minecraft:allay_spawn_egg",
+        "minecraft:trader_llama_spawn_egg",
+        "minecraft:armadillo_spawn_egg",
+        "minecraft:spawn_egg"
+    ],
+    "minecraft:stone_bricks": [
+        "minecraft:mossy_stone_bricks",
+        "minecraft:stone_bricks",
+        "minecraft:cracked_stone_bricks",
+        "minecraft:chiseled_stone_bricks"
+    ],
+    "minecraft:stone_crafting_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:stone_tier": [
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:stone_hoe"
+    ],
+    "minecraft:stone_tool_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:transform_materials": [
+        "minecraft:netherite_ingot"
+    ],
+    "minecraft:transform_templates": [
+        "minecraft:netherite_upgrade_smithing_template"
+    ],
+    "minecraft:transformable_items": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:trim_materials": [
+        "minecraft:diamond",
+        "minecraft:iron_ingot",
+        "minecraft:gold_ingot",
+        "minecraft:redstone",
+        "minecraft:netherite_ingot",
+        "minecraft:lapis_lazuli",
+        "minecraft:quartz",
+        "minecraft:copper_ingot",
+        "minecraft:emerald",
+        "minecraft:amethyst_shard"
+    ],
+    "minecraft:trim_templates": [
+        "minecraft:coast_armor_trim_smithing_template",
+        "minecraft:vex_armor_trim_smithing_template",
+        "minecraft:wild_armor_trim_smithing_template",
+        "minecraft:flow_armor_trim_smithing_template",
+        "minecraft:silence_armor_trim_smithing_template",
+        "minecraft:snout_armor_trim_smithing_template",
+        "minecraft:dune_armor_trim_smithing_template",
+        "minecraft:rib_armor_trim_smithing_template",
+        "minecraft:host_armor_trim_smithing_template",
+        "minecraft:eye_armor_trim_smithing_template",
+        "minecraft:spire_armor_trim_smithing_template",
+        "minecraft:sentry_armor_trim_smithing_template",
+        "minecraft:ward_armor_trim_smithing_template",
+        "minecraft:tide_armor_trim_smithing_template",
+        "minecraft:wayfinder_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:bolt_armor_trim_smithing_template"
+    ],
+    "minecraft:trimmable_armors": [
+        "minecraft:iron_chestplate",
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:vibration_damper": [
+        "minecraft:black_carpet",
+        "minecraft:pink_carpet",
+        "minecraft:lime_carpet",
+        "minecraft:blue_carpet",
+        "minecraft:green_wool",
+        "minecraft:cyan_carpet",
+        "minecraft:orange_wool",
+        "minecraft:white_carpet",
+        "minecraft:purple_carpet",
+        "minecraft:yellow_carpet",
+        "minecraft:light_gray_wool",
+        "minecraft:magenta_carpet",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:red_carpet",
+        "minecraft:brown_carpet",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool",
+        "minecraft:orange_carpet",
+        "minecraft:light_blue_carpet",
+        "minecraft:gray_carpet",
+        "minecraft:light_gray_carpet",
+        "minecraft:green_carpet"
+    ],
+    "minecraft:warped_stems": [
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:stripped_warped_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:warped_stem"
+    ],
+    "minecraft:wooden_slabs": [
+        "minecraft:birch_slab",
+        "minecraft:oak_slab",
+        "minecraft:spruce_slab",
+        "minecraft:bamboo_slab",
+        "minecraft:warped_slab",
+        "minecraft:mangrove_slab",
+        "minecraft:cherry_slab",
+        "minecraft:jungle_slab",
+        "minecraft:acacia_slab",
+        "minecraft:dark_oak_slab",
+        "minecraft:crimson_slab"
+    ],
+    "minecraft:wooden_tier": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:wooden_hoe"
+    ],
+    "minecraft:wool": [
+        "minecraft:green_wool",
+        "minecraft:orange_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool"
+    ]
+}

From e9cee51be2bbd3b6f9fc8c6dbc998627a6bdbb2e Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sat, 2 Nov 2024 17:06:55 +0800
Subject: [PATCH 051/165] Water creatures are now ageable

---
 .../geyser/entity/EntityDefinitions.java      | 37 ++++++++++---------
 .../entity/type/living/WaterEntity.java       |  2 +-
 .../org/geysermc/geyser/util/Ordered.java     | 33 -----------------
 3 files changed, 21 insertions(+), 51 deletions(-)
 delete mode 100644 core/src/main/java/org/geysermc/geyser/util/Ordered.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 7a92a5fe3..a25861813 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -678,14 +678,6 @@ public final class EntityDefinitions {
                     .addTranslator(MetadataType.BOOLEAN, (entity, entityMetadata) -> entity.setFlag(EntityFlag.POWERED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
                     .addTranslator(MetadataType.BOOLEAN, CreeperEntity::setIgnited)
                     .build();
-            DOLPHIN = EntityDefinition.inherited(DolphinEntity::new, mobEntityBase)
-                    .type(EntityType.DOLPHIN)
-                    .height(0.6f).width(0.9f)
-                    //TODO check
-                    .addTranslator(null) // treasure position
-                    .addTranslator(null) // "got fish"
-                    .addTranslator(null) // "moistness level"
-                    .build();
             ENDERMAN = EntityDefinition.inherited(EndermanEntity::new, mobEntityBase)
                     .type(EntityType.ENDERMAN)
                     .height(2.9f).width(0.6f)
@@ -755,10 +747,6 @@ public final class EntityDefinitions {
                     .type(EntityType.CAVE_SPIDER)
                     .height(0.5f).width(0.7f)
                     .build();
-            SQUID = EntityDefinition.inherited(SquidEntity::new, mobEntityBase)
-                    .type(EntityType.SQUID)
-                    .heightAndWidth(0.8f)
-                    .build();
             STRAY = EntityDefinition.inherited(AbstractSkeletonEntity::new, mobEntityBase)
                     .type(EntityType.STRAY)
                     .height(1.8f).width(0.6f)
@@ -885,11 +873,6 @@ public final class EntityDefinitions {
                     .height(1.95f).width(0.6f)
                     .build();
 
-            GLOW_SQUID = EntityDefinition.inherited(GlowSquidEntity::new, SQUID)
-                    .type(EntityType.GLOW_SQUID)
-                    .addTranslator(null) // Set dark ticks remaining, possible TODO
-                    .build();
-
             EntityDefinition<RaidParticipantEntity> raidParticipantEntityBase = EntityDefinition.inherited(RaidParticipantEntity::new, mobEntityBase)
                     .addTranslator(null) // Celebrating //TODO
                     .build();
@@ -1081,6 +1064,26 @@ public final class EntityDefinitions {
                     .build();
         }
 
+        // Water creatures (AgeableWaterCreature)
+        {
+            DOLPHIN = EntityDefinition.inherited(DolphinEntity::new, ageableEntityBase)
+                .type(EntityType.DOLPHIN)
+                .height(0.6f).width(0.9f)
+                //TODO check
+                .addTranslator(null) // treasure position
+                .addTranslator(null) // "got fish"
+                .addTranslator(null) // "moistness level"
+                .build();
+            SQUID = EntityDefinition.inherited(SquidEntity::new, ageableEntityBase)
+                .type(EntityType.SQUID)
+                .heightAndWidth(0.8f)
+                .build();
+            GLOW_SQUID = EntityDefinition.inherited(GlowSquidEntity::new, SQUID)
+                .type(EntityType.GLOW_SQUID)
+                .addTranslator(null) // Set dark ticks remaining, possible TODO
+                .build();
+        }
+
         // Horses
         {
             EntityDefinition<AbstractHorseEntity> abstractHorseEntityBase = EntityDefinition.inherited(AbstractHorseEntity::new, ageableEntityBase)
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java
index ae9d0d659..b8fd864b6 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java
@@ -31,7 +31,7 @@ import org.geysermc.geyser.session.GeyserSession;
 
 import java.util.UUID;
 
-public class WaterEntity extends CreatureEntity {
+public class WaterEntity extends AgeableEntity {
 
     public WaterEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
diff --git a/core/src/main/java/org/geysermc/geyser/util/Ordered.java b/core/src/main/java/org/geysermc/geyser/util/Ordered.java
deleted file mode 100644
index 08ff5df72..000000000
--- a/core/src/main/java/org/geysermc/geyser/util/Ordered.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (c) 2024 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.util;
-
-/**
- * Represents anything that could be tracked like a enum, without also creating a name and enum-wide array.
- */
-public interface Ordered {
-    int ordinal();
-}

From 47ac22aecf584706cdc781d1e451cd7c5cd4df62 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sat, 2 Nov 2024 17:38:41 +0800
Subject: [PATCH 052/165] Not all water entities are ageable; only some are;
 oops

---
 .../type/living/AgeableWaterEntity.java       | 43 +++++++++++++++++++
 .../entity/type/living/DolphinEntity.java     |  2 +-
 .../entity/type/living/SquidEntity.java       |  2 +-
 .../entity/type/living/WaterEntity.java       |  2 +-
 4 files changed, 46 insertions(+), 3 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/entity/type/living/AgeableWaterEntity.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/AgeableWaterEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/AgeableWaterEntity.java
new file mode 100644
index 000000000..843215674
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/AgeableWaterEntity.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.entity.type.living;
+
+import org.cloudburstmc.math.vector.Vector3f;
+import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.session.GeyserSession;
+
+import java.util.UUID;
+
+public abstract class AgeableWaterEntity extends AgeableEntity {
+    public AgeableWaterEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
+        super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
+    }
+
+    @Override
+    public boolean canBeLeashed() {
+        return false;
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/DolphinEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/DolphinEntity.java
index a0ea79d67..8c404be97 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/DolphinEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/DolphinEntity.java
@@ -37,7 +37,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 
 import java.util.UUID;
 
-public class DolphinEntity extends WaterEntity {
+public class DolphinEntity extends AgeableWaterEntity {
     public DolphinEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/SquidEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/SquidEntity.java
index 6285bd9a4..ac3456829 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/SquidEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/SquidEntity.java
@@ -36,7 +36,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
 
-public class SquidEntity extends WaterEntity implements Tickable {
+public class SquidEntity extends AgeableWaterEntity implements Tickable {
     private float targetPitch;
     private float targetYaw;
 
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java
index b8fd864b6..ae9d0d659 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/WaterEntity.java
@@ -31,7 +31,7 @@ import org.geysermc.geyser.session.GeyserSession;
 
 import java.util.UUID;
 
-public class WaterEntity extends AgeableEntity {
+public class WaterEntity extends CreatureEntity {
 
     public WaterEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);

From d61ad7baeffb1f3d35d05783a8e89ce9c6e35e30 Mon Sep 17 00:00:00 2001
From: Tim203 <mctim203@gmail.com>
Date: Sat, 2 Nov 2024 11:48:58 +0100
Subject: [PATCH 053/165] Reset the scoreboard in the configuration stage

---
 .../java/org/geysermc/geyser/session/cache/WorldCache.java  | 2 +-
 .../java/JavaFinishConfigurationPacketTranslator.java       | 6 ++++++
 .../translator/protocol/java/JavaLoginTranslator.java       | 2 --
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
index 5927963c0..f2198c7dc 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
@@ -81,7 +81,7 @@ public final class WorldCache {
         resetTitleTimes(false);
     }
 
-    public void removeScoreboard() {
+    public void resetScoreboard() {
         scoreboard.removeScoreboard();
         scoreboard = new Scoreboard(session);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
index 8ade4a1f0..f6ed79fd5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationPacketTranslator.java
@@ -45,5 +45,11 @@ public class JavaFinishConfigurationPacketTranslator extends PacketTranslator<Cl
         }
         session.sendUpstreamPacket(playerListPacket);
         session.getEntityCache().removeAllPlayerEntities();
+
+        // while ClientboundLoginPacket holds the level, it doesn't hold the scoreboard.
+        // The ClientboundStartConfigurationPacket indirectly removes the old scoreboard,
+        // and this packet indirectly creates the new one.
+        // This makes this packet a good place to reset the scoreboard.
+        session.getWorldCache().resetScoreboard();
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java
index fb9159c47..93a7d9a14 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java
@@ -71,8 +71,6 @@ public class JavaLoginTranslator extends PacketTranslator<ClientboundLoginPacket
                 DimensionUtils.fastSwitchDimension(session, fakeDim);
             }
 
-            session.getWorldCache().removeScoreboard();
-
             // Remove all bossbars
             session.getEntityCache().removeAllBossBars();
             // Remove extra hearts, hunger, etc.

From 4d15c7fbcc3915943526fe37cefb2e43608584e7 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 3 Nov 2024 00:01:39 +0800
Subject: [PATCH 054/165] Fix different ResourcePackPushPacket handling, cache
 current input mode

---
 .../java/org/geysermc/geyser/session/GeyserSession.java  | 9 +++++++--
 .../org/geysermc/geyser/session/cache/InputCache.java    | 6 +++++-
 .../java/JavaClientboundResourcePackPushPacket.java      | 2 ++
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index d965f05bf..36ed3f02e 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -255,7 +255,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private final EventLoop eventLoop;
     @Setter
     private AuthData authData;
-    @Setter
     private BedrockClientData clientData;
     /**
      * Used for Floodgate skin uploading
@@ -1411,6 +1410,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         this.cameraData.handleGameModeChange(currentlySpectator, newGamemode);
     }
 
+    public void setClientData(BedrockClientData data) {
+        this.clientData = data;
+        this.inputCache.setInputMode(
+            org.cloudburstmc.protocol.bedrock.data.InputMode.values()[data.getCurrentInputMode().ordinal()]);
+    }
+
     /**
      * Convenience method to reduce amount of duplicate code. Sends ServerboundUseItemPacket.
      */
@@ -2124,7 +2129,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     @Override
     public @NonNull InputMode inputMode() {
-        return InputMode.values()[clientData.getCurrentInputMode().ordinal()]; //todo
+        return InputMode.values()[inputCache.getInputMode().ordinal()]; //todo
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
index 79c37a5a8..f12c4d3c8 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/InputCache.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.session.cache;
 
 import lombok.Getter;
 import lombok.Setter;
+import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
 import org.cloudburstmc.math.vector.Vector2f;
 import org.cloudburstmc.protocol.bedrock.data.InputMode;
 import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
@@ -45,6 +46,8 @@ public final class InputCache {
     private int jumpingTicks;
     @Getter @Setter
     private float jumpScale;
+    @Getter @Setter
+    private @MonotonicNonNull InputMode inputMode;
 
     public InputCache(GeyserSession session) {
         this.session = session;
@@ -54,9 +57,10 @@ public final class InputCache {
         // Input is sent to the server before packet positions, as of 1.21.2
         Set<PlayerAuthInputData> bedrockInput = packet.getInputData();
         var oldInputPacket = this.inputPacket;
+        this.inputMode = packet.getInputMode();
 
         boolean up, down, left, right;
-        if (packet.getInputMode() == InputMode.MOUSE) {
+        if (this.inputMode == InputMode.MOUSE) {
             up = bedrockInput.contains(PlayerAuthInputData.UP);
             down = bedrockInput.contains(PlayerAuthInputData.DOWN);
             left = bedrockInput.contains(PlayerAuthInputData.LEFT);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePackPushPacket.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePackPushPacket.java
index 9e7306ab1..4091405e4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePackPushPacket.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaClientboundResourcePackPushPacket.java
@@ -40,6 +40,8 @@ public class JavaClientboundResourcePackPushPacket extends PacketTranslator<Clie
         // We need to "answer" this to avoid timeout issues related to resource packs
         // If packs are required, we need to lie to the server that we accepted them, as we get kicked otherwise.
         if (packet.isRequired()) {
+            session.sendDownstreamPacket(new ServerboundResourcePackPacket(packet.getId(), ResourcePackStatus.ACCEPTED));
+            session.sendDownstreamPacket(new ServerboundResourcePackPacket(packet.getId(), ResourcePackStatus.DOWNLOADED));
             session.sendDownstreamPacket(new ServerboundResourcePackPacket(packet.getId(), ResourcePackStatus.SUCCESSFULLY_LOADED));
         } else {
             session.sendDownstreamPacket(new ServerboundResourcePackPacket(packet.getId(), ResourcePackStatus.DECLINED));

From 3298cdbc3cb444e3f505361316e0d45feedcd924 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 3 Nov 2024 03:23:00 +0800
Subject: [PATCH 055/165] Small fixes; start on new rotation packet

why is bedrock weird with player rotation
---
 .../type/player/SessionPlayerEntity.java      | 14 ++++++-
 .../JavaFinishConfigurationTranslator.java    |  4 +-
 .../player/JavaCookieRequestTranslator.java   |  2 +-
 .../player/JavaPlayerPositionTranslator.java  | 14 +++++--
 .../player/JavaPlayerRotationTranslator.java  | 42 +++++++++++++++++++
 5 files changed, 69 insertions(+), 7 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index a8b0765f3..5db47a34a 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -34,12 +34,13 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.AttributeData;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
+import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
 import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.level.BedrockDimension;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.AttributeUtils;
 import org.geysermc.geyser.util.DimensionUtils;
@@ -338,6 +339,17 @@ public class SessionPlayerEntity extends PlayerEntity {
         this.vehicleJumpStrength = MathUtils.constrain(vehicleJumpStrength, 0, 100);
     }
 
+    public void forceRotationUpdate() {
+        MoveEntityAbsolutePacket absolutePacket = new MoveEntityAbsolutePacket();
+        absolutePacket.setPosition(this.getPosition());
+        absolutePacket.setRotation(this.getBedrockRotation());
+        absolutePacket.setRuntimeEntityId(this.getGeyserId());
+        absolutePacket.setForceMove(true);
+        absolutePacket.setOnGround(this.isOnGround());
+
+        session.sendUpstreamPacket(absolutePacket);
+    }
+
     private boolean isBelowVoidFloor() {
         return position.getY() < voidFloorPosition();
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
index d73c2e2ed..0c5dcf31b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
@@ -70,7 +70,9 @@ public class JavaFinishConfigurationTranslator extends PacketTranslator<Clientbo
         craftingDataPacket.setCleanRecipes(true);
         craftingDataPacket.getCraftingData().addAll(CARTOGRAPHY_RECIPES);
         craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
-        if (session.isSentSpawnPacket()) {
+        // TODO proper fix to check if we've been online - in online mode (with auth screen),
+        //  recipes are not yet known
+        if (session.isSentSpawnPacket() && session.getStonecutterRecipes() != null) {
             session.getUpstream().sendPacket(craftingDataPacket);
             session.getCraftingRecipes().clear();
             session.getJavaToBedrockRecipeIds().clear();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java
index 33bfa7be8..a44faed29 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java
@@ -38,7 +38,7 @@ public class JavaCookieRequestTranslator extends PacketTranslator<ClientboundCoo
     public void translate(GeyserSession session, ClientboundCookieRequestPacket packet) {
         ServerboundCookieResponsePacket responsePacket = new ServerboundCookieResponsePacket(
                 packet.getKey(),
-                session.getCookies().get(packet.getKey())
+                session.getCookies().get(packet.getKey().asString())
         );
         session.sendDownstreamPacket(responsePacket);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index ca1b95997..cdbc16f39 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -26,10 +26,6 @@
 package org.geysermc.geyser.translator.protocol.java.entity.player;
 
 import org.cloudburstmc.math.vector.Vector3d;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PositionElement;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundAcceptTeleportationPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosRotPacket;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.packet.ChunkRadiusUpdatedPacket;
 import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
@@ -41,6 +37,10 @@ import org.geysermc.geyser.session.cache.TeleportCache;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.ChunkUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PositionElement;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundAcceptTeleportationPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosRotPacket;
 
 @Translator(packet = ClientboundPlayerPositionPacket.class)
 public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPlayerPositionPacket> {
@@ -76,6 +76,12 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             movePlayerPacket.setMode(MovePlayerPacket.Mode.RESPAWN);
 
             session.sendUpstreamPacket(movePlayerPacket);
+
+            // Fixes incorrect rotation upon login
+            // Yes, even that's not respected by Bedrock. Try it out in singleplayer!
+            // Log out and back in - and you're looking elsewhere :)
+            entity.forceRotationUpdate();
+
             session.setSpawned(true);
             // Make sure the player moves away from (0, 32767, 0) before accepting movement packets
             session.setUnconfirmedTeleport(new TeleportCache(packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ(), packet.getXRot(), packet.getYRot(), packet.getId())); // TODO
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java
new file mode 100644
index 000000000..2d1a4bbe5
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java.entity.player;
+
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerRotationPacket;
+
+@Translator(packet = ClientboundPlayerRotationPacket.class)
+public class JavaPlayerRotationTranslator extends PacketTranslator<ClientboundPlayerRotationPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundPlayerRotationPacket packet) {
+        GeyserImpl.getInstance().getLogger().info(packet.toString());
+        // TODO
+    }
+}

From 5b5ac3024fcbea1d56132eae160db6203c705bc9 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 3 Nov 2024 01:04:56 -0500
Subject: [PATCH 056/165] Use non-Jitpack MCPL

---
 .../geyser/inventory/GeyserItemStack.java     |  2 +-
 .../populator/TagRegistryPopulator.java       | 26 ++++++++++---------
 .../geyser/session/GeyserSession.java         |  1 +
 gradle/libs.versions.toml                     |  5 ++--
 4 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index a2797e6dd..256de7799 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -184,7 +184,7 @@ public class GeyserItemStack {
 
     public SlotDisplay asSlotDisplay() {
         if (isEmpty()) {
-            return new EmptySlotDisplay();
+            return EmptySlotDisplay.INSTANCE;
         }
         return new ItemStackSlotDisplay(this.getItemStack());
     }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
index 455145217..4e249d483 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
@@ -56,6 +56,19 @@ public final class TagRegistryPopulator {
     private static final Gson GSON = new GsonBuilder().create(); // temporary
 
     public static void populate() {
+        Hash.Strategy<int[]> hashStrategy = new Hash.Strategy<>() {
+            // Necessary so arrays can actually be compared
+            @Override
+            public int hashCode(int[] o) {
+                return Arrays.hashCode(o);
+            }
+
+            @Override
+            public boolean equals(int[] a, int[] b) {
+                return Arrays.equals(a, b);
+            }
+        };
+
         List<ObjectIntPair<String>> paletteVersions = List.of(
             ObjectIntPair.of("1_20_80", Bedrock_v671.CODEC.getProtocolVersion()),
             ObjectIntPair.of("1_21_0", Bedrock_v685.CODEC.getProtocolVersion()),
@@ -77,18 +90,7 @@ public final class TagRegistryPopulator {
                 throw new AssertionError("Unable to load Bedrock runtime item IDs", e);
             }
 
-            Object2ObjectMap<int[], String> javaItemsToBedrockTag = new Object2ObjectOpenCustomHashMap<>(new Hash.Strategy<>() {
-                // Necessary so arrays can actually be compared
-                @Override
-                public int hashCode(int[] o) {
-                    return Arrays.hashCode(o);
-                }
-
-                @Override
-                public boolean equals(int[] a, int[] b) {
-                    return Arrays.equals(a, b);
-                }
-            });
+            Object2ObjectMap<int[], String> javaItemsToBedrockTag = new Object2ObjectOpenCustomHashMap<>(hashStrategy);
 
             for (var entry : bedrockTags.entrySet()) {
                 List<String> value = entry.getValue();
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 36ed3f02e..2036f2941 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -214,6 +214,7 @@ import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.Serverbound
 import org.geysermc.mcprotocollib.protocol.packet.handshake.serverbound.ClientIntentionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatCommandSignedPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundClientTickEndPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerAbilitiesPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundPlayerActionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemPacket;
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 60fe78448..b8908f518 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241022.154658-14"
 protocol-codec = "3.0.0.Beta5-20241022.154658-14"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.2-SNAPSHOT"
+mcprotocollib = "1.21.2-20241103.011758-1"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"
@@ -121,8 +121,7 @@ guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
 gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
 junit = { group = "org.junit.jupiter", name = "junit-jupiter", version.ref = "junit" }
 minecraftauth = { group = "net.raphimc", name = "MinecraftAuth", version.ref = "minecraftauth" }
-#mcprotocollib = { group = "org.geysermc.mcprotocollib", name = "protocol", version.ref = "mcprotocollib" }
-mcprotocollib = { group = "com.github.geysermc", name = "mcprotocollib", version = "feature~1.21.2-SNAPSHOT"}
+mcprotocollib = { group = "org.geysermc.mcprotocollib", name = "protocol", version.ref = "mcprotocollib" }
 raknet = { group = "org.cloudburstmc.netty", name = "netty-transport-raknet", version.ref = "raknet" }
 terminalconsoleappender = { group = "net.minecrell", name = "terminalconsoleappender", version.ref = "terminalconsoleappender" }
 velocity-api = { group = "com.velocitypowered", name = "velocity-api", version.ref = "velocity" }

From 9a41f59a339e46e2e742a0304159765027da45b6 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 3 Nov 2024 23:54:45 +0800
Subject: [PATCH 057/165] Fix: Ignored rotation players to session player
 (self)

---
 .../geysermc/geyser/entity/type/Entity.java   |  1 -
 .../entity/type/player/PlayerEntity.java      | 17 ++++++--------
 .../type/player/SessionPlayerEntity.java      | 23 +++++++++++++++++++
 .../player/JavaPlayerLookAtTranslator.java    |  2 +-
 .../player/JavaPlayerPositionTranslator.java  |  2 +-
 .../player/JavaPlayerRotationTranslator.java  |  4 +---
 6 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
index 2ad89dd2f..0d3214709 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
@@ -45,7 +45,6 @@ import org.geysermc.geyser.api.entity.type.GeyserEntity;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.GeyserDirtyMetadata;
 import org.geysermc.geyser.entity.properties.GeyserEntityPropertyManager;
-import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.scoreboard.Team;
 import org.geysermc.geyser.session.GeyserSession;
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
index 2abc34d2b..7e747e33d 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
@@ -25,12 +25,6 @@
 
 package org.geysermc.geyser.entity.type.player;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.UUID;
-import java.util.concurrent.TimeUnit;
 import lombok.Getter;
 import lombok.Setter;
 import net.kyori.adventure.text.Component;
@@ -65,6 +59,13 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.Boolea
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.FloatEntityMetadata;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
 @Getter @Setter
 public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
     public static final float SNEAKING_POSE_HEIGHT = 1.5f;
@@ -250,10 +251,6 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
         }
     }
 
-    public void updateRotation(float yaw, float pitch, float headYaw, boolean isOnGround) {
-        moveRelative(0, 0, 0, yaw, pitch, headYaw, isOnGround);
-    }
-
     @Override
     public void setPosition(Vector3f position) {
         if (this.bedPosition != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index 5db47a34a..ee56e25a7 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -144,6 +144,29 @@ public class SessionPlayerEntity extends PlayerEntity {
         this.position = position.add(0, definition.offset(), 0);
     }
 
+    /**
+     * Special method used only when updating the session player's rotation.
+     * For some reason, Mode#NORMAL ignored rotation. Yay.
+     * @param yaw the new yaw
+     * @param pitch the new pitch
+     * @param headYaw the head yaw
+     */
+    public void updateOwnRotation(float yaw, float pitch, float headYaw) {
+        setYaw(yaw);
+        setPitch(pitch);
+        setHeadYaw(headYaw);
+        
+        MovePlayerPacket movePlayerPacket = new MovePlayerPacket();
+        movePlayerPacket.setRuntimeEntityId(geyserId);
+        movePlayerPacket.setPosition(position);
+        movePlayerPacket.setRotation(getBedrockRotation());
+        movePlayerPacket.setOnGround(isOnGround());
+        movePlayerPacket.setMode(MovePlayerPacket.Mode.TELEPORT);
+        movePlayerPacket.setTeleportationCause(MovePlayerPacket.TeleportationCause.BEHAVIOR);
+
+        session.sendUpstreamPacket(movePlayerPacket);
+    }
+
     /**
      * Set the player's position without applying an offset or moving the bounding box
      * This is used in BedrockMovePlayerTranslator which receives the player's position
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerLookAtTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerLookAtTranslator.java
index b1413542b..22786e918 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerLookAtTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerLookAtTranslator.java
@@ -49,7 +49,7 @@ public class JavaPlayerLookAtTranslator extends PacketTranslator<ClientboundPlay
 
         var self = session.getPlayerEntity();
         // headYaw is also set to yaw in this packet
-        self.updateRotation(yaw, pitch, yaw, self.isOnGround());
+        self.updateOwnRotation(yaw, pitch, yaw);
     }
 
     public Vector3f targetPosition(GeyserSession session, ClientboundPlayerLookAtPacket packet) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
index cdbc16f39..d56c5d2d3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerPositionTranslator.java
@@ -80,7 +80,7 @@ public class JavaPlayerPositionTranslator extends PacketTranslator<ClientboundPl
             // Fixes incorrect rotation upon login
             // Yes, even that's not respected by Bedrock. Try it out in singleplayer!
             // Log out and back in - and you're looking elsewhere :)
-            entity.forceRotationUpdate();
+            entity.updateOwnRotation(entity.getYaw(), entity.getPitch(), entity.getHeadYaw());
 
             session.setSpawned(true);
             // Make sure the player moves away from (0, 32767, 0) before accepting movement packets
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java
index 2d1a4bbe5..204ee2481 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaPlayerRotationTranslator.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity.player;
 
-import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
@@ -36,7 +35,6 @@ public class JavaPlayerRotationTranslator extends PacketTranslator<ClientboundPl
 
     @Override
     public void translate(GeyserSession session, ClientboundPlayerRotationPacket packet) {
-        GeyserImpl.getInstance().getLogger().info(packet.toString());
-        // TODO
+        session.getPlayerEntity().updateOwnRotation(packet.getYRot(), packet.getXRot(), packet.getYRot());
     }
 }

From ecc5e8c1753bedeb1daa0a79957e97673121fc7d Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 3 Nov 2024 11:38:15 -0500
Subject: [PATCH 058/165] Clear old recipe code from UpdateRecipesTranslator

---
 .../java/JavaUpdateRecipesTranslator.java     | 418 +-----------------
 1 file changed, 1 insertion(+), 417 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index ad67da81e..7ea66e0a3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -60,7 +60,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 import java.util.UUID;
 
@@ -84,15 +83,6 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
             "minecraft:netherite_boots"
     );
 
-    /**
-     * Fixes https://github.com/GeyserMC/Geyser/issues/3784 by using item tags where applicable instead of group IDs
-     * Item Tags allow mixing ingredients, and theoretically, adding item tags to custom items should also include them.
-     */
-    private static final Map<String, String> RECIPE_TAGS = Map.of(
-        "minecraft:wood", "minecraft:logs",
-        "minecraft:wooden_slab", "minecraft:wooden_slabs",
-        "minecraft:planks", "minecraft:planks");
-
     private static final Key SMITHING_BASE = MinecraftKey.key("smithing_base");
     private static final Key SMITHING_TEMPLATE = MinecraftKey.key("smithing_template");
     private static final Key SMITHING_ADDITION = MinecraftKey.key("smithing_addition");
@@ -190,282 +180,7 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
         session.setStonecutterRecipes(stonecutterRecipeMap);
         session.getLastRecipeNetId().set(netId);
     }
-//        boolean sendTrimRecipes = false;
-//        Map<String, List<String>> recipeIDs = session.getJavaToBedrockRecipeIds();
-//        recipeIDs.clear();
-//        Int2ObjectMap<GeyserRecipe> recipeMap = new Int2ObjectOpenHashMap<>();
-//        Int2ObjectMap<List<StoneCuttingRecipeData>> unsortedStonecutterData = new Int2ObjectOpenHashMap<>();
-//        CraftingDataPacket craftingDataPacket = new CraftingDataPacket();
-//        craftingDataPacket.setCleanRecipes(true);
-//
-//        RecipeContext context = new RecipeContext(session, craftingDataPacket, recipeMap);
-//
-//        for (Recipe recipe : packet.getRecipes()) {
-//            switch (recipe.getType()) {
-//                case CRAFTING_SHAPELESS -> {
-//                    ShapelessRecipeData shapelessRecipeData = (ShapelessRecipeData) recipe.getData();
-//                    List<String> bedrockRecipeIDs = context.translateShapelessRecipe(new GeyserShapelessRecipe(shapelessRecipeData));
-//                    if (bedrockRecipeIDs != null) {
-//                        context.addRecipeIdentifier(session, recipe.getIdentifier().asString(), bedrockRecipeIDs);
-//                    }
-//                }
-//                case CRAFTING_SHAPED -> {
-//                    ShapedRecipeData shapedRecipeData = (ShapedRecipeData) recipe.getData();
-//                    List<String> bedrockRecipeIDs = context.translateShapedRecipe(new GeyserShapedRecipe(shapedRecipeData));
-//                    if (bedrockRecipeIDs != null) {
-//                        context.addRecipeIdentifier(session, recipe.getIdentifier().asString(), bedrockRecipeIDs);
-//                    }
-//                }
-//                case STONECUTTING -> {
-//                    StoneCuttingRecipeData stoneCuttingData = (StoneCuttingRecipeData) recipe.getData();
-//                    if (stoneCuttingData.getIngredient().getOptions().length == 0) {
-//                        if (GeyserImpl.getInstance().getConfig().isDebugMode()) {
-//                            GeyserImpl.getInstance().getLogger().debug("Received broken stone cutter recipe: " + stoneCuttingData + " " +
-//                                    recipe.getIdentifier() + " " + Registries.JAVA_ITEMS.get().get(stoneCuttingData.getResult().getId()).javaIdentifier());
-//                        }
-//                        continue;
-//                    }
-//                    ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0];
-//                    List<StoneCuttingRecipeData> data = unsortedStonecutterData.get(ingredient.getId());
-//                    if (data == null) {
-//                        data = new ArrayList<>();
-//                        unsortedStonecutterData.put(ingredient.getId(), data);
-//                    }
-//                    // Save for processing after all recipes have been received
-//                    data.add(stoneCuttingData);
-//                }
-//                case SMITHING_TRANSFORM -> {
-//                    SmithingTransformRecipeData data = (SmithingTransformRecipeData) recipe.getData();
-//                    ItemData output = ItemTranslator.translateToBedrock(session, data.getResult());
-//
-//                    for (ItemStack template : data.getTemplate().getOptions()) {
-//                        ItemDescriptorWithCount bedrockTemplate = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, template));
-//
-//                        for (ItemStack base : data.getBase().getOptions()) {
-//                            ItemDescriptorWithCount bedrockBase = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, base));
-//
-//                            for (ItemStack addition : data.getAddition().getOptions()) {
-//                                ItemDescriptorWithCount bedrockAddition = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, addition));
-//
-//                                String id = recipe.getIdentifier().asString();
-//                                // Note: vanilla inputs use aux value of Short.MAX_VALUE
-//                                craftingDataPacket.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.SmithingTransformRecipeData.of(id,
-//                                        bedrockTemplate, bedrockBase, bedrockAddition, output, "smithing_table", context.getAndIncrementNetId()));
-//
-//                                recipeIDs.put(id, new ArrayList<>(Collections.singletonList(id)));
-//                            }
-//                        }
-//                    }
-//                }
-//                case SMITHING_TRIM -> {
-//                    sendTrimRecipes = true;
-//                    // ignored currently - see below
-//                }
-//                case CRAFTING_DECORATED_POT -> {
-//                    // Paper 1.20 seems to send only one recipe, which seems to be hardcoded to include all recipes.
-//                    // We can send the equivalent Bedrock MultiRecipe! :)
-//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("685a742a-c42e-4a4e-88ea-5eb83fc98e5b"), context.getAndIncrementNetId()));
-//                }
-//                case CRAFTING_SPECIAL_BOOKCLONING -> {
-//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("d1ca6b84-338e-4f2f-9c6b-76cc8b4bd98d"), context.getAndIncrementNetId()));
-//                }
-//                case CRAFTING_SPECIAL_REPAIRITEM -> {
-//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("00000000-0000-0000-0000-000000000001"), context.getAndIncrementNetId()));
-//                }
-//                case CRAFTING_SPECIAL_MAPEXTENDING -> {
-//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("d392b075-4ba1-40ae-8789-af868d56f6ce"), context.getAndIncrementNetId()));
-//                }
-//                case CRAFTING_SPECIAL_MAPCLONING -> {
-//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("85939755-ba10-4d9d-a4cc-efb7a8e943c4"), context.getAndIncrementNetId()));
-//                }
-//                case CRAFTING_SPECIAL_FIREWORK_ROCKET -> {
-//                    craftingDataPacket.getCraftingData().add(MultiRecipeData.of(UUID.fromString("00000000-0000-0000-0000-000000000002"), context.getAndIncrementNetId()));
-//                }
-//                default -> {
-//                    List<GeyserRecipe> recipes = Registries.RECIPES.get(recipe.getType());
-//                    if (recipes != null) {
-//                        List<String> bedrockRecipeIds = new ArrayList<>();
-//                        if (recipe.getType() == RecipeType.CRAFTING_SPECIAL_TIPPEDARROW) {
-//                            // Only shaped recipe at this moment
-//                            for (GeyserRecipe builtInRecipe : recipes) {
-//                                var recipeIds = context.translateShapedRecipe((GeyserShapedRecipe) builtInRecipe);
-//                                if (recipeIds != null) {
-//                                    bedrockRecipeIds.addAll(recipeIds);
-//                                }
-//                            }
-//                        } else if (recipe.getType() == RecipeType.CRAFTING_SPECIAL_SHULKERBOXCOLORING) {
-//                            for (GeyserRecipe builtInRecipe : recipes) {
-//                                var recipeIds = context.translateShulkerBoxRecipe((GeyserShapelessRecipe) builtInRecipe);
-//                                if (recipeIds != null) {
-//                                    bedrockRecipeIds.addAll(recipeIds);
-//                                }
-//                            }
-//                        } else {
-//                            for (GeyserRecipe builtInRecipe : recipes) {
-//                                var recipeIds = context.translateShapelessRecipe((GeyserShapelessRecipe) builtInRecipe);
-//                                if (recipeIds != null) {
-//                                    bedrockRecipeIds.addAll(recipeIds);
-//                                }
-//                            }
-//                        }
-//                        context.addSpecialRecipesIdentifiers(recipe, bedrockRecipeIds);
-//                    }
-//                }
-//            }
-//        }
-//        craftingDataPacket.getCraftingData().addAll(CARTOGRAPHY_RECIPES);
-//        craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
-//
-//        Int2ObjectMap<GeyserStonecutterData> stonecutterRecipeMap = new Int2ObjectOpenHashMap<>();
-//        for (Int2ObjectMap.Entry<List<StoneCuttingRecipeData>> data : unsortedStonecutterData.int2ObjectEntrySet()) {
-//            // Sort the list by each output item's Java identifier - this is how it's sorted on Java, and therefore
-//            // We can get the correct order for button pressing
-//            data.getValue().sort(Comparator.comparing((stoneCuttingRecipeData ->
-//                    Registries.JAVA_ITEMS.get().get(stoneCuttingRecipeData.getResult().getId())
-//                        // See RecipeManager#getRecipesFor as of 1.21
-//                            .translationKey())));
-//
-//            // Now that it's sorted, let's translate these recipes
-//            int buttonId = 0;
-//            for (StoneCuttingRecipeData stoneCuttingData : data.getValue()) {
-//                // As of 1.16.4, all stonecutter recipes have one ingredient option
-//                ItemStack ingredient = stoneCuttingData.getIngredient().getOptions()[0];
-//                ItemData input = ItemTranslator.translateToBedrock(session, ingredient);
-//                ItemDescriptorWithCount descriptor = ItemDescriptorWithCount.fromItem(input);
-//                ItemStack javaOutput = stoneCuttingData.getResult();
-//                ItemData output = ItemTranslator.translateToBedrock(session, javaOutput);
-//                if (!input.isValid() || !output.isValid()) {
-//                    // Probably modded items
-//                    continue;
-//                }
-//                UUID uuid = UUID.randomUUID();
-//                // We need to register stonecutting recipes, so they show up on Bedrock
-//                craftingDataPacket.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shapeless(uuid.toString(),
-//                        Collections.singletonList(descriptor), Collections.singletonList(output), uuid, "stonecutter", 0, context.netId, RecipeUnlockingRequirement.INVALID));
-//
-//                // Save the recipe list for reference when crafting
-//                // Add the net ID as the key and the button required + output for the value
-//                stonecutterRecipeMap.put(context.getAndIncrementNetId(), new GeyserStonecutterData(buttonId++, javaOutput));
-//
-//                // Currently, stone cutter recipes are not locked/unlocked on Bedrock; so no need to cache their identifiers.
-//            }
-//        }
-//
-//        session.getLastRecipeNetId().set(context.netId); // No increment
-//
-//        // Only send smithing trim recipes if Java/ViaVersion sends them.
-//        if (sendTrimRecipes) {
-//            // BDS sends armor trim templates and materials before the CraftingDataPacket
-//            TrimDataPacket trimDataPacket = new TrimDataPacket();
-//            trimDataPacket.getPatterns().addAll(session.getRegistryCache().trimPatterns().values());
-//            trimDataPacket.getMaterials().addAll(session.getRegistryCache().trimMaterials().values());
-//            session.sendUpstreamPacket(trimDataPacket);
-//
-//            // Identical smithing_trim recipe sent by BDS that uses tag-descriptors, as the client seems to ignore the
-//            // approach of using many default-descriptors (which we do for smithing_transform)
-//            craftingDataPacket.getCraftingData().add(SmithingTrimRecipeData.of(TrimRecipe.ID,
-//                    TrimRecipe.BASE, TrimRecipe.ADDITION, TrimRecipe.TEMPLATE, "smithing_table", session.getLastRecipeNetId().getAndIncrement()));
-//        } else {
-//            // manually add recipes for the upgrade template (workaround), since Java pre-1.20 doesn't
-//            craftingDataPacket.getCraftingData().addAll(getSmithingTransformRecipes(session));
-//        }
-//        session.setOldSmithingTable(!sendTrimRecipes);
-//        session.sendUpstreamPacket(craftingDataPacket);
-//        session.setCraftingRecipes(recipeMap);
-//        session.setStonecutterRecipes(stonecutterRecipeMap);
-//    }
-//
-//    //TODO: rewrite
-//    /**
-//     * The Java server sends an array of items for each ingredient you can use per slot in the crafting grid.
-//     * Bedrock recipes take only one ingredient per crafting grid slot.
-//     *
-//     * @return the Java ingredient list as an array that Bedrock can understand
-//     */
-//    private static ItemDescriptorWithCount[][] combinations(GeyserSession session, Ingredient[] ingredients) {
-//        boolean empty = true;
-//        Map<Set<ItemDescriptorWithCount>, IntSet> squashedOptions = new HashMap<>();
-//        for (int i = 0; i < ingredients.length; i++) {
-//            if (ingredients[i].getOptions().length == 0) {
-//                squashedOptions.computeIfAbsent(Collections.singleton(ItemDescriptorWithCount.EMPTY), k -> new IntOpenHashSet()).add(i);
-//                continue;
-//            }
-//            empty = false;
-//            Ingredient ingredient = ingredients[i];
-//            Map<GroupedItem, List<ItemDescriptorWithCount>> groupedByIds = Arrays.stream(ingredient.getOptions())
-//                    .map(item -> ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, item)))
-//                    .collect(Collectors.groupingBy(item -> item == ItemDescriptorWithCount.EMPTY ? new GroupedItem(ItemDefinition.AIR, 0) : new GroupedItem(((DefaultDescriptor) item.getDescriptor()).getItemId(), item.getCount())));
-//            Set<ItemDescriptorWithCount> optionSet = new HashSet<>(groupedByIds.size());
-//            for (Map.Entry<GroupedItem, List<ItemDescriptorWithCount>> entry : groupedByIds.entrySet()) {
-//                if (entry.getValue().size() > 1) {
-//                    GroupedItem groupedItem = entry.getKey();
-//
-//                    String recipeTag = RECIPE_TAGS.get(groupedItem.id.getIdentifier());
-//                    if (recipeTag != null && ingredients.length > 1) {
-//                        optionSet.add(new ItemDescriptorWithCount(new ItemTagDescriptor(recipeTag), groupedItem.count));
-//                        continue;
-//                    }
-//
-//                    int idCount = 0;
-//                    //not optimal
-//                    for (ItemMapping mapping : session.getItemMappings().getItems()) {
-//                        if (mapping.getBedrockDefinition() == groupedItem.id) {
-//                            idCount++;
-//                        }
-//                    }
-//                    if (entry.getValue().size() < idCount) {
-//                        optionSet.addAll(entry.getValue());
-//                    } else {
-//                        optionSet.add(groupedItem.id == ItemDefinition.AIR ? ItemDescriptorWithCount.EMPTY : new ItemDescriptorWithCount(new DefaultDescriptor(groupedItem.id, Short.MAX_VALUE), groupedItem.count));
-//                    }
-//                } else {
-//                    ItemDescriptorWithCount item = entry.getValue().get(0);
-//                    optionSet.add(item);
-//                }
-//            }
-//            squashedOptions.computeIfAbsent(optionSet, k -> new IntOpenHashSet()).add(i);
-//        }
-//        if (empty) {
-//            // Crashes Bedrock 1.19.70 otherwise
-//            // Fixes https://github.com/GeyserMC/Geyser/issues/3549
-//            return null;
-//        }
-//        int totalCombinations = 1;
-//        for (Set<ItemDescriptorWithCount> optionSet : squashedOptions.keySet()) {
-//            totalCombinations *= optionSet.size();
-//        }
-//        if (totalCombinations > 500) {
-//            ItemDescriptorWithCount[] translatedItems = new ItemDescriptorWithCount[ingredients.length];
-//            for (int i = 0; i < ingredients.length; i++) {
-//                if (ingredients[i].getOptions().length > 0) {
-//                    translatedItems[i] = ItemDescriptorWithCount.fromItem(ItemTranslator.translateToBedrock(session, ingredients[i].getOptions()[0]));
-//                } else {
-//                    translatedItems[i] = ItemDescriptorWithCount.EMPTY;
-//                }
-//            }
-//            return new ItemDescriptorWithCount[][]{translatedItems};
-//        }
-//        List<Set<ItemDescriptorWithCount>> sortedSets = new ArrayList<>(squashedOptions.keySet());
-//        sortedSets.sort(Comparator.comparing(Set::size, Comparator.reverseOrder()));
-//        ItemDescriptorWithCount[][] combinations = new ItemDescriptorWithCount[totalCombinations][ingredients.length];
-//        int x = 1;
-//        for (Set<ItemDescriptorWithCount> set : sortedSets) {
-//            IntSet slotSet = squashedOptions.get(set);
-//            int i = 0;
-//            for (ItemDescriptorWithCount item : set) {
-//                for (int j = 0; j < totalCombinations / set.size(); j++) {
-//                    final int comboIndex = (i * x) + (j % x) + ((j / x) * set.size() * x);
-//                    for (IntIterator it = slotSet.iterator(); it.hasNext(); ) {
-//                        combinations[comboIndex][it.nextInt()] = item;
-//                    }
-//                }
-//                i++;
-//            }
-//            x *= set.size();
-//        }
-//        return combinations;
-//    }
-//
+    
     private void addSmithingTransformRecipes(GeyserSession session, List<RecipeData> recipes) {
         ItemMapping template = session.getItemMappings().getStoredItems().upgradeTemplate();
 
@@ -488,135 +203,4 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
         GeyserImpl.getInstance().getLogger().debug("Unable to find item with identifier " + bedrockId);
         return ItemDescriptorWithCount.EMPTY;
     }
-//
-//    @EqualsAndHashCode
-//    @AllArgsConstructor
-//    private static class GroupedItem {
-//        ItemDefinition id;
-//        int count;
-//    }
-//
-//    private static final class RecipeContext {
-//        private final GeyserSession session;
-//        private final CraftingDataPacket packet;
-//        private final Int2ObjectMap<GeyserRecipe> recipeMap;
-//        // Get the last known network ID (first used for some pregenerated recipes) and increment from there.
-//        private int netId = InventoryUtils.LAST_RECIPE_NET_ID + 1;
-//
-//        private RecipeContext(GeyserSession session, CraftingDataPacket packet, Int2ObjectMap<GeyserRecipe> recipeMap) {
-//            this.session = session;
-//            this.packet = packet;
-//            this.recipeMap = recipeMap;
-//        }
-//
-//        List<String> translateShulkerBoxRecipe(GeyserShapelessRecipe recipe) {
-//            ItemStack result = recipe.result();
-//            ItemData output = ItemTranslator.translateToBedrock(session, result);
-//            if (!output.isValid()) {
-//                // Likely modded item that Bedrock will complain about if it persists
-//                return null;
-//            }
-//
-//            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
-//            if (!(javaItem instanceof BedrockRequiresTagItem)) {
-//                // Strip NBT - tools won't appear in the recipe book otherwise
-//                output = output.toBuilder().tag(null).build();
-//            }
-//            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
-//            if (inputCombinations == null) {
-//                return null;
-//            }
-//
-//            List<String> bedrockRecipeIDs = new ArrayList<>();
-//            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
-//                UUID uuid = UUID.randomUUID();
-//                bedrockRecipeIDs.add(uuid.toString());
-//                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shulkerBox(uuid.toString(),
-//                        Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, netId));
-//                recipeMap.put(netId++, recipe);
-//            }
-//            return bedrockRecipeIDs;
-//        }
-//
-//        List<String> translateShapelessRecipe(GeyserShapelessRecipe recipe) {
-//            ItemStack result = recipe.result();
-//            ItemData output = ItemTranslator.translateToBedrock(session, result);
-//            if (!output.isValid()) {
-//                // Likely modded item that Bedrock will complain about if it persists
-//                return null;
-//            }
-//
-//            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
-//            if (!(javaItem instanceof BedrockRequiresTagItem)) {
-//                // Strip NBT - tools won't appear in the recipe book otherwise
-//                output = output.toBuilder().tag(null).build();
-//            }
-//            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
-//            if (inputCombinations == null) {
-//                return null;
-//            }
-//
-//            List<String> bedrockRecipeIDs = new ArrayList<>();
-//            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
-//                UUID uuid = UUID.randomUUID();
-//                bedrockRecipeIDs.add(uuid.toString());
-//                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapelessRecipeData.shapeless(uuid.toString(),
-//                        Arrays.asList(inputs), Collections.singletonList(output), uuid, "crafting_table", 0, netId, RecipeUnlockingRequirement.INVALID));
-//                recipeMap.put(netId++, recipe);
-//            }
-//            return bedrockRecipeIDs;
-//        }
-//
-//        List<String> translateShapedRecipe(GeyserShapedRecipe recipe) {
-//            ItemStack result = recipe.result();
-//            ItemData output = ItemTranslator.translateToBedrock(session, result);
-//            if (!output.isValid()) {
-//                // Likely modded item that Bedrock will complain about if it persists
-//                return null;
-//            }
-//
-//            Item javaItem = Registries.JAVA_ITEMS.get(result.getId());
-//            if (!(javaItem instanceof BedrockRequiresTagItem)) {
-//                // Strip NBT - tools won't appear in the recipe book otherwise
-//                output = output.toBuilder().tag(null).build();
-//            }
-//            ItemDescriptorWithCount[][] inputCombinations = combinations(session, recipe.ingredients());
-//            if (inputCombinations == null) {
-//                return null;
-//            }
-//
-//            List<String> bedrockRecipeIDs = new ArrayList<>();
-//            for (ItemDescriptorWithCount[] inputs : inputCombinations) {
-//                UUID uuid = UUID.randomUUID();
-//                bedrockRecipeIDs.add(uuid.toString());
-//                packet.getCraftingData().add(org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData.shaped(uuid.toString(),
-//                        recipe.width(), recipe.height(), Arrays.asList(inputs),
-//                        Collections.singletonList(output), uuid, "crafting_table", 0, netId, false, RecipeUnlockingRequirement.INVALID));
-//                recipeMap.put(netId++, recipe);
-//            }
-//            return bedrockRecipeIDs;
-//        }
-//
-//        void addSpecialRecipesIdentifiers(Recipe recipe, List<String> identifiers) {
-//            String javaRecipeID = switch (recipe.getType()) {
-//                case CRAFTING_SPECIAL_SHULKERBOXCOLORING ->
-//                    // BDS (un)locks the dyeing with the shulker box recipe, Java never - we want BDS behavior for ease of use
-//                        "minecraft:shulker_box";
-//                case CRAFTING_SPECIAL_TIPPEDARROW ->
-//                    // similar as above
-//                        "minecraft:arrow";
-//                default -> recipe.getIdentifier().asString();
-//            };
-//
-//            addRecipeIdentifier(session, javaRecipeID, identifiers);
-//        }
-//
-//        void addRecipeIdentifier(GeyserSession session, String javaIdentifier, List<String> bedrockIdentifiers) {
-//            session.getJavaToBedrockRecipeIds().computeIfAbsent(javaIdentifier, k -> new ArrayList<>()).addAll(bedrockIdentifiers);
-//        }
-//
-//        int getAndIncrementNetId() {
-//            return this.netId++;
-//        }
-//    }
 }

From ee4047b52919080aa9407a76fe838475f33bc0dd Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 3 Nov 2024 13:17:59 -0500
Subject: [PATCH 059/165] Send end tick packet

---
 .../java/org/geysermc/geyser/session/GeyserSession.java     | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 2036f2941..ea0dc58de 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -1312,6 +1312,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
                     armAnimationTicks = -1;
                 }
             }
+
+            if (spawned) {
+                // Could move this to the PlayerAuthInput translator, in the event the player lags
+                // but this will work once we implement matching Java custom tick cycles
+                sendDownstreamGamePacket(ServerboundClientTickEndPacket.INSTANCE);
+            }
         } catch (Throwable throwable) {
             throwable.printStackTrace();
         }

From 1958c41e4dccb2fc79fe06fde444ba16269a2482 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 3 Nov 2024 13:23:28 -0500
Subject: [PATCH 060/165] Fixed dyed horse armor

---
 core/src/main/java/org/geysermc/geyser/item/Items.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index ba4b37ff5..302fdf99c 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -1237,7 +1237,7 @@ public final class Items {
     public static final Item IRON_HORSE_ARMOR = register(new Item("iron_horse_armor", builder().stackSize(1)));
     public static final Item GOLDEN_HORSE_ARMOR = register(new Item("golden_horse_armor", builder().stackSize(1)));
     public static final Item DIAMOND_HORSE_ARMOR = register(new Item("diamond_horse_armor", builder().stackSize(1)));
-    public static final Item LEATHER_HORSE_ARMOR = register(new Item("leather_horse_armor", builder().stackSize(1)));
+    public static final Item LEATHER_HORSE_ARMOR = register(new DyeableArmorItem("leather_horse_armor", ArmorMaterial.LEATHER, builder().stackSize(1)));
     public static final Item LEAD = register(new Item("lead", builder()));
     public static final Item NAME_TAG = register(new Item("name_tag", builder()));
     public static final Item COMMAND_BLOCK_MINECART = register(new Item("command_block_minecart", builder().stackSize(1)));

From 521b9f3dce39b6aaac47547dd81b47fb2bea8944 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 4 Nov 2024 00:42:01 -0500
Subject: [PATCH 061/165] Add tab completion to Geyser standalone

---
 .../standalone/GeyserStandaloneLogger.java         | 14 ++++++++++++++
 .../geysermc/geyser/command/CommandRegistry.java   |  6 ++++++
 2 files changed, 20 insertions(+)

diff --git a/bootstrap/standalone/src/main/java/org/geysermc/geyser/platform/standalone/GeyserStandaloneLogger.java b/bootstrap/standalone/src/main/java/org/geysermc/geyser/platform/standalone/GeyserStandaloneLogger.java
index 21e6a5e82..b614a7b23 100644
--- a/bootstrap/standalone/src/main/java/org/geysermc/geyser/platform/standalone/GeyserStandaloneLogger.java
+++ b/bootstrap/standalone/src/main/java/org/geysermc/geyser/platform/standalone/GeyserStandaloneLogger.java
@@ -33,10 +33,24 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.command.GeyserCommandSource;
 import org.geysermc.geyser.text.ChatColor;
+import org.jline.reader.Candidate;
+import org.jline.reader.LineReader;
+import org.jline.reader.LineReaderBuilder;
 
 @Slf4j
 public class GeyserStandaloneLogger extends SimpleTerminalConsole implements GeyserLogger, GeyserCommandSource {
 
+    @Override
+    protected LineReader buildReader(LineReaderBuilder builder) {
+        builder.completer((reader, line, candidates) -> {
+            var suggestions = GeyserImpl.getInstance().commandRegistry().suggestionsFor(this, line.line());
+            for (var suggestion : suggestions.list()) {
+                candidates.add(new Candidate(suggestion.suggestion()));
+            }
+        });
+        return super.buildReader(builder);
+    }
+
     @Override
     protected boolean isRunning() {
         return !GeyserImpl.getInstance().isShuttingDown();
diff --git a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
index 9de7582a5..5d44016c9 100644
--- a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
@@ -68,6 +68,8 @@ import org.incendo.cloud.parser.standard.EnumParser;
 import org.incendo.cloud.parser.standard.IntegerParser;
 import org.incendo.cloud.parser.standard.LiteralParser;
 import org.incendo.cloud.parser.standard.StringArrayParser;
+import org.incendo.cloud.suggestion.Suggestion;
+import org.incendo.cloud.suggestion.Suggestions;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -320,6 +322,10 @@ public class CommandRegistry implements EventRegistrar {
         cloud.commandExecutor().executeCommand(source, command);
     }
 
+    public Suggestions<GeyserCommandSource, ? extends Suggestion> suggestionsFor(GeyserCommandSource source, String input) {
+        return cloud.suggestionFactory().suggestImmediately(source, input);
+    }
+
     public void export(GeyserSession session, List<CommandData> bedrockCommands, Set<String> knownAliases) {
         cloud.commandTree().rootNodes().forEach(commandTree -> {
             var command = commandTree.command();

From cfaa219f192b017163ea0c44b683ca9edac215dd Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Mon, 4 Nov 2024 17:59:56 +0800
Subject: [PATCH 062/165] Remove unused method

---
 .../entity/type/player/SessionPlayerEntity.java      | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index ee56e25a7..bfa30fed4 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -34,7 +34,6 @@ import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.AttributeData;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
-import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
 import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
@@ -362,17 +361,6 @@ public class SessionPlayerEntity extends PlayerEntity {
         this.vehicleJumpStrength = MathUtils.constrain(vehicleJumpStrength, 0, 100);
     }
 
-    public void forceRotationUpdate() {
-        MoveEntityAbsolutePacket absolutePacket = new MoveEntityAbsolutePacket();
-        absolutePacket.setPosition(this.getPosition());
-        absolutePacket.setRotation(this.getBedrockRotation());
-        absolutePacket.setRuntimeEntityId(this.getGeyserId());
-        absolutePacket.setForceMove(true);
-        absolutePacket.setOnGround(this.isOnGround());
-
-        session.sendUpstreamPacket(absolutePacket);
-    }
-
     private boolean isBelowVoidFloor() {
         return position.getY() < voidFloorPosition();
     }

From 5162d4516d429025aeee539e8d97dd7807909a5b Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 4 Nov 2024 17:56:24 -0500
Subject: [PATCH 063/165] Cleanup and fixes

---
 .../org/geysermc/geyser/command/CommandRegistry.java | 12 +++++++++---
 .../geyser/inventory/recipe/GeyserRecipe.java        |  2 --
 .../geyser/inventory/recipe/GeyserShapedRecipe.java  |  3 +--
 .../inventory/recipe/GeyserShapelessRecipe.java      |  3 +--
 .../registry/populator/BlockRegistryPopulator.java   |  5 ++---
 .../player/BedrockPlayerAuthInputTranslator.java     | 10 ++++++----
 6 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
index 5d44016c9..838ab71b1 100644
--- a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java
@@ -346,7 +346,7 @@ public class CommandRegistry implements EventRegistrar {
 
                 List<CommandOverloadData> data = new ArrayList<>();
                 for (var node : commandTree.children()) {
-                    List<List<CommandParamData>> params = createParamData(node);
+                    List<List<CommandParamData>> params = createParamData(session, node);
                     params.forEach(param -> data.add(new CommandOverloadData(false, param.toArray(CommandParamData[]::new))));
                 }
 
@@ -358,7 +358,13 @@ public class CommandRegistry implements EventRegistrar {
         });
     }
 
-    private List<List<CommandParamData>> createParamData(CommandNode<GeyserCommandSource> node) {
+    private List<List<CommandParamData>> createParamData(GeyserSession session, CommandNode<GeyserCommandSource> node) {
+        var command = node.command();
+        if (command != null && !session.hasPermission(command.commandPermission().permissionString())) {
+            // Triggers with subcommands like Geyser dump, stop, etc.
+            return Collections.emptyList();
+        }
+
         CommandParamData data = new CommandParamData();
         var component = node.component();
         data.setName(component.name());
@@ -396,7 +402,7 @@ public class CommandRegistry implements EventRegistrar {
         // If a node has multiple children, this will need to be represented
         // by creating a new list/branch for each and cloning this node down each line.
         for (var child : children) {
-            collectiveData.addAll(createParamData(child));
+            collectiveData.addAll(createParamData(session, child));
         }
         collectiveData.forEach(list -> list.add(0, data));
         return collectiveData;
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
index b0f5a1b44..7d25c5803 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserRecipe.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.inventory.recipe;
 
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 /**
@@ -37,6 +36,5 @@ public interface GeyserRecipe {
      */
     boolean isShaped();
 
-    @Nullable
     SlotDisplay result();
 }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
index 70b71cf4d..7fc1d52aa 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapedRecipe.java
@@ -25,13 +25,12 @@
 
 package org.geysermc.geyser.inventory.recipe;
 
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapedCraftingRecipeDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 import java.util.List;
 
-public record GeyserShapedRecipe(int width, int height, List<SlotDisplay> ingredients, @Nullable SlotDisplay result) implements GeyserRecipe {
+public record GeyserShapedRecipe(int width, int height, List<SlotDisplay> ingredients, SlotDisplay result) implements GeyserRecipe {
 
     public GeyserShapedRecipe(ShapedCraftingRecipeDisplay data) {
         this(data.width(), data.height(), data.ingredients(), data.result());
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
index 90eeb01c9..ed513a804 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/recipe/GeyserShapelessRecipe.java
@@ -25,13 +25,12 @@
 
 package org.geysermc.geyser.inventory.recipe;
 
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.ShapelessCraftingRecipeDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 import java.util.List;
 
-public record GeyserShapelessRecipe(List<SlotDisplay> ingredients, @Nullable SlotDisplay result) implements GeyserRecipe {
+public record GeyserShapelessRecipe(List<SlotDisplay> ingredients, SlotDisplay result) implements GeyserRecipe {
 
     public GeyserShapelessRecipe(ShapelessCraftingRecipeDisplay data) {
         this(data.ingredients(), data.result());
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index b95da4f8f..5b7213bee 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -196,11 +196,10 @@ public final class BlockRegistryPopulator {
             GeyserBedrockBlock[] bedrockRuntimeMap = new GeyserBedrockBlock[blockStates.size()];
             for (int i = 0; i < blockStates.size(); i++) {
                 NbtMap tag = blockStates.get(i);
-                if (blockStateOrderedMap.containsKey(tag)) {
+                GeyserBedrockBlock block = new GeyserBedrockBlock(i, tag);
+                if (blockStateOrderedMap.put(tag, block) != null) {
                     throw new AssertionError("Duplicate block states in Bedrock palette: " + tag);
                 }
-                GeyserBedrockBlock block = new GeyserBedrockBlock(i, tag);
-                blockStateOrderedMap.put(tag, block);
                 bedrockRuntimeMap[i] = block;
             }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
index a07ebe04a..3c9b41488 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
@@ -229,12 +229,12 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
             return;
         }
         if (vehicle instanceof ClientVehicle) {
-            session.getPlayerEntity().setVehicleInput(packet.getAnalogMoveVector());
+            session.getPlayerEntity().setVehicleInput(packet.getMotion());
         }
 
         boolean sendMovement = false;
         if (vehicle instanceof AbstractHorseEntity && !(vehicle instanceof LlamaEntity)) {
-            sendMovement = true;
+            sendMovement = !(vehicle instanceof ClientVehicle);
         } else if (vehicle instanceof BoatEntity) {
             if (vehicle.getPassengers().size() == 1) {
                 // The player is the only rider
@@ -261,16 +261,18 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
             if (wasJumping && !holdingJump) {
                 // Jump released
                 // Yes, I'm fairly certain that entity ID is correct.
+                int finalVehicleJumpStrength = GenericMath.floor(session.getInputCache().getJumpScale() * 100f);
                 session.sendDownstreamGamePacket(new ServerboundPlayerCommandPacket(session.getPlayerEntity().getEntityId(),
-                    PlayerState.START_HORSE_JUMP, GenericMath.floor(session.getInputCache().getJumpScale() * 100f)));
+                    PlayerState.START_HORSE_JUMP, finalVehicleJumpStrength));
                 session.getInputCache().setJumpingTicks(-10);
+                session.getPlayerEntity().setVehicleJumpStrength(finalVehicleJumpStrength);
             } else if (!wasJumping && holdingJump) {
                 session.getInputCache().setJumpingTicks(0);
                 session.getInputCache().setJumpScale(0);
             } else if (holdingJump) {
                 session.getInputCache().setJumpingTicks(++currentJumpingTicks);
                 if (currentJumpingTicks < 10) {
-                    session.getInputCache().setJumpScale(session.getInputCache().getJumpScale() * 0.1F);
+                    session.getInputCache().setJumpScale(session.getInputCache().getJumpingTicks() * 0.1F);
                 } else {
                     session.getInputCache().setJumpScale(0.8f + 2.0f / (currentJumpingTicks - 9) * 0.1f);
                 }

From f5d9db4ff692ca10675a70a93a117b0099e6fe66 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 4 Nov 2024 21:13:14 -0500
Subject: [PATCH 064/165] Some final touches

---
 .../entity/type/player/SessionPlayerEntity.java  |  2 +-
 .../geyser/network/UpstreamPacketHandler.java    |  8 +++++---
 .../registry/populator/TagRegistryPopulator.java |  4 ++--
 .../geysermc/geyser/session/GeyserSession.java   |  5 +++++
 .../player/{ => input}/BedrockBlockActions.java  |  4 ++--
 .../BedrockMovePlayer.java}                      | 10 ++++++----
 .../BedrockPlayerAuthInputTranslator.java        |  7 +++++--
 .../java/JavaFinishConfigurationTranslator.java  | 16 +++++++++-------
 .../org/geysermc/geyser/util/InventoryUtils.java |  6 +++++-
 9 files changed, 40 insertions(+), 22 deletions(-)
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/{ => input}/BedrockBlockActions.java (99%)
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/{BedrockMovePlayerTranslator.java => input/BedrockMovePlayer.java} (98%)
 rename core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/{ => input}/BedrockPlayerAuthInputTranslator.java (98%)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index bfa30fed4..9d5bc011c 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -168,7 +168,7 @@ public class SessionPlayerEntity extends PlayerEntity {
 
     /**
      * Set the player's position without applying an offset or moving the bounding box
-     * This is used in BedrockMovePlayerTranslator which receives the player's position
+     * This is used in BedrockMovePlayer which receives the player's position
      * with the offset pre-applied
      *
      * @param position the new position of the Bedrock player
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index 19e56c8a8..1ac38aa35 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -26,6 +26,7 @@
 package org.geysermc.geyser.network;
 
 import io.netty.buffer.Unpooled;
+import org.cloudburstmc.math.vector.Vector2f;
 import org.cloudburstmc.protocol.bedrock.BedrockDisconnectReasons;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
 import org.cloudburstmc.protocol.bedrock.codec.compat.BedrockCompat;
@@ -38,9 +39,9 @@ import org.cloudburstmc.protocol.bedrock.netty.codec.compression.ZlibCompression
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LoginPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ModalFormResponsePacket;
-import org.cloudburstmc.protocol.bedrock.packet.MovePlayerPacket;
 import org.cloudburstmc.protocol.bedrock.packet.NetworkSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
+import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.cloudburstmc.protocol.bedrock.packet.RequestNetworkSettingsPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkRequestPacket;
@@ -290,8 +291,9 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     }
 
     @Override
-    public PacketSignal handle(MovePlayerPacket packet) { // TODO
-        if (session.isLoggingIn()) {
+    public PacketSignal handle(PlayerAuthInputPacket packet) {
+        // This doesn't catch rotation, but for a niche case I don't exactly want to cache rotation...
+        if (session.isLoggingIn() && !packet.getMotion().equals(Vector2f.ZERO)) {
             SetTitlePacket titlePacket = new SetTitlePacket();
             titlePacket.setType(SetTitlePacket.Type.ACTIONBAR);
             titlePacket.setText(GeyserLocale.getPlayerLocaleString("geyser.auth.login.wait", session.locale()));
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
index 4e249d483..bee207a00 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
@@ -31,7 +31,6 @@ import com.google.gson.reflect.TypeToken;
 import it.unimi.dsi.fastutil.Hash;
 import it.unimi.dsi.fastutil.ints.IntArrayList;
 import it.unimi.dsi.fastutil.ints.IntList;
-import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
 import it.unimi.dsi.fastutil.objects.ObjectIntPair;
 import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
@@ -90,7 +89,7 @@ public final class TagRegistryPopulator {
                 throw new AssertionError("Unable to load Bedrock runtime item IDs", e);
             }
 
-            Object2ObjectMap<int[], String> javaItemsToBedrockTag = new Object2ObjectOpenCustomHashMap<>(hashStrategy);
+            var javaItemsToBedrockTag = new Object2ObjectOpenCustomHashMap<int[], String>(hashStrategy);
 
             for (var entry : bedrockTags.entrySet()) {
                 List<String> value = entry.getValue();
@@ -129,6 +128,7 @@ public final class TagRegistryPopulator {
                 javaItemsToBedrockTag.put(javaNetworkIdArray, entry.getKey());
             }
 
+            javaItemsToBedrockTag.trim();
             Registries.TAGS.register(palette.rightInt(), javaItemsToBedrockTag);
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index ea0dc58de..ef6261ead 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -1077,6 +1077,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
                 // Download and load the language for the player
                 MinecraftLocale.downloadAndLoadLocale(locale);
+
+//                if (sentSpawnPacket && !GameProtocol.isPre1_21_2(GeyserSession.this)) {
+//                    // Possible form to close.
+//                    upstream.sendPacket(new ClientboundCloseFormPacket());
+//                }
             }
 
             @Override
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
similarity index 99%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
index f1b91a0a5..061a04b77 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockBlockActions.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
+ * Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@
  * @link https://github.com/GeyserMC/Geyser
  */
 
-package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
+package org.geysermc.geyser.translator.protocol.bedrock.entity.player.input;
 
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.math.vector.Vector3i;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
similarity index 98%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
index 1940258e4..6220b6623 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockMovePlayerTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
+ * Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -23,7 +23,7 @@
  * @link https://github.com/GeyserMC/Geyser
  */
 
-package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
+package org.geysermc.geyser.translator.protocol.bedrock.entity.player.input;
 
 import org.cloudburstmc.math.vector.Vector3d;
 import org.cloudburstmc.math.vector.Vector3f;
@@ -40,8 +40,10 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.Serv
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerRotPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerStatusOnlyPacket;
 
-
-public final class BedrockMovePlayerTranslator {
+/**
+ * Holds processing input coming in from the {@link PlayerAuthInputPacket} packet.
+ */
+final class BedrockMovePlayer {
 
     static void translate(GeyserSession session, PlayerAuthInputPacket packet) {
         SessionPlayerEntity entity = session.getPlayerEntity();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
similarity index 98%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
rename to core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
index 3c9b41488..02ea02232 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
@@ -23,7 +23,7 @@
  * @link https://github.com/GeyserMC/Geyser
  */
 
-package org.geysermc.geyser.translator.protocol.bedrock.entity.player;
+package org.geysermc.geyser.translator.protocol.bedrock.entity.player.input;
 
 import org.cloudburstmc.math.GenericMath;
 import org.cloudburstmc.math.vector.Vector2f;
@@ -74,7 +74,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
         boolean wasJumping = session.getInputCache().wasJumping();
         session.getInputCache().processInputs(packet);
 
-        BedrockMovePlayerTranslator.translate(session, packet);
+        BedrockMovePlayer.translate(session, packet);
 
         processVehicleInput(session, packet, wasJumping);
 
@@ -220,6 +220,9 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
             session.sendDownstreamGamePacket(breakPacket);
         } else {
             session.getGeyser().getLogger().error("Unhandled item use transaction type!");
+            if (session.getGeyser().getLogger().isDebug()) {
+                session.getGeyser().getLogger().debug(transaction);
+            }
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
index f8bfb86c0..91fe6c9c5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaFinishConfigurationTranslator.java
@@ -70,14 +70,16 @@ public class JavaFinishConfigurationTranslator extends PacketTranslator<Clientbo
         craftingDataPacket.setCleanRecipes(true);
         craftingDataPacket.getCraftingData().addAll(CARTOGRAPHY_RECIPES);
         craftingDataPacket.getPotionMixData().addAll(Registries.POTION_MIXES.forVersion(session.getUpstream().getProtocolVersion()));
-        // TODO proper fix to check if we've been online - in online mode (with auth screen),
-        //  recipes are not yet known
-        if (session.isSentSpawnPacket() && session.getStonecutterRecipes() != null) {
+        if (session.isSentSpawnPacket()) {
             session.getUpstream().sendPacket(craftingDataPacket);
-            session.getCraftingRecipes().clear();
-            session.getJavaToBedrockRecipeIds().clear();
-            session.getSmithingRecipes().clear();
-            session.getStonecutterRecipes().clear();
+            // TODO proper fix to check if we've been online - in online mode (with auth screen),
+            //  recipes are not yet known
+            if (session.getStonecutterRecipes() != null) {
+                session.getCraftingRecipes().clear();
+                session.getJavaToBedrockRecipeIds().clear();
+                session.getSmithingRecipes().clear();
+                session.getStonecutterRecipes().clear();
+            }
         } else {
             session.getUpstream().queuePostStartGamePacket(craftingDataPacket);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index be357cebd..9862eb730 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -515,7 +515,11 @@ public class InventoryUtils {
                     List<SlotDisplay> mirroredIngredients = new ArrayList<>(ingredients.size());
                     for (int row = 0; row < height; row++) {
                         for (int col = 0; col < width; col++) {
-                            mirroredIngredients.add(ingredients.get((width - 1 - col) + (row * width)));
+                            int index = col + (row * width);
+                            while (mirroredIngredients.size() <= index) {
+                                mirroredIngredients.add(null);
+                            }
+                            mirroredIngredients.set(index, ingredients.get((width - 1 - col) + (row * width)));
                         }
                     }
 

From 6e8a955ee0386595248c83bd1e81f78e5e277847 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 4 Nov 2024 21:26:17 -0500
Subject: [PATCH 065/165] Dust particle color verified working

---
 .../protocol/java/level/JavaLevelParticlesTranslator.java   | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java
index 3c73b1886..336fedc65 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelParticlesTranslator.java
@@ -132,11 +132,7 @@ public class JavaLevelParticlesTranslator extends PacketTranslator<ClientboundLe
             }
             case DUST, DUST_COLOR_TRANSITION -> { //TODO
                 DustParticleData data = (DustParticleData) particle.getData();
-//                int r = (int) (data.getRed() * 255);
-//                int g = (int) (data.getGreen() * 255);
-//                int b = (int) (data.getBlue() * 255);
-//                int rgbData = ((0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff);
-                int rgbData = data.getColor(); // TEST
+                int rgbData = data.getColor();
                 return (position) -> {
                     LevelEventPacket packet = new LevelEventPacket();
                     packet.setType(ParticleType.FALLING_DUST);

From 881b8e9b905e99145d6be28f9b0144fbc18aa82a Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Wed, 6 Nov 2024 18:37:31 -0500
Subject: [PATCH 066/165] Better multi-item recipe support for 1.21.1

---
 .../java/JavaRecipeBookAddTranslator.java     | 77 ++++++++++++++++---
 1 file changed, 66 insertions(+), 11 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 05be7db3d..71fd4a200 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -30,6 +30,7 @@ import it.unimi.dsi.fastutil.Pair;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.RecipeUnlockingRequirement;
 import org.cloudburstmc.protocol.bedrock.data.inventory.crafting.recipe.ShapedRecipeData;
@@ -72,6 +73,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.WithRem
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRecipeBookAddPacket;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
@@ -202,11 +204,39 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
             if (composite.contents().size() == 1) {
                 return translateToInput(session, composite.contents().get(0));
             }
-            return composite.contents().stream()
-                .map(subDisplay -> translateToInput(session, subDisplay))
-                .filter(Objects::nonNull)
-                .flatMap(List::stream)
-                .toList();
+
+            // Try and see if the contents match a tag.
+            // ViaVersion maps pre-1.21.2 ingredient lists to CompositeSlotDisplays.
+            int[] items = new int[composite.contents().size()];
+            List<SlotDisplay> contents = composite.contents();
+            for (int i = 0; i < contents.size(); i++) {
+                SlotDisplay subDisplay = contents.get(i);
+                int id;
+                if (subDisplay instanceof ItemSlotDisplay item) {
+                    id = item.item();
+                } else if (!(subDisplay instanceof ItemStackSlotDisplay itemStackSlotDisplay)) {
+                    id = -1;
+                } else if (itemStackSlotDisplay.itemStack().getAmount() == 1
+                    && itemStackSlotDisplay.itemStack().getDataComponents() == null) {
+                    id = itemStackSlotDisplay.itemStack().getId();
+                } else {
+                    id = -1;
+                }
+                if (id == -1) {
+                    // We couldn't guarantee a "normal" item from this stack.
+                    return fallbackCompositeMapping(session, composite);
+                }
+                items[i] = id;
+            }
+            // For searching in the tag map.
+            Arrays.sort(items);
+
+            List<ItemDescriptorWithCount> tagDescriptor = lookupBedrockTag(session, items);
+            if (tagDescriptor != null) {
+                return tagDescriptor;
+            }
+
+            return fallbackCompositeMapping(session, composite);
         }
         if (slotDisplay instanceof WithRemainderSlotDisplay remainder) {
             // Don't need to worry about what will stay in the crafting table after crafting for the purposes of sending recipes to Bedrock
@@ -230,12 +260,9 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 // Cache is implemented as, presumably, an item tag will be used multiple times in succession
                 // (E.G. a chest with planks tags)
                 return TAG_TO_ITEM_DESCRIPTOR_CACHE.get().computeIfAbsent(items, key -> {
-                    var bedrockTags = Registries.TAGS.forVersion(session.getUpstream().getProtocolVersion());
-                    String bedrockTag = bedrockTags.get(key);
-                    if (bedrockTag != null) {
-                        return Collections.singletonList(
-                            new ItemDescriptorWithCount(new ItemTagDescriptor(bedrockTag), 1)
-                        );
+                    List<ItemDescriptorWithCount> tagDescriptor = lookupBedrockTag(session, key);
+                    if (tagDescriptor != null) {
+                        return tagDescriptor;
                     }
 
                     // In the future, we can probably search through and use subsets of tags as well.
@@ -278,6 +305,33 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
         return new ItemDescriptorWithCount(new DefaultDescriptor(mapping.getBedrockDefinition(), mapping.getBedrockData()), 1); // Need to check count
     }
 
+    /**
+     * Checks to see if this list of items matches with one of this Bedrock version's tags.
+     */
+    @Nullable
+    private List<ItemDescriptorWithCount> lookupBedrockTag(GeyserSession session, int[] items) {
+        var bedrockTags = Registries.TAGS.forVersion(session.getUpstream().getProtocolVersion());
+        String bedrockTag = bedrockTags.get(items);
+        if (bedrockTag != null) {
+            return Collections.singletonList(
+                new ItemDescriptorWithCount(new ItemTagDescriptor(bedrockTag), 1)
+            );
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Converts CompositeSlotDisplay contents to a list of basic ItemDescriptorWithCounts.
+     */
+    private List<ItemDescriptorWithCount> fallbackCompositeMapping(GeyserSession session, CompositeSlotDisplay composite) {
+        return composite.contents().stream()
+            .map(subDisplay -> translateToInput(session, subDisplay))
+            .filter(Objects::nonNull)
+            .flatMap(List::stream)
+            .toList();
+    }
+
     private Pair<List<List<ItemDescriptorWithCount>>, ItemData> combinations(GeyserSession session, RecipeDisplay display, List<SlotDisplay> ingredients) {
         Pair<Item, ItemData> pair = translateToOutput(session, display.result());
         if (pair == null || !pair.right().isValid()) {
@@ -327,6 +381,7 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 return Pair.of(Lists.cartesianProduct(inputs), output);
             }
         }
+        // TODO:
         return Pair.of(
             Collections.singletonList(inputs.stream().map(descriptors -> descriptors.get(0)).toList()),
             output

From 2bc3773cb0e70dcae0c2537d0767e05914f81c17 Mon Sep 17 00:00:00 2001
From: Matthias Ahouansou <matthias@ahouansou.cz>
Date: Thu, 7 Nov 2024 17:23:23 +0000
Subject: [PATCH 067/165] Set Minecraft & protocol version in Velocity ping
 (#5130)

this fixes issues caused by plugins which use the version in the ping
---
 .../platform/velocity/GeyserVelocityPingPassthrough.java    | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/bootstrap/velocity/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPingPassthrough.java b/bootstrap/velocity/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPingPassthrough.java
index b2258d3a3..f20076597 100644
--- a/bootstrap/velocity/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPingPassthrough.java
+++ b/bootstrap/velocity/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPingPassthrough.java
@@ -31,8 +31,10 @@ import com.velocitypowered.api.network.ProtocolVersion;
 import com.velocitypowered.api.proxy.InboundConnection;
 import com.velocitypowered.api.proxy.ProxyServer;
 import com.velocitypowered.api.proxy.server.ServerPing;
+import com.velocitypowered.api.proxy.server.ServerPing.Version;
 import lombok.AllArgsConstructor;
 import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.ping.GeyserPingInfo;
 import org.geysermc.geyser.ping.IGeyserPingPassthrough;
 
@@ -51,7 +53,9 @@ public class GeyserVelocityPingPassthrough implements IGeyserPingPassthrough {
         try {
             event = server.getEventManager().fire(new ProxyPingEvent(new GeyserInboundConnection(inetSocketAddress), ServerPing.builder()
                     .description(server.getConfiguration().getMotd()).onlinePlayers(server.getPlayerCount())
-                    .maximumPlayers(server.getConfiguration().getShowMaxPlayers()).build())).get();
+                    .maximumPlayers(server.getConfiguration().getShowMaxPlayers())
+                    .version(new Version(GameProtocol.getJavaProtocolVersion(), GameProtocol.getJavaMinecraftVersion())) 
+                    .build())).get();
         } catch (ExecutionException | InterruptedException e) {
             throw new RuntimeException(e);
         }

From aebf9d399b1fe60d7254d7d94e6746b5e37adb94 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 7 Nov 2024 12:43:37 -0500
Subject: [PATCH 068/165] Fix TagRegistryPopulator on older Gson versions

Fixes #5132
---
 .../geyser/registry/populator/TagRegistryPopulator.java        | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
index bee207a00..24cc270c9 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
@@ -47,6 +47,7 @@ import org.geysermc.geyser.registry.type.ItemMappings;
 
 import java.io.InputStream;
 import java.io.InputStreamReader;
+import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -75,7 +76,7 @@ public final class TagRegistryPopulator {
             ObjectIntPair.of("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()),
             ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion())
         );
-        TypeToken<Map<String, List<String>>> type = new TypeToken<>() {};
+        Type type = new TypeToken<Map<String, List<String>>>() {}.getType();
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 

From 1b4d257e3571ef321e0778e33e6d98727012d0ac Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Thu, 7 Nov 2024 16:09:31 -0500
Subject: [PATCH 069/165] Better onGround check

Thanks to @AJ-Ferguson for the suggestion.

Includes hacks to still maintain pre-1.21.30, but that will likely lose support very soon, anyway.
---
 .../level/physics/CollisionManager.java       | 13 ++++++-----
 .../geysermc/geyser/network/GameProtocol.java |  4 ++++
 .../player/input/BedrockMovePlayer.java       | 22 ++++++++++++++-----
 3 files changed, 27 insertions(+), 12 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
index c5f986499..69f88e2a1 100644
--- a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
@@ -154,10 +154,11 @@ public class CollisionManager {
      * the two versions. Will also send corrected movement packets back to Bedrock if they collide with pistons.
      *
      * @param bedrockPosition the current Bedrock position of the client
+     * @param onGround whether the Bedrock player is on the ground
      * @param teleported whether the Bedrock player has teleported to a new position. If true, movement correction is skipped.
      * @return the position to send to the Java server, or null to cancel sending the packet
      */
-    public @Nullable CollisionResult adjustBedrockPosition(Vector3f bedrockPosition, boolean teleported) {
+    public @Nullable CollisionResult adjustBedrockPosition(Vector3f bedrockPosition, boolean onGround, boolean teleported) {
         PistonCache pistonCache = session.getPistonCache();
         // Bedrock clients tend to fall off of honey blocks, so we need to teleport them to the new position
         if (pistonCache.isPlayerAttachedToHoney()) {
@@ -198,9 +199,9 @@ public class CollisionManager {
 
         position = playerBoundingBox.getBottomCenter();
 
-        boolean onGround = (adjustedMovement.getY() != movement.getY() && movement.getY() < 0) || isOnGround();
+        boolean newOnGround = adjustedMovement.getY() != movement.getY() && movement.getY() < 0 || onGround;
         // Send corrected position to Bedrock if they differ by too much to prevent de-syncs
-        if (movement.distanceSquared(adjustedMovement) > INCORRECT_MOVEMENT_THRESHOLD) {
+        if (onGround != newOnGround || movement.distanceSquared(adjustedMovement) > INCORRECT_MOVEMENT_THRESHOLD) {
             PlayerEntity playerEntity = session.getPlayerEntity();
             // Client will dismount if on a vehicle
             if (playerEntity.getVehicle() == null && pistonCache.getPlayerMotion().equals(Vector3f.ZERO) && !pistonCache.isPlayerSlimeCollision()) {
@@ -208,7 +209,7 @@ public class CollisionManager {
             }
         }
 
-        if (!onGround) {
+        if (!newOnGround) {
             // Trim the position to prevent rounding errors that make Java think we are clipping into a block
             position = Vector3d.from(position.getX(), Double.parseDouble(DECIMAL_FORMAT.format(position.getY())), position.getZ());
         }
@@ -415,8 +416,8 @@ public class CollisionManager {
         return BlockUtils.getCollision(blockId);
     }
 
-    private boolean isOnGround() {
-        // Someone smarter than me at collisions plz check this.
+    public boolean isOnGround() {
+        // Temporary until pre-1.21.30 support is dropped.
         Vector3d bottomCenter = playerBoundingBox.getBottomCenter();
         Vector3i groundPos = Vector3i.from(bottomCenter.getX(), bottomCenter.getY() - 1, bottomCenter.getZ());
         BlockCollision collision = BlockUtils.getCollisionAt(session, groundPos);
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index 873fa413a..463cc54fd 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -111,6 +111,10 @@ public final class GameProtocol {
         return session.getUpstream().getProtocolVersion() < Bedrock_v686.CODEC.getProtocolVersion();
     }
 
+    public static boolean isPre1_21_30(GeyserSession session) {
+        return session.getUpstream().getProtocolVersion() < Bedrock_v729.CODEC.getProtocolVersion();
+    }
+
     public static boolean isPre1_21_40(GeyserSession session) {
         return session.getUpstream().getProtocolVersion() < Bedrock_v748.CODEC.getProtocolVersion();
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
index 6220b6623..6abb3899a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock.entity.player.input;
 
+import net.kyori.adventure.util.TriState;
 import org.cloudburstmc.math.vector.Vector3d;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
@@ -32,6 +33,7 @@ import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.level.physics.CollisionResult;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.mcprotocollib.network.packet.Packet;
@@ -86,6 +88,14 @@ final class BedrockMovePlayer {
             session.setLookBackScheduledFuture(null);
         }
 
+        TriState maybeOnGround;
+        if (GameProtocol.isPre1_21_30(session)) {
+            // VERTICAL_COLLISION input data does not exist.
+            maybeOnGround = TriState.NOT_SET;
+        } else {
+            // Client is telling us it wants to move down, but something is blocking it from doing so.
+            maybeOnGround = TriState.byBoolean(packet.getInputData().contains(PlayerAuthInputData.VERTICAL_COLLISION) && packet.getDelta().getY() < 0);
+        }
         // This takes into account no movement sent from the client, but the player is trying to move anyway.
         // (Press into a wall in a corner - you're trying to move but nothing actually happens)
         boolean horizontalCollision = packet.getInputData().contains(PlayerAuthInputData.HORIZONTAL_COLLISION);
@@ -94,7 +104,7 @@ final class BedrockMovePlayer {
         // This isn't needed, but it makes the packets closer to vanilla
         // It also means you can't "lag back" while only looking, in theory
         if (!positionChanged && rotationChanged) {
-            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(entity.isOnGround(), horizontalCollision, yaw, pitch);
+            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(maybeOnGround.toBooleanOrElse(entity.isOnGround()), horizontalCollision, yaw, pitch);
 
             entity.setYaw(yaw);
             entity.setPitch(pitch);
@@ -103,10 +113,10 @@ final class BedrockMovePlayer {
             session.sendDownstreamGamePacket(playerRotationPacket);
         } else if (positionChanged) {
             if (isValidMove(session, entity.getPosition(), packet.getPosition())) {
-                CollisionResult result = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), packet.getInputData().contains(PlayerAuthInputData.HANDLE_TELEPORT));
+                CollisionResult result = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), maybeOnGround.toBooleanOrElse(false), packet.getInputData().contains(PlayerAuthInputData.HANDLE_TELEPORT));
                 if (result != null) { // A null return value cancels the packet
                     Vector3d position = result.correctedMovement();
-                    boolean onGround = result.onGround().toBooleanOrElse(entity.isOnGround());
+                    boolean onGround = maybeOnGround.toBooleanOrElseGet(() -> session.getCollisionManager().isOnGround());
                     boolean isBelowVoid = entity.isVoidPositionDesynched();
 
                     boolean teleportThroughVoidFloor, mustResyncPosition;
@@ -155,7 +165,6 @@ final class BedrockMovePlayer {
                     }
 
                     entity.setPositionManual(packet.getPosition());
-                    entity.setOnGround(onGround);
 
                     // Send final movement changes
                     session.sendDownstreamGamePacket(movePacket);
@@ -174,11 +183,12 @@ final class BedrockMovePlayer {
                 session.getGeyser().getLogger().debug("Recalculating position...");
                 session.getCollisionManager().recalculatePosition();
             }
-        } else if (horizontalCollision != session.getInputCache().lastHorizontalCollision()) {
-            session.sendDownstreamGamePacket(new ServerboundMovePlayerStatusOnlyPacket(entity.isOnGround(), horizontalCollision));
+        } else if (horizontalCollision != session.getInputCache().lastHorizontalCollision() || maybeOnGround.toBooleanOrElse(entity.isOnGround()) != entity.isOnGround()) {
+            session.sendDownstreamGamePacket(new ServerboundMovePlayerStatusOnlyPacket(maybeOnGround.toBooleanOrElse(false), horizontalCollision));
         }
 
         session.getInputCache().setLastHorizontalCollision(horizontalCollision);
+        entity.setOnGround(maybeOnGround.toBooleanOrElse(entity.isOnGround()));
 
         // Move parrots to match if applicable
         if (entity.getLeftParrot() != null) {

From 4598ffec0515c5f992cf8daf1e66e56000ed2d1b Mon Sep 17 00:00:00 2001
From: AJ Ferguson <AJ-Ferguson@users.noreply.github.com>
Date: Thu, 7 Nov 2024 20:35:41 -0500
Subject: [PATCH 070/165] Update MCPL and adapters (#5135)

* Update MCPL

* Update adapters
---
 gradle/libs.versions.toml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b8908f518..f95574ee1 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241022.154658-14"
 protocol-codec = "3.0.0.Beta5-20241022.154658-14"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.2-20241103.011758-1"
+mcprotocollib = "1.21.2-20241107.110329-3"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"
@@ -25,7 +25,7 @@ jline = "3.21.0"
 terminalconsoleappender = "1.2.0"
 folia = "1.19.4-R0.1-SNAPSHOT"
 viaversion = "4.9.2"
-adapters = "1.14-SNAPSHOT"
+adapters = "1.15-SNAPSHOT"
 cloud = "2.0.0-rc.2"
 cloud-minecraft = "2.0.0-beta.9"
 cloud-minecraft-modded = "2.0.0-beta.7"

From e645935533e87f0318c9acc392dc817f84d44803 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=92=9F=E8=92=BB?=
 <41978811+patyhank@users.noreply.github.com>
Date: Tue, 12 Nov 2024 02:44:22 +0800
Subject: [PATCH 071/165] Fix #5070 light block placement  (#5104)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: è’Ÿè’» <mlpmmy@gmail.com>
---
 .../java/org/geysermc/geyser/item/Items.java  |  3 +-
 .../geysermc/geyser/item/type/LightItem.java  | 79 +++++++++++++++++++
 .../populator/ItemRegistryPopulator.java      | 22 ++++++
 .../geyser/registry/type/ItemMappings.java    |  6 ++
 4 files changed, 109 insertions(+), 1 deletion(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/item/type/LightItem.java

diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index 302fdf99c..f123583f3 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -45,6 +45,7 @@ import org.geysermc.geyser.item.type.FireworkStarItem;
 import org.geysermc.geyser.item.type.FishingRodItem;
 import org.geysermc.geyser.item.type.GoatHornItem;
 import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.item.type.LightItem;
 import org.geysermc.geyser.item.type.MaceItem;
 import org.geysermc.geyser.item.type.MapItem;
 import org.geysermc.geyser.item.type.PlayerHeadItem;
@@ -526,7 +527,7 @@ public final class Items {
     public static final Item RED_TERRACOTTA = register(new BlockItem(builder(), Blocks.RED_TERRACOTTA));
     public static final Item BLACK_TERRACOTTA = register(new BlockItem(builder(), Blocks.BLACK_TERRACOTTA));
     public static final Item BARRIER = register(new BlockItem(builder(), Blocks.BARRIER));
-    public static final Item LIGHT = register(new BlockItem(builder(), Blocks.LIGHT));
+    public static final Item LIGHT = register(new LightItem(builder(), Blocks.LIGHT));
     public static final Item HAY_BLOCK = register(new BlockItem(builder(), Blocks.HAY_BLOCK));
     public static final Item WHITE_CARPET = register(new BlockItem(builder(), Blocks.WHITE_CARPET));
     public static final Item ORANGE_CARPET = register(new BlockItem(builder(), Blocks.ORANGE_CARPET));
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java b/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
new file mode 100644
index 000000000..fa10b08b1
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.item.type;
+
+import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.geysermc.geyser.level.block.property.Properties;
+import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.registry.type.ItemMapping;
+import org.geysermc.geyser.registry.type.ItemMappings;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.BlockStateProperties;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
+
+public class LightItem extends BlockItem {
+
+    public LightItem(Builder builder, Block block, Block... otherBlocks) {
+        super(builder, block, otherBlocks);
+    }
+
+    @Override
+    public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings)  {
+        ItemMapping lightLevelMapping = getLightLevelMapping(components, mappings);
+        if (lightLevelMapping != null) {
+            return super.translateToBedrock(session, count, components, lightLevelMapping, mappings);
+        }
+        return super.translateToBedrock(session, count, components, mapping, mappings);
+    }
+
+    @Override
+    public ItemMapping toBedrockDefinition(DataComponents components, ItemMappings mappings) {
+        ItemMapping lightLevelMapping = getLightLevelMapping(components, mappings);
+        if (lightLevelMapping != null) {
+            return lightLevelMapping;
+        }
+        return super.toBedrockDefinition(components, mappings);
+    }
+
+
+    private static ItemMapping getLightLevelMapping(DataComponents components, ItemMappings mappings) {
+        String lightLevel = "15";
+        if (components != null) {
+            BlockStateProperties blockStateProperties = components.get(DataComponentType.BLOCK_STATE);
+
+            if (blockStateProperties != null) {
+                lightLevel = blockStateProperties.getProperties().get(Properties.LEVEL.name());
+            }
+        }
+        ItemDefinition definition = mappings.getDefinition("minecraft:light_block_" + lightLevel);
+        if (definition != null) {
+            return mappings.getLightBlocks().get(definition.getRuntimeId());
+        }
+        return null;
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 18a34f088..1da3b0e66 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -70,6 +70,7 @@ import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.BlockMappings;
@@ -508,6 +509,26 @@ public class ItemRegistryPopulator {
                 javaItemToMapping.put(javaItem, mapping);
             }
 
+            // Add the light block level since it doesn't exist on java but we need it for item conversion
+            Int2ObjectMap<ItemMapping> lightBlocks = new Int2ObjectOpenHashMap<>();
+
+            for (int i = 0; i <= Properties.LEVEL.high(); i++) {
+                ItemDefinition lightBlock = definitions.get("minecraft:light_block_" + i);
+                if (lightBlock == null) {
+                    break;
+                }
+
+                ItemMapping lightBlockEntry = ItemMapping.builder()
+                    .javaItem(Items.LIGHT)
+                    .bedrockIdentifier("minecraft:light_block_" + i)
+                    .bedrockDefinition(lightBlock)
+                    .bedrockData(0)
+                    .bedrockBlockDefinition(null)
+                    .customItemOptions(Collections.emptyList())
+                    .build();
+                lightBlocks.put(lightBlock.getRuntimeId(), lightBlockEntry);
+            }
+
             ItemDefinition lodestoneCompass = definitions.get("minecraft:lodestone_compass");
             if (lodestoneCompass == null) {
                 throw new RuntimeException("Lodestone compass not found in item palette!");
@@ -641,6 +662,7 @@ public class ItemRegistryPopulator {
                     .javaOnlyItems(javaOnlyItems)
                     .buckets(buckets)
                     .componentItemData(componentItemData)
+                    .lightBlocks(lightBlocks)
                     .lodestoneCompass(lodestoneEntry)
                     .customIdMappings(customIdMappings)
                     .customBlockItemDefinitions(customBlockItemDefinitions)
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java b/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java
index 189474238..8aae05fdc 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java
@@ -59,6 +59,7 @@ public class ItemMappings implements DefinitionRegistry<ItemDefinition> {
      * A unique exception as this is an item in Bedrock, but not in Java.
      */
     ItemMapping lodestoneCompass;
+    Int2ObjectMap<ItemMapping> lightBlocks;
 
     ItemData[] creativeItems;
     Int2ObjectMap<ItemDefinition> itemDefinitions;
@@ -136,6 +137,11 @@ public class ItemMappings implements DefinitionRegistry<ItemDefinition> {
             return lodestoneCompass;
         }
 
+        ItemMapping lightBlock = lightBlocks.get(definition.getRuntimeId());
+        if (lightBlock != null) {
+            return lightBlock;
+        }
+
         boolean isBlock = data.getBlockDefinition() != null;
         boolean hasDamage = data.getDamage() != 0;
 

From fd58c729d839073c193d7c2af663a1968dad52ab Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 11 Nov 2024 20:11:03 -0500
Subject: [PATCH 072/165] Fix smithing recipes on 1.21.1

---
 .../inventory/JavaContainerSetContentTranslator.java | 12 ++++++++++++
 .../inventory/JavaContainerSetSlotTranslator.java    |  2 +-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java
index 36d382d69..f2445856d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java
@@ -31,6 +31,7 @@ import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.inventory.PlayerInventoryTranslator;
+import org.geysermc.geyser.translator.inventory.SmithingInventoryTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
@@ -74,6 +75,17 @@ public class JavaContainerSetContentTranslator extends PacketTranslator<Clientbo
 
         session.getPlayerInventory().setCursor(GeyserItemStack.from(packet.getCarriedItem()), session);
         InventoryUtils.updateCursor(session);
+
+        if (session.getInventoryTranslator() instanceof SmithingInventoryTranslator) {
+            // On 1.21.1, the recipe output is sometimes only updated here.
+            // This can be replicated with shift-clicking the last item into the smithing table.
+            // It seems that something in Via 5.1.1 causes 1.21.3 clients - even Java ones -
+            // to make the server send a slot update.
+            // That plus shift-clicking means that the state ID becomes outdated and forces
+            // a complete inventory update.
+            JavaContainerSetSlotTranslator.updateSmithingTableOutput(session, SmithingInventoryTranslator.OUTPUT,
+                packet.getItems()[SmithingInventoryTranslator.OUTPUT], inventory);
+        }
     }
 
     private void updateInventory(GeyserSession session, Inventory inventory, int containerId) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index fa2e3a544..fe61c8579 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -224,7 +224,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
         }, 150, TimeUnit.MILLISECONDS));
     }
 
-    private static void updateSmithingTableOutput(GeyserSession session, int slot, ItemStack output, Inventory inventory) {
+    static void updateSmithingTableOutput(GeyserSession session, int slot, ItemStack output, Inventory inventory) {
         if (slot != SmithingInventoryTranslator.OUTPUT) {
             return;
         }

From 0750990e4f8c7c0e0542ec37643e99b8c3badac9 Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Wed, 13 Nov 2024 15:47:39 +0000
Subject: [PATCH 073/165] Fix abstract arrow entity metadata (#5149)

---
 .../main/java/org/geysermc/geyser/entity/EntityDefinitions.java  | 1 +
 1 file changed, 1 insertion(+)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index a25861813..47b97c934 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -492,6 +492,7 @@ public final class EntityDefinitions {
             EntityDefinition<AbstractArrowEntity> abstractArrowBase = EntityDefinition.inherited(AbstractArrowEntity::new, entityBase)
                     .addTranslator(MetadataType.BYTE, AbstractArrowEntity::setArrowFlags)
                     .addTranslator(null) // "Piercing level"
+                    .addTranslator(null) // If the arrow is in the ground
                     .build();
             ARROW = EntityDefinition.inherited(ArrowEntity::new, abstractArrowBase)
                     .type(EntityType.ARROW)

From abf68604beb3b8d3a1ee16e70f1f8ecfd86d5996 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sat, 16 Nov 2024 13:31:17 -0500
Subject: [PATCH 074/165] Fix missing ominous potion levels

Fixes #5153
---
 core/src/main/java/org/geysermc/geyser/item/Items.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index f123583f3..7af5aadce 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -48,6 +48,7 @@ import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.item.type.LightItem;
 import org.geysermc.geyser.item.type.MaceItem;
 import org.geysermc.geyser.item.type.MapItem;
+import org.geysermc.geyser.item.type.OminousBottleItem;
 import org.geysermc.geyser.item.type.PlayerHeadItem;
 import org.geysermc.geyser.item.type.PotionItem;
 import org.geysermc.geyser.item.type.ShieldItem;
@@ -1443,7 +1444,7 @@ public final class Items {
     public static final Item TRIAL_KEY = register(new Item("trial_key", builder()));
     public static final Item OMINOUS_TRIAL_KEY = register(new Item("ominous_trial_key", builder()));
     public static final Item VAULT = register(new BlockItem(builder(), Blocks.VAULT));
-    public static final Item OMINOUS_BOTTLE = register(new Item("ominous_bottle", builder()));
+    public static final Item OMINOUS_BOTTLE = register(new OminousBottleItem("ominous_bottle", builder()));
 
     public static final int AIR_ID = AIR.javaId();
 

From 2ebce9c5c93e37847c690a5ee41e477e08485344 Mon Sep 17 00:00:00 2001
From: AJ Ferguson <AJ-Ferguson@users.noreply.github.com>
Date: Fri, 22 Nov 2024 07:33:32 -0500
Subject: [PATCH 075/165] Fix camel jump cooldown (#5161)

---
 .../entity/player/input/BedrockPlayerAuthInputTranslator.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
index 02ea02232..8e2781a98 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
@@ -250,7 +250,7 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
             }
         }
 
-        if (vehicle instanceof AbstractHorseEntity) {
+        if (vehicle instanceof AbstractHorseEntity && !vehicle.getFlag(EntityFlag.HAS_DASH_COOLDOWN)) {
             // Behavior verified as of Java Edition 1.21.3
             int currentJumpingTicks = session.getInputCache().getJumpingTicks();
             if (currentJumpingTicks < 0) {

From b962918ac5f583841752ccd80b76ff2652bd2474 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 25 Nov 2024 10:18:10 -0500
Subject: [PATCH 076/165] Fix #5162 (#5163)

---
 .../protocol/java/JavaRecipeBookAddTranslator.java       | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 71fd4a200..96c5951d5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -185,8 +185,13 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
             }
         }
 
-        session.sendUpstreamPacket(craftingDataPacket);
-        session.sendUpstreamPacket(recipesPacket);
+        if (!recipesPacket.getUnlockedRecipes().isEmpty()) {
+            // Sending an empty list here will crash the client as of 1.20.60
+            // This was definitely in the codebase the entire time and did not
+            // accidentally get refactored out during Java 1.21.3. :)
+            session.sendUpstreamPacket(craftingDataPacket);
+            session.sendUpstreamPacket(recipesPacket);
+        }
         session.getLastRecipeNetId().set(netId);
 
         // Multi-version can mean different Bedrock item IDs

From 47b68f8140d1f7816f28a23baadb078a48cf344a Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Wed, 27 Nov 2024 13:22:09 +0800
Subject: [PATCH 077/165] Fix: Fabric permissions api conflict

---
 bootstrap/mod/fabric/build.gradle.kts | 1 +
 gradle/libs.versions.toml             | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/bootstrap/mod/fabric/build.gradle.kts b/bootstrap/mod/fabric/build.gradle.kts
index 2599a47b5..d48e184a2 100644
--- a/bootstrap/mod/fabric/build.gradle.kts
+++ b/bootstrap/mod/fabric/build.gradle.kts
@@ -38,6 +38,7 @@ dependencies {
 
     modImplementation(libs.cloud.fabric)
     include(libs.cloud.fabric)
+    include(libs.fabric.permissions.api)
 }
 
 tasks.withType<Jar> {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index f95574ee1..1e942df77 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -28,13 +28,14 @@ viaversion = "4.9.2"
 adapters = "1.15-SNAPSHOT"
 cloud = "2.0.0-rc.2"
 cloud-minecraft = "2.0.0-beta.9"
-cloud-minecraft-modded = "2.0.0-beta.7"
+cloud-minecraft-modded = "2.0.0-beta.9"
 commodore = "2.2"
 bungeecord = "a7c6ede"
 velocity = "3.3.0-SNAPSHOT"
 viaproxy = "3.3.2-SNAPSHOT"
 fabric-loader = "0.16.7"
 fabric-api = "0.106.1+1.21.3"
+fabric-permissions-api = "0.3.3"
 neoforge-minecraft = "21.3.0-beta"
 mixin = "0.8.5"
 mixinextras = "0.3.5"
@@ -109,6 +110,7 @@ minecraft = { group = "com.mojang", name = "minecraft", version.ref = "minecraft
 # Check these on https://fabricmc.net/develop/
 fabric-loader = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fabric-loader" }
 fabric-api = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fabric-api" }
+fabric-permissions-api = { group = "me.lucko", name = "fabric-permissions-api", version.ref = "fabric-permissions-api" }
 
 neoforge-minecraft = { group = "net.neoforged", name = "neoforge", version.ref = "neoforge-minecraft" }
 

From c145c3f495b1e9f05e15b65da8c813b2e9a5f11f Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Wed, 27 Nov 2024 22:51:59 +0800
Subject: [PATCH 078/165] Fix: Don't include player offset when querying player
 position in the api (#5168)

---
 .../geyser/api/entity/type/player/GeyserPlayerEntity.java   | 4 ++--
 .../geysermc/geyser/entity/type/player/PlayerEntity.java    | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/api/src/main/java/org/geysermc/geyser/api/entity/type/player/GeyserPlayerEntity.java b/api/src/main/java/org/geysermc/geyser/api/entity/type/player/GeyserPlayerEntity.java
index bba4dbf3e..d31def996 100644
--- a/api/src/main/java/org/geysermc/geyser/api/entity/type/player/GeyserPlayerEntity.java
+++ b/api/src/main/java/org/geysermc/geyser/api/entity/type/player/GeyserPlayerEntity.java
@@ -31,9 +31,9 @@ import org.geysermc.geyser.api.entity.type.GeyserEntity;
 public interface GeyserPlayerEntity extends GeyserEntity {
 
     /**
-     * Gets the position of the player.
+     * Gets the position of the player, as it is known to the Java server.
      *
-     * @return the position of the player.
+     * @return the player's position
      */
     Vector3f position();
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
index 7e747e33d..7a443d6e8 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
@@ -97,11 +97,11 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
     /**
      * Saves the parrot currently on the player's left shoulder; otherwise null
      */
-    private ParrotEntity leftParrot;
+    private @Nullable ParrotEntity leftParrot;
     /**
      * Saves the parrot currently on the player's right shoulder; otherwise null
      */
-    private ParrotEntity rightParrot;
+    private @Nullable ParrotEntity rightParrot;
 
     public PlayerEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, Vector3f position,
                         Vector3f motion, float yaw, float pitch, float headYaw, String username, @Nullable String texturesProperty) {
@@ -450,6 +450,6 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
 
     @Override
     public Vector3f position() {
-        return this.position.clone();
+        return this.position.down(definition.offset());
     }
 }

From c240c1cfb540b79145a4bf758621dbcfe6f06551 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Fri, 29 Nov 2024 11:43:58 +0800
Subject: [PATCH 079/165] Fix: Virtual lecterns not displaying book contents
 (#5169)

---
 .../geyser/inventory/LecternContainer.java    | 14 ++++++--------
 .../holder/BlockInventoryHolder.java          |  2 +-
 .../inventory/LecternInventoryTranslator.java | 19 +++++++++----------
 3 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java b/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java
index 389611c67..ff21f561e 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java
@@ -34,17 +34,15 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.java.inventory.JavaOpenBookTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 
+@Getter
 public class LecternContainer extends Container {
-    @Getter @Setter
+    @Setter
     private int currentBedrockPage = 0;
-    @Getter @Setter
+    @Setter
     private NbtMap blockEntityTag;
-    @Getter @Setter
+    @Setter
     private Vector3i position;
 
-    // Sigh. When the lectern container is created, we don't know (yet) if it's fake or not.
-    // So... time for a manual check :/
-    @Getter
     private boolean isFakeLectern = false;
 
     public LecternContainer(String title, int id, int size, ContainerType containerType, PlayerInventory playerInventory) {
@@ -52,8 +50,8 @@ public class LecternContainer extends Container {
     }
 
     /**
-     * When we are using a fake lectern, the Java server expects us to still be in a player inventory.
-     * We can't use {@link #isUsingRealBlock()} as that may not be determined yet.
+     * When the Java server asks the client to open a book in their hotbar, we create a fake lectern to show it to the client.
+     * We can't use the {@link #isUsingRealBlock()} check as we may also be dealing with a real virtual lectern (with its own inventory).
      */
     @Override
     public void setItem(int slot, @NonNull GeyserItemStack newItem, GeyserSession session) {
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java b/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java
index cdda4fe4c..385a1e2bd 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java
@@ -157,7 +157,7 @@ public class BlockInventoryHolder extends InventoryHolder {
     @Override
     public void closeInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
         if (inventory instanceof Container container) {
-            if (container.isUsingRealBlock() && !(inventory instanceof LecternContainer)) {
+            if (container.isUsingRealBlock() && !(container instanceof LecternContainer)) {
                 // No need to reset a block since we didn't change any blocks
                 // But send a container close packet because we aren't destroying the original.
                 ContainerClosePacket packet = new ContainerClosePacket();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
index 3b33f5909..007811999 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
@@ -30,8 +30,6 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.erosion.util.LecternUtils;
-import org.geysermc.geyser.GeyserImpl;
-import org.geysermc.geyser.inventory.Container;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.LecternContainer;
@@ -55,7 +53,7 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
      * Hack: Java opens a lectern first, and then follows it up with a ClientboundContainerSetContentPacket
      * to actually send the book's contents. We delay opening the inventory until the book was sent.
      */
-    private boolean initialized = false;
+    private boolean receivedBook = false;
 
     public LecternInventoryTranslator() {
         super(1, Blocks.LECTERN, org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType.LECTERN , ContainerInventoryUpdater.INSTANCE);
@@ -64,11 +62,12 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
     @Override
     public boolean prepareInventory(GeyserSession session, Inventory inventory) {
         super.prepareInventory(session, inventory);
-        if (((Container) inventory).isUsingRealBlock()) {
-            initialized = false; // We have to wait until we get the book to show to the client
+        if (((LecternContainer) inventory).isFakeLectern()) {
+            // See JavaOpenBookTranslator; this isn't a lectern but a book in the player inventory
+            updateBook(session, inventory, inventory.getItem(0));
+            receivedBook = true;
         } else {
-            updateBook(session, inventory, inventory.getItem(0)); // See JavaOpenBookTranslator; placed here manually
-            initialized = true;
+            receivedBook = false; // We have to wait until we get the book
         }
         return true;
     }
@@ -79,7 +78,7 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
         // "initialized" indicates whether we've received the book from the Java server yet.
         // dropping lectern book is the fun workaround when we have to enter the gui to drop the book.
         // Since we leave it immediately... don't open it!
-        if (initialized && !session.isDroppingLecternBook()) {
+        if (receivedBook && !session.isDroppingLecternBook()) {
             super.openInventory(session, inventory);
         }
     }
@@ -122,8 +121,8 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
             boolean isDropping = session.isDroppingLecternBook();
             updateBook(session, inventory, itemStack);
 
-            if (!initialized && !isDropping) {
-                initialized = true;
+            if (!receivedBook && !isDropping) {
+                receivedBook = true;
                 openInventory(session, inventory);
             }
         }

From d53a1a5cc44a3f838c35fed3a0df8e134858736a Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 28 Nov 2024 02:17:11 +0800
Subject: [PATCH 080/165] Start on 1.21.4 support

---
 .../entity/vehicle/VehicleComponent.java       |  6 +++++-
 .../java/org/geysermc/geyser/item/Items.java   |  5 +++++
 .../org/geysermc/geyser/item/type/Item.java    | 18 ++++++------------
 .../translator/item/CustomItemTranslator.java  | 13 +++++++++++--
 .../BedrockPlayerAuthInputTranslator.java      |  5 +++--
 .../java/entity/JavaMoveVehicleTranslator.java |  7 +++----
 .../geysermc/geyser/util/InventoryUtils.java   | 11 ++++++-----
 .../network/ScoreboardIssueTests.java          |  2 +-
 gradle.properties                              |  2 +-
 gradle/libs.versions.toml                      |  6 +++---
 settings.gradle.kts                            |  4 ++--
 11 files changed, 46 insertions(+), 33 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java b/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
index 91f54162b..61875ec90 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/vehicle/VehicleComponent.java
@@ -105,6 +105,10 @@ public class VehicleComponent<T extends LivingEntity & ClientVehicle> {
         boundingBox.setMiddleZ(z);
     }
 
+    public void moveAbsolute(Vector3d vec) {
+        moveAbsolute(vec.getX(), vec.getY(), vec.getZ());
+    }
+
     public void moveRelative(double x, double y, double z) {
         boundingBox.translate(x, y, z);
     }
@@ -756,7 +760,7 @@ public class VehicleComponent<T extends LivingEntity & ClientVehicle> {
             vehicle.getSession().sendUpstreamPacket(moveEntityDeltaPacket);
         }
 
-        ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(javaPos.getX(), javaPos.getY(), javaPos.getZ(), rotation.getX(), rotation.getY());
+        ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(javaPos, rotation.getX(), rotation.getY(), vehicle.isOnGround());
         vehicle.getSession().sendDownstreamPacket(moveVehiclePacket);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index 7af5aadce..c7ab076b4 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -70,6 +70,11 @@ import static org.geysermc.geyser.item.type.Item.builder;
  */
 @SuppressWarnings("unused")
 public final class Items {
+
+    static {
+        // Load data components here
+    }
+
     public static final Item AIR = register(new Item("air", builder()));
     public static final Item STONE = register(new BlockItem(builder(), Blocks.STONE));
     public static final Item GRANITE = register(new BlockItem(builder(), Blocks.GRANITE));
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 249936e5a..0155c4e35 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -62,12 +62,16 @@ public class Item {
     private static final Map<Block, Item> BLOCK_TO_ITEM = new HashMap<>();
     protected final Key javaIdentifier;
     private int javaId = -1;
+
+    // TODO remove these
     private final int stackSize;
     private final int attackDamage;
     private final int maxDamage;
     private final Rarity rarity;
     private final boolean glint;
 
+    private DataComponents dataComponents;
+
     public Item(String javaIdentifier, Builder builder) {
         this.javaIdentifier = MinecraftKey.key(javaIdentifier);
         this.stackSize = builder.stackSize;
@@ -86,7 +90,7 @@ public class Item {
     }
 
     public int maxDamage() {
-        return maxDamage;
+        return dataComponents.getOrDefault(DataComponentType.MAX_DAMAGE, 0);
     }
 
     public int attackDamage() {
@@ -94,7 +98,7 @@ public class Item {
     }
 
     public int maxStackSize() {
-        return stackSize;
+        return dataComponents.getOrDefault(DataComponentType.MAX_STACK_SIZE, 1);
     }
 
     public Rarity rarity() {
@@ -317,16 +321,6 @@ public class Item {
             return this;
         }
 
-        public Builder rarity(Rarity rarity) {
-            this.rarity = rarity;
-            return this;
-        }
-
-        public Builder glint(boolean glintOverride) {
-            this.glint = glintOverride;
-            return this;
-        }
-
         private Builder() {
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
index 91eee3895..b65b06431 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.item;
 
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.CustomModelData;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import it.unimi.dsi.fastutil.Pair;
@@ -52,7 +53,15 @@ public final class CustomItemTranslator {
             return null;
         }
 
-        int customModelData = components.getOrDefault(DataComponentType.CUSTOM_MODEL_DATA, 0);
+        // TODO 1.21.4
+        float customModelDataInt = 0;
+        CustomModelData customModelData = components.get(DataComponentType.CUSTOM_MODEL_DATA);
+        if (customModelData != null) {
+            if (!customModelData.floats().isEmpty()) {
+                customModelDataInt = customModelData.floats().get(0);
+            }
+        }
+
         boolean checkDamage = mapping.getJavaItem().maxDamage() > 0;
         int damage = !checkDamage ? 0 : components.getOrDefault(DataComponentType.DAMAGE, 0);
         boolean unbreakable = checkDamage && !isDamaged(components, damage);
@@ -88,7 +97,7 @@ public final class CustomItemTranslator {
             }
 
             OptionalInt customModelDataOption = options.customModelData();
-            if (customModelDataOption.isPresent() && customModelData < customModelDataOption.getAsInt()) {
+            if (customModelDataOption.isPresent() && customModelDataInt < customModelDataOption.getAsInt()) {
                 continue;
             }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
index 8e2781a98..b57187018 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockPlayerAuthInputTranslator.java
@@ -312,8 +312,9 @@ public final class BedrockPlayerAuthInputTranslator extends PacketTranslator<Pla
 
             vehicle.setPosition(vehiclePosition);
             ServerboundMoveVehiclePacket moveVehiclePacket = new ServerboundMoveVehiclePacket(
-                vehiclePosition.getX(), vehiclePosition.getY(), vehiclePosition.getZ(),
-                vehicleRotation.getY() - 90, vehiclePosition.getX() // TODO I wonder if this is related to the horse spinning bugs...
+                vehiclePosition.toDouble(),
+                vehicleRotation.getY() - 90, vehiclePosition.getX(), // TODO I wonder if this is related to the horse spinning bugs...
+                vehicle.isOnGround()
             );
             session.sendDownstreamGamePacket(moveVehiclePacket);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveVehicleTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveVehicleTranslator.java
index 1f18d4d2f..18fd1ec4c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveVehicleTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveVehicleTranslator.java
@@ -25,13 +25,12 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity;
 
-import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveVehiclePacket;
-import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveVehiclePacket;
 
 @Translator(packet = ClientboundMoveVehiclePacket.class)
 public class JavaMoveVehicleTranslator extends PacketTranslator<ClientboundMoveVehiclePacket> {
@@ -42,9 +41,9 @@ public class JavaMoveVehicleTranslator extends PacketTranslator<ClientboundMoveV
         if (entity == null) return;
 
         if (entity instanceof ClientVehicle clientVehicle) {
-            clientVehicle.getVehicleComponent().moveAbsolute(packet.getX(), packet.getY(), packet.getZ());
+            clientVehicle.getVehicleComponent().moveAbsolute(packet.getPosition());
         }
 
-        entity.moveAbsolute(Vector3f.from(packet.getX(), packet.getY(), packet.getZ()), packet.getYaw(), packet.getPitch(), false, true);
+        entity.moveAbsolute(packet.getPosition().toFloat(), packet.getYRot(), packet.getXRot(), false, true);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 9862eb730..df0450ce6 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -69,7 +69,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDis
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.WithRemainderSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
 import org.jetbrains.annotations.Contract;
 
@@ -305,8 +304,9 @@ public class InventoryUtils {
             }
             // If this is the item we're looking for
             if (geyserItem.getJavaId() == itemStack.getId() && Objects.equals(geyserItem.getComponents(), itemStack.getDataComponents())) { //TODO verify
-                ServerboundPickItemPacket packetToSend = new ServerboundPickItemPacket(i); // https://wiki.vg/Protocol#Pick_Item
-                session.sendDownstreamGamePacket(packetToSend);
+                //ServerboundPickItemFromBlockPacket packetToSend = new ServerboundPickItemFromBlockPacket(i); // https://wiki.vg/Protocol#Pick_Item
+                //session.sendDownstreamGamePacket(packetToSend);
+                // TODO 1.21.4
                 return;
             }
         }
@@ -368,8 +368,9 @@ public class InventoryUtils {
                 continue;
             }
 
-            ServerboundPickItemPacket packetToSend = new ServerboundPickItemPacket(i); // https://wiki.vg/Protocol#Pick_Item
-            session.sendDownstreamGamePacket(packetToSend);
+            // TODO 1.21.4
+            //ServerboundPickItemPacket packetToSend = new ServerboundPickItemPacket(i); // https://wiki.vg/Protocol#Pick_Item
+            //session.sendDownstreamGamePacket(packetToSend);
             return;
         }
 
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
index 7ab518f1d..0b3d2c5e7 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
@@ -154,7 +154,7 @@ public class ScoreboardIssueTests {
                 new ClientboundPlayerInfoUpdatePacket(
                     EnumSet.of(PlayerListEntryAction.ADD_PLAYER, PlayerListEntryAction.UPDATE_LISTED),
                     new PlayerListEntry[] {
-                        new PlayerListEntry(npcUuid, new GameProfile(npcUuid, "1297"), false, 0, GameMode.SURVIVAL, null, 0, null, 0, null, null)
+                        new PlayerListEntry(npcUuid, new GameProfile(npcUuid, "1297"), false, 0, GameMode.SURVIVAL, null, false, 0, null, 0, null, null)
                     }));
 
             //todo we don't have to remove an entry that was never in the playerlist in the first place
diff --git a/gradle.properties b/gradle.properties
index 09943725b..473c104f4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -11,5 +11,5 @@ loom.ignoreDependencyLoomVersionValidation=true
 
 group=org.geysermc
 id=geyser
-version=2.5.0-SNAPSHOT
+version=2.6.0-SNAPSHOT
 description=Allows for players from Minecraft: Bedrock Edition to join Minecraft: Java Edition servers.
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1e942df77..3054d9e33 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241022.154658-14"
 protocol-codec = "3.0.0.Beta5-20241022.154658-14"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.2-20241107.110329-3"
+mcprotocollib = "1.21.4-SNAPSHOT"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"
@@ -34,12 +34,12 @@ bungeecord = "a7c6ede"
 velocity = "3.3.0-SNAPSHOT"
 viaproxy = "3.3.2-SNAPSHOT"
 fabric-loader = "0.16.7"
-fabric-api = "0.106.1+1.21.3"
+fabric-api = "0.109.1+1.21.4"
 fabric-permissions-api = "0.3.3"
 neoforge-minecraft = "21.3.0-beta"
 mixin = "0.8.5"
 mixinextras = "0.3.5"
-minecraft = "1.21.3"
+minecraft = "1.21.4-pre3"
 mockito = "5.+"
 
 # plugin versions
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 9aaf6ba59..e820f59bd 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -20,7 +20,7 @@ include(":ap")
 include(":api")
 include(":bungeecord")
 include(":fabric")
-include(":neoforge")
+//include(":neoforge")
 include(":mod")
 include(":spigot")
 include(":standalone")
@@ -32,7 +32,7 @@ include(":core")
 // Specify project dirs
 project(":bungeecord").projectDir = file("bootstrap/bungeecord")
 project(":fabric").projectDir = file("bootstrap/mod/fabric")
-project(":neoforge").projectDir = file("bootstrap/mod/neoforge")
+//project(":neoforge").projectDir = file("bootstrap/mod/neoforge")
 project(":mod").projectDir = file("bootstrap/mod")
 project(":spigot").projectDir = file("bootstrap/spigot")
 project(":standalone").projectDir = file("bootstrap/standalone")

From feecc47092e79a5e5a69b009b528c25d0242f003 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 1 Dec 2024 03:22:34 +0800
Subject: [PATCH 081/165] More work on 1.21.4 changes

---
 .../updater/AnvilInventoryUpdater.java        |   9 +-
 .../java/org/geysermc/geyser/item/Items.java  | 516 +++++++++---------
 .../item/type/BedrockRequiresTagItem.java     |   8 +-
 .../geyser/item/type/FireworkRocketItem.java  |  17 -
 .../org/geysermc/geyser/item/type/Item.java   |  59 +-
 .../CustomItemRegistryPopulator.java          |  15 +-
 .../populator/ItemRegistryPopulator.java      |   2 +-
 .../translator/item/CustomItemTranslator.java |   2 +-
 .../translator/item/ItemTranslator.java       |  67 +--
 .../BedrockBlockPickRequestTranslator.java    |  42 +-
 .../BedrockEntityPickRequestTranslator.java   |  37 +-
 .../JavaMerchantOffersTranslator.java         |   2 +-
 .../geysermc/geyser/util/InventoryUtils.java  | 170 ------
 13 files changed, 337 insertions(+), 609 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index 0ffb74082..00270e47a 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -52,7 +52,6 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.stream.IntStream;
 
 public class AnvilInventoryUpdater extends InventoryUpdater {
     public static final AnvilInventoryUpdater INSTANCE = new AnvilInventoryUpdater();
@@ -266,14 +265,14 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
      */
     private int calcRepairLevelCost(GeyserItemStack input, GeyserItemStack material) {
         int newDamage = getDamage(input);
-        int unitRepair = Math.min(newDamage, input.asItem().maxDamage() / 4);
+        int unitRepair = Math.min(newDamage, input.asItem().defaultMaxDamage() / 4);
         if (unitRepair <= 0) {
             // No damage to repair
             return -1;
         }
         for (int i = 0; i < material.getAmount(); i++) {
             newDamage -= unitRepair;
-            unitRepair = Math.min(newDamage, input.asItem().maxDamage() / 4);
+            unitRepair = Math.min(newDamage, input.asItem().defaultMaxDamage() / 4);
             if (unitRepair <= 0) {
                 return i + 1;
             }
@@ -290,7 +289,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
      */
     private int calcMergeRepairCost(GeyserItemStack input, GeyserItemStack material) {
         // If the material item is damaged 112% or more, then the input item will not be repaired
-        if (getDamage(input) > 0 && getDamage(material) < (material.asItem().maxDamage() * 112 / 100)) {
+        if (getDamage(input) > 0 && getDamage(material) < (material.asItem().defaultMaxDamage() * 112 / 100)) {
             return 2;
         }
         return 0;
@@ -419,7 +418,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
     }
 
     private boolean hasDurability(GeyserItemStack itemStack) {
-        if (itemStack.asItem().maxDamage() > 0) {
+        if (itemStack.asItem().defaultMaxDamage() > 0) {
             return itemStack.getComponent(DataComponentType.UNBREAKABLE, false);
         }
         return false;
diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index c7ab076b4..d2ae08ec4 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -301,6 +301,8 @@ public final class Items {
     public static final Item RED_WOOL = register(new BlockItem(builder(), Blocks.RED_WOOL));
     public static final Item BLACK_WOOL = register(new BlockItem(builder(), Blocks.BLACK_WOOL));
     public static final Item DANDELION = register(new BlockItem(builder(), Blocks.DANDELION));
+//   TODO public static final Item OPEN_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.OPEN_EYEBLOSSOM));
+//   TODO public static final Item CLOSED_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.CLOSED_EYEBLOSSOM));
     public static final Item POPPY = register(new BlockItem(builder(), Blocks.POPPY));
     public static final Item BLUE_ORCHID = register(new BlockItem(builder(), Blocks.BLUE_ORCHID));
     public static final Item ALLIUM = register(new BlockItem(builder(), Blocks.ALLIUM));
@@ -449,6 +451,13 @@ public final class Items {
     public static final Item MELON = register(new BlockItem(builder(), Blocks.MELON));
     public static final Item VINE = register(new BlockItem(builder(), Blocks.VINE));
     public static final Item GLOW_LICHEN = register(new BlockItem(builder(), Blocks.GLOW_LICHEN));
+    //TODO public static final Item RESIN_CLUMP = register(new BlockItem(builder(), Blocks.RESIN_CLUMP));
+    //TODO public static final Item RESIN_BLOCK = register(new BlockItem(builder(), Blocks.RESIN_BLOCK));
+    //TODO public static final Item RESIN_BRICKS = register(new BlockItem(builder(), Blocks.RESIN_BRICKS));
+    //TODO public static final Item RESIN_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.RESIN_BRICK_STAIRS));
+    //TODO public static final Item RESIN_BRICK_SLAB = register(new BlockItem(builder(), Blocks.RESIN_BRICK_SLAB));
+    //TODO public static final Item RESIN_BRICK_WALL = register(new BlockItem(builder(), Blocks.RESIN_BRICK_WALL));
+    //TODO public static final Item CHISELED_RESIN_BRICKS = register(new BlockItem(builder(), Blocks.CHISELED_RESIN_BRICKS));
     public static final Item BRICK_STAIRS = register(new BlockItem(builder(), Blocks.BRICK_STAIRS));
     public static final Item STONE_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.STONE_BRICK_STAIRS));
     public static final Item MUD_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.MUD_BRICK_STAIRS));
@@ -533,7 +542,7 @@ public final class Items {
     public static final Item RED_TERRACOTTA = register(new BlockItem(builder(), Blocks.RED_TERRACOTTA));
     public static final Item BLACK_TERRACOTTA = register(new BlockItem(builder(), Blocks.BLACK_TERRACOTTA));
     public static final Item BARRIER = register(new BlockItem(builder(), Blocks.BARRIER));
-    public static final Item LIGHT = register(new LightItem(builder(), Blocks.LIGHT));
+    public static final Item LIGHT = register(new BlockItem(builder(), Blocks.LIGHT));
     public static final Item HAY_BLOCK = register(new BlockItem(builder(), Blocks.HAY_BLOCK));
     public static final Item WHITE_CARPET = register(new BlockItem(builder(), Blocks.WHITE_CARPET));
     public static final Item ORANGE_CARPET = register(new BlockItem(builder(), Blocks.ORANGE_CARPET));
@@ -611,23 +620,23 @@ public final class Items {
     public static final Item RED_NETHER_BRICKS = register(new BlockItem(builder(), Blocks.RED_NETHER_BRICKS));
     public static final Item BONE_BLOCK = register(new BlockItem(builder(), Blocks.BONE_BLOCK));
     public static final Item STRUCTURE_VOID = register(new BlockItem(builder(), Blocks.STRUCTURE_VOID));
-    public static final Item SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.SHULKER_BOX));
-    public static final Item WHITE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.WHITE_SHULKER_BOX));
-    public static final Item ORANGE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.ORANGE_SHULKER_BOX));
-    public static final Item MAGENTA_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.MAGENTA_SHULKER_BOX));
-    public static final Item LIGHT_BLUE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.LIGHT_BLUE_SHULKER_BOX));
-    public static final Item YELLOW_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.YELLOW_SHULKER_BOX));
-    public static final Item LIME_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.LIME_SHULKER_BOX));
-    public static final Item PINK_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.PINK_SHULKER_BOX));
-    public static final Item GRAY_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.GRAY_SHULKER_BOX));
-    public static final Item LIGHT_GRAY_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.LIGHT_GRAY_SHULKER_BOX));
-    public static final Item CYAN_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.CYAN_SHULKER_BOX));
-    public static final Item PURPLE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.PURPLE_SHULKER_BOX));
-    public static final Item BLUE_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.BLUE_SHULKER_BOX));
-    public static final Item BROWN_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.BROWN_SHULKER_BOX));
-    public static final Item GREEN_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.GREEN_SHULKER_BOX));
-    public static final Item RED_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.RED_SHULKER_BOX));
-    public static final Item BLACK_SHULKER_BOX = register(new ShulkerBoxItem(builder().stackSize(1), Blocks.BLACK_SHULKER_BOX));
+    public static final Item SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.SHULKER_BOX));
+    public static final Item WHITE_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.WHITE_SHULKER_BOX));
+    public static final Item ORANGE_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.ORANGE_SHULKER_BOX));
+    public static final Item MAGENTA_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.MAGENTA_SHULKER_BOX));
+    public static final Item LIGHT_BLUE_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.LIGHT_BLUE_SHULKER_BOX));
+    public static final Item YELLOW_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.YELLOW_SHULKER_BOX));
+    public static final Item LIME_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.LIME_SHULKER_BOX));
+    public static final Item PINK_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.PINK_SHULKER_BOX));
+    public static final Item GRAY_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.GRAY_SHULKER_BOX));
+    public static final Item LIGHT_GRAY_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.LIGHT_GRAY_SHULKER_BOX));
+    public static final Item CYAN_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.CYAN_SHULKER_BOX));
+    public static final Item PURPLE_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.PURPLE_SHULKER_BOX));
+    public static final Item BLUE_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.BLUE_SHULKER_BOX));
+    public static final Item BROWN_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.BROWN_SHULKER_BOX));
+    public static final Item GREEN_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.GREEN_SHULKER_BOX));
+    public static final Item RED_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.RED_SHULKER_BOX));
+    public static final Item BLACK_SHULKER_BOX = register(new ShulkerBoxItem(builder(), Blocks.BLACK_SHULKER_BOX));
     public static final Item WHITE_GLAZED_TERRACOTTA = register(new BlockItem(builder(), Blocks.WHITE_GLAZED_TERRACOTTA));
     public static final Item ORANGE_GLAZED_TERRACOTTA = register(new BlockItem(builder(), Blocks.ORANGE_GLAZED_TERRACOTTA));
     public static final Item MAGENTA_GLAZED_TERRACOTTA = register(new BlockItem(builder(), Blocks.MAGENTA_GLAZED_TERRACOTTA));
@@ -859,46 +868,46 @@ public final class Items {
     public static final Item DETECTOR_RAIL = register(new BlockItem(builder(), Blocks.DETECTOR_RAIL));
     public static final Item RAIL = register(new BlockItem(builder(), Blocks.RAIL));
     public static final Item ACTIVATOR_RAIL = register(new BlockItem(builder(), Blocks.ACTIVATOR_RAIL));
-    public static final Item SADDLE = register(new Item("saddle", builder().stackSize(1)));
-    public static final Item MINECART = register(new Item("minecart", builder().stackSize(1)));
-    public static final Item CHEST_MINECART = register(new Item("chest_minecart", builder().stackSize(1)));
-    public static final Item FURNACE_MINECART = register(new Item("furnace_minecart", builder().stackSize(1)));
-    public static final Item TNT_MINECART = register(new Item("tnt_minecart", builder().stackSize(1)));
-    public static final Item HOPPER_MINECART = register(new Item("hopper_minecart", builder().stackSize(1)));
-    public static final Item CARROT_ON_A_STICK = register(new Item("carrot_on_a_stick", builder().stackSize(1).maxDamage(25)));
-    public static final Item WARPED_FUNGUS_ON_A_STICK = register(new Item("warped_fungus_on_a_stick", builder().stackSize(1).maxDamage(100)));
+    public static final Item SADDLE = register(new Item("saddle", builder()));
+    public static final Item MINECART = register(new Item("minecart", builder()));
+    public static final Item CHEST_MINECART = register(new Item("chest_minecart", builder()));
+    public static final Item FURNACE_MINECART = register(new Item("furnace_minecart", builder()));
+    public static final Item TNT_MINECART = register(new Item("tnt_minecart", builder()));
+    public static final Item HOPPER_MINECART = register(new Item("hopper_minecart", builder()));
+    public static final Item CARROT_ON_A_STICK = register(new Item("carrot_on_a_stick", builder()));
+    public static final Item WARPED_FUNGUS_ON_A_STICK = register(new Item("warped_fungus_on_a_stick", builder()));
     public static final Item PHANTOM_MEMBRANE = register(new Item("phantom_membrane", builder()));
-    public static final Item ELYTRA = register(new ElytraItem("elytra", builder().stackSize(1).maxDamage(432)));
-    public static final Item OAK_BOAT = register(new BoatItem("oak_boat", builder().stackSize(1)));
-    public static final Item OAK_CHEST_BOAT = register(new BoatItem("oak_chest_boat", builder().stackSize(1)));
-    public static final Item SPRUCE_BOAT = register(new BoatItem("spruce_boat", builder().stackSize(1)));
-    public static final Item SPRUCE_CHEST_BOAT = register(new BoatItem("spruce_chest_boat", builder().stackSize(1)));
-    public static final Item BIRCH_BOAT = register(new BoatItem("birch_boat", builder().stackSize(1)));
-    public static final Item BIRCH_CHEST_BOAT = register(new BoatItem("birch_chest_boat", builder().stackSize(1)));
-    public static final Item JUNGLE_BOAT = register(new BoatItem("jungle_boat", builder().stackSize(1)));
-    public static final Item JUNGLE_CHEST_BOAT = register(new BoatItem("jungle_chest_boat", builder().stackSize(1)));
-    public static final Item ACACIA_BOAT = register(new BoatItem("acacia_boat", builder().stackSize(1)));
-    public static final Item ACACIA_CHEST_BOAT = register(new BoatItem("acacia_chest_boat", builder().stackSize(1)));
-    public static final Item CHERRY_BOAT = register(new BoatItem("cherry_boat", builder().stackSize(1)));
-    public static final Item CHERRY_CHEST_BOAT = register(new BoatItem("cherry_chest_boat", builder().stackSize(1)));
-    public static final Item DARK_OAK_BOAT = register(new BoatItem("dark_oak_boat", builder().stackSize(1)));
-    public static final Item DARK_OAK_CHEST_BOAT = register(new BoatItem("dark_oak_chest_boat", builder().stackSize(1)));
-    public static final Item PALE_OAK_BOAT = register(new BoatItem("pale_oak_boat", builder().stackSize(1)));
-    public static final Item PALE_OAK_CHEST_BOAT = register(new BoatItem("pale_oak_chest_boat", builder().stackSize(1)));
-    public static final Item MANGROVE_BOAT = register(new BoatItem("mangrove_boat", builder().stackSize(1)));
-    public static final Item MANGROVE_CHEST_BOAT = register(new BoatItem("mangrove_chest_boat", builder().stackSize(1)));
-    public static final Item BAMBOO_RAFT = register(new BoatItem("bamboo_raft", builder().stackSize(1)));
-    public static final Item BAMBOO_CHEST_RAFT = register(new BoatItem("bamboo_chest_raft", builder().stackSize(1)));
+    public static final Item ELYTRA = register(new ElytraItem("elytra", builder()));
+    public static final Item OAK_BOAT = register(new BoatItem("oak_boat", builder()));
+    public static final Item OAK_CHEST_BOAT = register(new BoatItem("oak_chest_boat", builder()));
+    public static final Item SPRUCE_BOAT = register(new BoatItem("spruce_boat", builder()));
+    public static final Item SPRUCE_CHEST_BOAT = register(new BoatItem("spruce_chest_boat", builder()));
+    public static final Item BIRCH_BOAT = register(new BoatItem("birch_boat", builder()));
+    public static final Item BIRCH_CHEST_BOAT = register(new BoatItem("birch_chest_boat", builder()));
+    public static final Item JUNGLE_BOAT = register(new BoatItem("jungle_boat", builder()));
+    public static final Item JUNGLE_CHEST_BOAT = register(new BoatItem("jungle_chest_boat", builder()));
+    public static final Item ACACIA_BOAT = register(new BoatItem("acacia_boat", builder()));
+    public static final Item ACACIA_CHEST_BOAT = register(new BoatItem("acacia_chest_boat", builder()));
+    public static final Item CHERRY_BOAT = register(new BoatItem("cherry_boat", builder()));
+    public static final Item CHERRY_CHEST_BOAT = register(new BoatItem("cherry_chest_boat", builder()));
+    public static final Item DARK_OAK_BOAT = register(new BoatItem("dark_oak_boat", builder()));
+    public static final Item DARK_OAK_CHEST_BOAT = register(new BoatItem("dark_oak_chest_boat", builder()));
+    public static final Item PALE_OAK_BOAT = register(new BoatItem("pale_oak_boat", builder()));
+    public static final Item PALE_OAK_CHEST_BOAT = register(new BoatItem("pale_oak_chest_boat", builder()));
+    public static final Item MANGROVE_BOAT = register(new BoatItem("mangrove_boat", builder()));
+    public static final Item MANGROVE_CHEST_BOAT = register(new BoatItem("mangrove_chest_boat", builder()));
+    public static final Item BAMBOO_RAFT = register(new BoatItem("bamboo_raft", builder()));
+    public static final Item BAMBOO_CHEST_RAFT = register(new BoatItem("bamboo_chest_raft", builder()));
     public static final Item STRUCTURE_BLOCK = register(new BlockItem(builder(), Blocks.STRUCTURE_BLOCK));
     public static final Item JIGSAW = register(new BlockItem(builder(), Blocks.JIGSAW));
-    public static final Item TURTLE_HELMET = register(new ArmorItem("turtle_helmet", ArmorMaterial.TURTLE, builder().stackSize(1).maxDamage(275)));
+    public static final Item TURTLE_HELMET = register(new ArmorItem("turtle_helmet", ArmorMaterial.TURTLE, builder()));
     public static final Item TURTLE_SCUTE = register(new Item("turtle_scute", builder()));
     public static final Item ARMADILLO_SCUTE = register(new Item("armadillo_scute", builder()));
-    public static final Item WOLF_ARMOR = register(new WolfArmorItem("wolf_armor", ArmorMaterial.ARMADILLO, builder().stackSize(1).maxDamage(64)));
-    public static final Item FLINT_AND_STEEL = register(new Item("flint_and_steel", builder().stackSize(1).maxDamage(64)));
+    public static final Item WOLF_ARMOR = register(new WolfArmorItem("wolf_armor", ArmorMaterial.ARMADILLO, builder()));
+    public static final Item FLINT_AND_STEEL = register(new Item("flint_and_steel", builder()));
     public static final Item BOWL = register(new Item("bowl", builder()));
     public static final Item APPLE = register(new Item("apple", builder()));
-    public static final Item BOW = register(new Item("bow", builder().stackSize(1).maxDamage(384)));
+    public static final Item BOW = register(new Item("bow", builder()));
     public static final Item ARROW = register(new ArrowItem("arrow", builder()));
     public static final Item COAL = register(new Item("coal", builder()));
     public static final Item CHARCOAL = register(new Item("charcoal", builder()));
@@ -915,140 +924,140 @@ public final class Items {
     public static final Item GOLD_INGOT = register(new Item("gold_ingot", builder()));
     public static final Item NETHERITE_INGOT = register(new Item("netherite_ingot", builder()));
     public static final Item NETHERITE_SCRAP = register(new Item("netherite_scrap", builder()));
-    public static final Item WOODEN_SWORD = register(new TieredItem("wooden_sword", ToolTier.WOODEN, builder().stackSize(1).maxDamage(59).attackDamage(4.0)));
-    public static final Item WOODEN_SHOVEL = register(new TieredItem("wooden_shovel", ToolTier.WOODEN, builder().stackSize(1).maxDamage(59).attackDamage(2.5)));
-    public static final Item WOODEN_PICKAXE = register(new TieredItem("wooden_pickaxe", ToolTier.WOODEN, builder().stackSize(1).maxDamage(59).attackDamage(2.0)));
-    public static final Item WOODEN_AXE = register(new TieredItem("wooden_axe", ToolTier.WOODEN, builder().stackSize(1).maxDamage(59).attackDamage(7.0)));
-    public static final Item WOODEN_HOE = register(new TieredItem("wooden_hoe", ToolTier.WOODEN, builder().stackSize(1).maxDamage(59).attackDamage(1.0)));
-    public static final Item STONE_SWORD = register(new TieredItem("stone_sword", ToolTier.STONE, builder().stackSize(1).maxDamage(131).attackDamage(5.0)));
-    public static final Item STONE_SHOVEL = register(new TieredItem("stone_shovel", ToolTier.STONE, builder().stackSize(1).maxDamage(131).attackDamage(3.5)));
-    public static final Item STONE_PICKAXE = register(new TieredItem("stone_pickaxe", ToolTier.STONE, builder().stackSize(1).maxDamage(131).attackDamage(3.0)));
-    public static final Item STONE_AXE = register(new TieredItem("stone_axe", ToolTier.STONE, builder().stackSize(1).maxDamage(131).attackDamage(9.0)));
-    public static final Item STONE_HOE = register(new TieredItem("stone_hoe", ToolTier.STONE, builder().stackSize(1).maxDamage(131).attackDamage(1.0)));
-    public static final Item GOLDEN_SWORD = register(new TieredItem("golden_sword", ToolTier.GOLDEN, builder().stackSize(1).maxDamage(32).attackDamage(4.0)));
-    public static final Item GOLDEN_SHOVEL = register(new TieredItem("golden_shovel", ToolTier.GOLDEN, builder().stackSize(1).maxDamage(32).attackDamage(2.5)));
-    public static final Item GOLDEN_PICKAXE = register(new TieredItem("golden_pickaxe", ToolTier.GOLDEN, builder().stackSize(1).maxDamage(32).attackDamage(2.0)));
-    public static final Item GOLDEN_AXE = register(new TieredItem("golden_axe", ToolTier.GOLDEN, builder().stackSize(1).maxDamage(32).attackDamage(7.0)));
-    public static final Item GOLDEN_HOE = register(new TieredItem("golden_hoe", ToolTier.GOLDEN, builder().stackSize(1).maxDamage(32).attackDamage(1.0)));
-    public static final Item IRON_SWORD = register(new TieredItem("iron_sword", ToolTier.IRON, builder().stackSize(1).maxDamage(250).attackDamage(6.0)));
-    public static final Item IRON_SHOVEL = register(new TieredItem("iron_shovel", ToolTier.IRON, builder().stackSize(1).maxDamage(250).attackDamage(4.5)));
-    public static final Item IRON_PICKAXE = register(new TieredItem("iron_pickaxe", ToolTier.IRON, builder().stackSize(1).maxDamage(250).attackDamage(4.0)));
-    public static final Item IRON_AXE = register(new TieredItem("iron_axe", ToolTier.IRON, builder().stackSize(1).maxDamage(250).attackDamage(9.0)));
-    public static final Item IRON_HOE = register(new TieredItem("iron_hoe", ToolTier.IRON, builder().stackSize(1).maxDamage(250).attackDamage(1.0)));
-    public static final Item DIAMOND_SWORD = register(new TieredItem("diamond_sword", ToolTier.DIAMOND, builder().stackSize(1).maxDamage(1561).attackDamage(7.0)));
-    public static final Item DIAMOND_SHOVEL = register(new TieredItem("diamond_shovel", ToolTier.DIAMOND, builder().stackSize(1).maxDamage(1561).attackDamage(5.5)));
-    public static final Item DIAMOND_PICKAXE = register(new TieredItem("diamond_pickaxe", ToolTier.DIAMOND, builder().stackSize(1).maxDamage(1561).attackDamage(5.0)));
-    public static final Item DIAMOND_AXE = register(new TieredItem("diamond_axe", ToolTier.DIAMOND, builder().stackSize(1).maxDamage(1561).attackDamage(9.0)));
-    public static final Item DIAMOND_HOE = register(new TieredItem("diamond_hoe", ToolTier.DIAMOND, builder().stackSize(1).maxDamage(1561).attackDamage(1.0)));
-    public static final Item NETHERITE_SWORD = register(new TieredItem("netherite_sword", ToolTier.NETHERITE, builder().stackSize(1).maxDamage(2031).attackDamage(8.0)));
-    public static final Item NETHERITE_SHOVEL = register(new TieredItem("netherite_shovel", ToolTier.NETHERITE, builder().stackSize(1).maxDamage(2031).attackDamage(6.5)));
-    public static final Item NETHERITE_PICKAXE = register(new TieredItem("netherite_pickaxe", ToolTier.NETHERITE, builder().stackSize(1).maxDamage(2031).attackDamage(6.0)));
-    public static final Item NETHERITE_AXE = register(new TieredItem("netherite_axe", ToolTier.NETHERITE, builder().stackSize(1).maxDamage(2031).attackDamage(10.0)));
-    public static final Item NETHERITE_HOE = register(new TieredItem("netherite_hoe", ToolTier.NETHERITE, builder().stackSize(1).maxDamage(2031).attackDamage(1.0)));
+    public static final Item WOODEN_SWORD = register(new Item("wooden_sword", builder().attackDamage(4.0)));
+    public static final Item WOODEN_SHOVEL = register(new Item("wooden_shovel", builder().attackDamage(2.5)));
+    public static final Item WOODEN_PICKAXE = register(new Item("wooden_pickaxe", builder().attackDamage(2.0)));
+    public static final Item WOODEN_AXE = register(new Item("wooden_axe", builder().attackDamage(7.0)));
+    public static final Item WOODEN_HOE = register(new Item("wooden_hoe", builder().attackDamage(1.0)));
+    public static final Item STONE_SWORD = register(new Item("stone_sword", builder().attackDamage(5.0)));
+    public static final Item STONE_SHOVEL = register(new Item("stone_shovel", builder().attackDamage(3.5)));
+    public static final Item STONE_PICKAXE = register(new Item("stone_pickaxe", builder().attackDamage(3.0)));
+    public static final Item STONE_AXE = register(new Item("stone_axe", builder().attackDamage(9.0)));
+    public static final Item STONE_HOE = register(new Item("stone_hoe", builder().attackDamage(1.0)));
+    public static final Item GOLDEN_SWORD = register(new Item("golden_sword", builder().attackDamage(4.0)));
+    public static final Item GOLDEN_SHOVEL = register(new Item("golden_shovel", builder().attackDamage(2.5)));
+    public static final Item GOLDEN_PICKAXE = register(new Item("golden_pickaxe", builder().attackDamage(2.0)));
+    public static final Item GOLDEN_AXE = register(new Item("golden_axe", builder().attackDamage(7.0)));
+    public static final Item GOLDEN_HOE = register(new Item("golden_hoe", builder().attackDamage(1.0)));
+    public static final Item IRON_SWORD = register(new Item("iron_sword", builder().attackDamage(6.0)));
+    public static final Item IRON_SHOVEL = register(new Item("iron_shovel", builder().attackDamage(4.5)));
+    public static final Item IRON_PICKAXE = register(new Item("iron_pickaxe", builder().attackDamage(4.0)));
+    public static final Item IRON_AXE = register(new Item("iron_axe", builder().attackDamage(9.0)));
+    public static final Item IRON_HOE = register(new Item("iron_hoe", builder().attackDamage(1.0)));
+    public static final Item DIAMOND_SWORD = register(new Item("diamond_sword", builder().attackDamage(7.0)));
+    public static final Item DIAMOND_SHOVEL = register(new Item("diamond_shovel", builder().attackDamage(5.5)));
+    public static final Item DIAMOND_PICKAXE = register(new Item("diamond_pickaxe", builder().attackDamage(5.0)));
+    public static final Item DIAMOND_AXE = register(new Item("diamond_axe", builder().attackDamage(9.0)));
+    public static final Item DIAMOND_HOE = register(new Item("diamond_hoe", builder().attackDamage(1.0)));
+    public static final Item NETHERITE_SWORD = register(new Item("netherite_sword", builder().attackDamage(8.0)));
+    public static final Item NETHERITE_SHOVEL = register(new Item("netherite_shovel", builder().attackDamage(6.5)));
+    public static final Item NETHERITE_PICKAXE = register(new Item("netherite_pickaxe", builder().attackDamage(6.0)));
+    public static final Item NETHERITE_AXE = register(new Item("netherite_axe", builder().attackDamage(10.0)));
+    public static final Item NETHERITE_HOE = register(new Item("netherite_hoe", builder().attackDamage(1.0)));
     public static final Item STICK = register(new Item("stick", builder()));
-    public static final Item MUSHROOM_STEW = register(new Item("mushroom_stew", builder().stackSize(1)));
+    public static final Item MUSHROOM_STEW = register(new Item("mushroom_stew", builder()));
     public static final Item STRING = register(new BlockItem("string", builder(), Blocks.TRIPWIRE));
     public static final Item FEATHER = register(new Item("feather", builder()));
     public static final Item GUNPOWDER = register(new Item("gunpowder", builder()));
     public static final Item WHEAT_SEEDS = register(new BlockItem("wheat_seeds", builder(), Blocks.WHEAT));
     public static final Item WHEAT = register(new Item("wheat", builder()));
     public static final Item BREAD = register(new Item("bread", builder()));
-    public static final Item LEATHER_HELMET = register(new DyeableArmorItem("leather_helmet", ArmorMaterial.LEATHER, builder().stackSize(1).maxDamage(55)));
-    public static final Item LEATHER_CHESTPLATE = register(new DyeableArmorItem("leather_chestplate", ArmorMaterial.LEATHER, builder().stackSize(1).maxDamage(80)));
-    public static final Item LEATHER_LEGGINGS = register(new DyeableArmorItem("leather_leggings", ArmorMaterial.LEATHER, builder().stackSize(1).maxDamage(75)));
-    public static final Item LEATHER_BOOTS = register(new DyeableArmorItem("leather_boots", ArmorMaterial.LEATHER, builder().stackSize(1).maxDamage(65)));
-    public static final Item CHAINMAIL_HELMET = register(new ArmorItem("chainmail_helmet", ArmorMaterial.CHAINMAIL, builder().stackSize(1).maxDamage(165)));
-    public static final Item CHAINMAIL_CHESTPLATE = register(new ArmorItem("chainmail_chestplate", ArmorMaterial.CHAINMAIL, builder().stackSize(1).maxDamage(240)));
-    public static final Item CHAINMAIL_LEGGINGS = register(new ArmorItem("chainmail_leggings", ArmorMaterial.CHAINMAIL, builder().stackSize(1).maxDamage(225)));
-    public static final Item CHAINMAIL_BOOTS = register(new ArmorItem("chainmail_boots", ArmorMaterial.CHAINMAIL, builder().stackSize(1).maxDamage(195)));
-    public static final Item IRON_HELMET = register(new ArmorItem("iron_helmet", ArmorMaterial.IRON, builder().stackSize(1).maxDamage(165)));
-    public static final Item IRON_CHESTPLATE = register(new ArmorItem("iron_chestplate", ArmorMaterial.IRON, builder().stackSize(1).maxDamage(240)));
-    public static final Item IRON_LEGGINGS = register(new ArmorItem("iron_leggings", ArmorMaterial.IRON, builder().stackSize(1).maxDamage(225)));
-    public static final Item IRON_BOOTS = register(new ArmorItem("iron_boots", ArmorMaterial.IRON, builder().stackSize(1).maxDamage(195)));
-    public static final Item DIAMOND_HELMET = register(new ArmorItem("diamond_helmet", ArmorMaterial.DIAMOND, builder().stackSize(1).maxDamage(363)));
-    public static final Item DIAMOND_CHESTPLATE = register(new ArmorItem("diamond_chestplate", ArmorMaterial.DIAMOND, builder().stackSize(1).maxDamage(528)));
-    public static final Item DIAMOND_LEGGINGS = register(new ArmorItem("diamond_leggings", ArmorMaterial.DIAMOND, builder().stackSize(1).maxDamage(495)));
-    public static final Item DIAMOND_BOOTS = register(new ArmorItem("diamond_boots", ArmorMaterial.DIAMOND, builder().stackSize(1).maxDamage(429)));
-    public static final Item GOLDEN_HELMET = register(new ArmorItem("golden_helmet", ArmorMaterial.GOLD, builder().stackSize(1).maxDamage(77)));
-    public static final Item GOLDEN_CHESTPLATE = register(new ArmorItem("golden_chestplate", ArmorMaterial.GOLD, builder().stackSize(1).maxDamage(112)));
-    public static final Item GOLDEN_LEGGINGS = register(new ArmorItem("golden_leggings", ArmorMaterial.GOLD, builder().stackSize(1).maxDamage(105)));
-    public static final Item GOLDEN_BOOTS = register(new ArmorItem("golden_boots", ArmorMaterial.GOLD, builder().stackSize(1).maxDamage(91)));
-    public static final Item NETHERITE_HELMET = register(new ArmorItem("netherite_helmet", ArmorMaterial.NETHERITE, builder().stackSize(1).maxDamage(407)));
-    public static final Item NETHERITE_CHESTPLATE = register(new ArmorItem("netherite_chestplate", ArmorMaterial.NETHERITE, builder().stackSize(1).maxDamage(592)));
-    public static final Item NETHERITE_LEGGINGS = register(new ArmorItem("netherite_leggings", ArmorMaterial.NETHERITE, builder().stackSize(1).maxDamage(555)));
-    public static final Item NETHERITE_BOOTS = register(new ArmorItem("netherite_boots", ArmorMaterial.NETHERITE, builder().stackSize(1).maxDamage(481)));
+    public static final Item LEATHER_HELMET = register(new DyeableArmorItem("leather_helmet", ArmorMaterial.LEATHER, builder()));
+    public static final Item LEATHER_CHESTPLATE = register(new DyeableArmorItem("leather_chestplate", ArmorMaterial.LEATHER, builder()));
+    public static final Item LEATHER_LEGGINGS = register(new DyeableArmorItem("leather_leggings", ArmorMaterial.LEATHER, builder()));
+    public static final Item LEATHER_BOOTS = register(new DyeableArmorItem("leather_boots", ArmorMaterial.LEATHER, builder()));
+    public static final Item CHAINMAIL_HELMET = register(new ArmorItem("chainmail_helmet", ArmorMaterial.CHAINMAIL, builder()));
+    public static final Item CHAINMAIL_CHESTPLATE = register(new ArmorItem("chainmail_chestplate", ArmorMaterial.CHAINMAIL, builder()));
+    public static final Item CHAINMAIL_LEGGINGS = register(new ArmorItem("chainmail_leggings", ArmorMaterial.CHAINMAIL, builder()));
+    public static final Item CHAINMAIL_BOOTS = register(new ArmorItem("chainmail_boots", ArmorMaterial.CHAINMAIL, builder()));
+    public static final Item IRON_HELMET = register(new ArmorItem("iron_helmet", ArmorMaterial.IRON, builder()));
+    public static final Item IRON_CHESTPLATE = register(new ArmorItem("iron_chestplate", ArmorMaterial.IRON, builder()));
+    public static final Item IRON_LEGGINGS = register(new ArmorItem("iron_leggings", ArmorMaterial.IRON, builder()));
+    public static final Item IRON_BOOTS = register(new ArmorItem("iron_boots", ArmorMaterial.IRON, builder()));
+    public static final Item DIAMOND_HELMET = register(new ArmorItem("diamond_helmet", ArmorMaterial.DIAMOND, builder()));
+    public static final Item DIAMOND_CHESTPLATE = register(new ArmorItem("diamond_chestplate", ArmorMaterial.DIAMOND, builder()));
+    public static final Item DIAMOND_LEGGINGS = register(new ArmorItem("diamond_leggings", ArmorMaterial.DIAMOND, builder()));
+    public static final Item DIAMOND_BOOTS = register(new ArmorItem("diamond_boots", ArmorMaterial.DIAMOND, builder()));
+    public static final Item GOLDEN_HELMET = register(new ArmorItem("golden_helmet", ArmorMaterial.GOLD, builder()));
+    public static final Item GOLDEN_CHESTPLATE = register(new ArmorItem("golden_chestplate", ArmorMaterial.GOLD, builder()));
+    public static final Item GOLDEN_LEGGINGS = register(new ArmorItem("golden_leggings", ArmorMaterial.GOLD, builder()));
+    public static final Item GOLDEN_BOOTS = register(new ArmorItem("golden_boots", ArmorMaterial.GOLD, builder()));
+    public static final Item NETHERITE_HELMET = register(new ArmorItem("netherite_helmet", ArmorMaterial.NETHERITE, builder()));
+    public static final Item NETHERITE_CHESTPLATE = register(new ArmorItem("netherite_chestplate", ArmorMaterial.NETHERITE, builder()));
+    public static final Item NETHERITE_LEGGINGS = register(new ArmorItem("netherite_leggings", ArmorMaterial.NETHERITE, builder()));
+    public static final Item NETHERITE_BOOTS = register(new ArmorItem("netherite_boots", ArmorMaterial.NETHERITE, builder()));
     public static final Item FLINT = register(new Item("flint", builder()));
     public static final Item PORKCHOP = register(new Item("porkchop", builder()));
     public static final Item COOKED_PORKCHOP = register(new Item("cooked_porkchop", builder()));
     public static final Item PAINTING = register(new Item("painting", builder()));
     public static final Item GOLDEN_APPLE = register(new Item("golden_apple", builder()));
     public static final Item ENCHANTED_GOLDEN_APPLE = register(new Item("enchanted_golden_apple", builder()));
-    public static final Item OAK_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.OAK_SIGN, Blocks.OAK_WALL_SIGN));
-    public static final Item SPRUCE_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.SPRUCE_SIGN, Blocks.SPRUCE_WALL_SIGN));
-    public static final Item BIRCH_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BIRCH_SIGN, Blocks.BIRCH_WALL_SIGN));
-    public static final Item JUNGLE_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.JUNGLE_SIGN, Blocks.JUNGLE_WALL_SIGN));
-    public static final Item ACACIA_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.ACACIA_SIGN, Blocks.ACACIA_WALL_SIGN));
-    public static final Item CHERRY_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CHERRY_SIGN, Blocks.CHERRY_WALL_SIGN));
-    public static final Item DARK_OAK_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.DARK_OAK_SIGN, Blocks.DARK_OAK_WALL_SIGN));
-    public static final Item PALE_OAK_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.PALE_OAK_SIGN, Blocks.PALE_OAK_WALL_SIGN));
-    public static final Item MANGROVE_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.MANGROVE_SIGN, Blocks.MANGROVE_WALL_SIGN));
-    public static final Item BAMBOO_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BAMBOO_SIGN, Blocks.BAMBOO_WALL_SIGN));
-    public static final Item CRIMSON_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CRIMSON_SIGN, Blocks.CRIMSON_WALL_SIGN));
-    public static final Item WARPED_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.WARPED_SIGN, Blocks.WARPED_WALL_SIGN));
-    public static final Item OAK_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.OAK_HANGING_SIGN, Blocks.OAK_WALL_HANGING_SIGN));
-    public static final Item SPRUCE_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.SPRUCE_HANGING_SIGN, Blocks.SPRUCE_WALL_HANGING_SIGN));
-    public static final Item BIRCH_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BIRCH_HANGING_SIGN, Blocks.BIRCH_WALL_HANGING_SIGN));
-    public static final Item JUNGLE_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.JUNGLE_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN));
-    public static final Item ACACIA_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN));
-    public static final Item CHERRY_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN));
-    public static final Item DARK_OAK_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN));
-    public static final Item PALE_OAK_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN));
-    public static final Item MANGROVE_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.MANGROVE_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN));
-    public static final Item BAMBOO_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN));
-    public static final Item CRIMSON_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN));
-    public static final Item WARPED_HANGING_SIGN = register(new BlockItem(builder().stackSize(16), Blocks.WARPED_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN));
-    public static final Item BUCKET = register(new Item("bucket", builder().stackSize(16)));
-    public static final Item WATER_BUCKET = register(new Item("water_bucket", builder().stackSize(1)));
-    public static final Item LAVA_BUCKET = register(new Item("lava_bucket", builder().stackSize(1)));
-    public static final Item POWDER_SNOW_BUCKET = register(new BlockItem("powder_snow_bucket", builder().stackSize(1), Blocks.POWDER_SNOW));
-    public static final Item SNOWBALL = register(new Item("snowball", builder().stackSize(16)));
+    public static final Item OAK_SIGN = register(new BlockItem(builder(), Blocks.OAK_SIGN, Blocks.OAK_WALL_SIGN));
+    public static final Item SPRUCE_SIGN = register(new BlockItem(builder(), Blocks.SPRUCE_SIGN, Blocks.SPRUCE_WALL_SIGN));
+    public static final Item BIRCH_SIGN = register(new BlockItem(builder(), Blocks.BIRCH_SIGN, Blocks.BIRCH_WALL_SIGN));
+    public static final Item JUNGLE_SIGN = register(new BlockItem(builder(), Blocks.JUNGLE_SIGN, Blocks.JUNGLE_WALL_SIGN));
+    public static final Item ACACIA_SIGN = register(new BlockItem(builder(), Blocks.ACACIA_SIGN, Blocks.ACACIA_WALL_SIGN));
+    public static final Item CHERRY_SIGN = register(new BlockItem(builder(), Blocks.CHERRY_SIGN, Blocks.CHERRY_WALL_SIGN));
+    public static final Item DARK_OAK_SIGN = register(new BlockItem(builder(), Blocks.DARK_OAK_SIGN, Blocks.DARK_OAK_WALL_SIGN));
+    public static final Item PALE_OAK_SIGN = register(new BlockItem(builder(), Blocks.PALE_OAK_SIGN, Blocks.PALE_OAK_WALL_SIGN));
+    public static final Item MANGROVE_SIGN = register(new BlockItem(builder(), Blocks.MANGROVE_SIGN, Blocks.MANGROVE_WALL_SIGN));
+    public static final Item BAMBOO_SIGN = register(new BlockItem(builder(), Blocks.BAMBOO_SIGN, Blocks.BAMBOO_WALL_SIGN));
+    public static final Item CRIMSON_SIGN = register(new BlockItem(builder(), Blocks.CRIMSON_SIGN, Blocks.CRIMSON_WALL_SIGN));
+    public static final Item WARPED_SIGN = register(new BlockItem(builder(), Blocks.WARPED_SIGN, Blocks.WARPED_WALL_SIGN));
+    public static final Item OAK_HANGING_SIGN = register(new BlockItem(builder(), Blocks.OAK_HANGING_SIGN, Blocks.OAK_WALL_HANGING_SIGN));
+    public static final Item SPRUCE_HANGING_SIGN = register(new BlockItem(builder(), Blocks.SPRUCE_HANGING_SIGN, Blocks.SPRUCE_WALL_HANGING_SIGN));
+    public static final Item BIRCH_HANGING_SIGN = register(new BlockItem(builder(), Blocks.BIRCH_HANGING_SIGN, Blocks.BIRCH_WALL_HANGING_SIGN));
+    public static final Item JUNGLE_HANGING_SIGN = register(new BlockItem(builder(), Blocks.JUNGLE_HANGING_SIGN, Blocks.JUNGLE_WALL_HANGING_SIGN));
+    public static final Item ACACIA_HANGING_SIGN = register(new BlockItem(builder(), Blocks.ACACIA_HANGING_SIGN, Blocks.ACACIA_WALL_HANGING_SIGN));
+    public static final Item CHERRY_HANGING_SIGN = register(new BlockItem(builder(), Blocks.CHERRY_HANGING_SIGN, Blocks.CHERRY_WALL_HANGING_SIGN));
+    public static final Item DARK_OAK_HANGING_SIGN = register(new BlockItem(builder(), Blocks.DARK_OAK_HANGING_SIGN, Blocks.DARK_OAK_WALL_HANGING_SIGN));
+    public static final Item PALE_OAK_HANGING_SIGN = register(new BlockItem(builder(), Blocks.PALE_OAK_HANGING_SIGN, Blocks.PALE_OAK_WALL_HANGING_SIGN));
+    public static final Item MANGROVE_HANGING_SIGN = register(new BlockItem(builder(), Blocks.MANGROVE_HANGING_SIGN, Blocks.MANGROVE_WALL_HANGING_SIGN));
+    public static final Item BAMBOO_HANGING_SIGN = register(new BlockItem(builder(), Blocks.BAMBOO_HANGING_SIGN, Blocks.BAMBOO_WALL_HANGING_SIGN));
+    public static final Item CRIMSON_HANGING_SIGN = register(new BlockItem(builder(), Blocks.CRIMSON_HANGING_SIGN, Blocks.CRIMSON_WALL_HANGING_SIGN));
+    public static final Item WARPED_HANGING_SIGN = register(new BlockItem(builder(), Blocks.WARPED_HANGING_SIGN, Blocks.WARPED_WALL_HANGING_SIGN));
+    public static final Item BUCKET = register(new Item("bucket", builder()));
+    public static final Item WATER_BUCKET = register(new Item("water_bucket", builder()));
+    public static final Item LAVA_BUCKET = register(new Item("lava_bucket", builder()));
+    public static final Item POWDER_SNOW_BUCKET = register(new BlockItem("powder_snow_bucket", builder(), Blocks.POWDER_SNOW));
+    public static final Item SNOWBALL = register(new Item("snowball", builder()));
     public static final Item LEATHER = register(new Item("leather", builder()));
-    public static final Item MILK_BUCKET = register(new Item("milk_bucket", builder().stackSize(1)));
-    public static final Item PUFFERFISH_BUCKET = register(new Item("pufferfish_bucket", builder().stackSize(1)));
-    public static final Item SALMON_BUCKET = register(new Item("salmon_bucket", builder().stackSize(1)));
-    public static final Item COD_BUCKET = register(new Item("cod_bucket", builder().stackSize(1)));
-    public static final Item TROPICAL_FISH_BUCKET = register(new TropicalFishBucketItem("tropical_fish_bucket", builder().stackSize(1)));
-    public static final Item AXOLOTL_BUCKET = register(new AxolotlBucketItem("axolotl_bucket", builder().stackSize(1)));
-    public static final Item TADPOLE_BUCKET = register(new Item("tadpole_bucket", builder().stackSize(1)));
+    public static final Item MILK_BUCKET = register(new Item("milk_bucket", builder()));
+    public static final Item PUFFERFISH_BUCKET = register(new Item("pufferfish_bucket", builder()));
+    public static final Item SALMON_BUCKET = register(new Item("salmon_bucket", builder()));
+    public static final Item COD_BUCKET = register(new Item("cod_bucket", builder()));
+    public static final Item TROPICAL_FISH_BUCKET = register(new TropicalFishBucketItem("tropical_fish_bucket", builder()));
+    public static final Item AXOLOTL_BUCKET = register(new AxolotlBucketItem("axolotl_bucket", builder()));
+    public static final Item TADPOLE_BUCKET = register(new Item("tadpole_bucket", builder()));
     public static final Item BRICK = register(new Item("brick", builder()));
     public static final Item CLAY_BALL = register(new Item("clay_ball", builder()));
     public static final Item DRIED_KELP_BLOCK = register(new BlockItem(builder(), Blocks.DRIED_KELP_BLOCK));
     public static final Item PAPER = register(new Item("paper", builder()));
     public static final Item BOOK = register(new Item("book", builder()));
     public static final Item SLIME_BALL = register(new Item("slime_ball", builder()));
-    public static final Item EGG = register(new Item("egg", builder().stackSize(16)));
+    public static final Item EGG = register(new Item("egg", builder()));
     public static final Item COMPASS = register(new CompassItem("compass", builder()));
     public static final Item RECOVERY_COMPASS = register(new Item("recovery_compass", builder()));
-    public static final Item BUNDLE = register(new Item("bundle", builder().stackSize(1)));
-    public static final Item WHITE_BUNDLE = register(new Item("white_bundle", builder().stackSize(1)));
-    public static final Item ORANGE_BUNDLE = register(new Item("orange_bundle", builder().stackSize(1)));
-    public static final Item MAGENTA_BUNDLE = register(new Item("magenta_bundle", builder().stackSize(1)));
-    public static final Item LIGHT_BLUE_BUNDLE = register(new Item("light_blue_bundle", builder().stackSize(1)));
-    public static final Item YELLOW_BUNDLE = register(new Item("yellow_bundle", builder().stackSize(1)));
-    public static final Item LIME_BUNDLE = register(new Item("lime_bundle", builder().stackSize(1)));
-    public static final Item PINK_BUNDLE = register(new Item("pink_bundle", builder().stackSize(1)));
-    public static final Item GRAY_BUNDLE = register(new Item("gray_bundle", builder().stackSize(1)));
-    public static final Item LIGHT_GRAY_BUNDLE = register(new Item("light_gray_bundle", builder().stackSize(1)));
-    public static final Item CYAN_BUNDLE = register(new Item("cyan_bundle", builder().stackSize(1)));
-    public static final Item PURPLE_BUNDLE = register(new Item("purple_bundle", builder().stackSize(1)));
-    public static final Item BLUE_BUNDLE = register(new Item("blue_bundle", builder().stackSize(1)));
-    public static final Item BROWN_BUNDLE = register(new Item("brown_bundle", builder().stackSize(1)));
-    public static final Item GREEN_BUNDLE = register(new Item("green_bundle", builder().stackSize(1)));
-    public static final Item RED_BUNDLE = register(new Item("red_bundle", builder().stackSize(1)));
-    public static final Item BLACK_BUNDLE = register(new Item("black_bundle", builder().stackSize(1)));
-    public static final Item FISHING_ROD = register(new FishingRodItem("fishing_rod", builder().stackSize(1).maxDamage(64)));
+    public static final Item BUNDLE = register(new Item("bundle", builder()));
+    public static final Item WHITE_BUNDLE = register(new Item("white_bundle", builder()));
+    public static final Item ORANGE_BUNDLE = register(new Item("orange_bundle", builder()));
+    public static final Item MAGENTA_BUNDLE = register(new Item("magenta_bundle", builder()));
+    public static final Item LIGHT_BLUE_BUNDLE = register(new Item("light_blue_bundle", builder()));
+    public static final Item YELLOW_BUNDLE = register(new Item("yellow_bundle", builder()));
+    public static final Item LIME_BUNDLE = register(new Item("lime_bundle", builder()));
+    public static final Item PINK_BUNDLE = register(new Item("pink_bundle", builder()));
+    public static final Item GRAY_BUNDLE = register(new Item("gray_bundle", builder()));
+    public static final Item LIGHT_GRAY_BUNDLE = register(new Item("light_gray_bundle", builder()));
+    public static final Item CYAN_BUNDLE = register(new Item("cyan_bundle", builder()));
+    public static final Item PURPLE_BUNDLE = register(new Item("purple_bundle", builder()));
+    public static final Item BLUE_BUNDLE = register(new Item("blue_bundle", builder()));
+    public static final Item BROWN_BUNDLE = register(new Item("brown_bundle", builder()));
+    public static final Item GREEN_BUNDLE = register(new Item("green_bundle", builder()));
+    public static final Item RED_BUNDLE = register(new Item("red_bundle", builder()));
+    public static final Item BLACK_BUNDLE = register(new Item("black_bundle", builder()));
+    public static final Item FISHING_ROD = register(new FishingRodItem("fishing_rod", builder()));
     public static final Item CLOCK = register(new Item("clock", builder()));
-    public static final Item SPYGLASS = register(new Item("spyglass", builder().stackSize(1)));
+    public static final Item SPYGLASS = register(new Item("spyglass", builder()));
     public static final Item GLOWSTONE_DUST = register(new Item("glowstone_dust", builder()));
     public static final Item COD = register(new Item("cod", builder()));
     public static final Item SALMON = register(new Item("salmon", builder()));
@@ -1078,27 +1087,27 @@ public final class Items {
     public static final Item BONE_MEAL = register(new Item("bone_meal", builder()));
     public static final Item BONE = register(new Item("bone", builder()));
     public static final Item SUGAR = register(new Item("sugar", builder()));
-    public static final Item CAKE = register(new BlockItem(builder().stackSize(1), Blocks.CAKE));
-    public static final Item WHITE_BED = register(new BlockItem(builder().stackSize(1), Blocks.WHITE_BED));
-    public static final Item ORANGE_BED = register(new BlockItem(builder().stackSize(1), Blocks.ORANGE_BED));
-    public static final Item MAGENTA_BED = register(new BlockItem(builder().stackSize(1), Blocks.MAGENTA_BED));
-    public static final Item LIGHT_BLUE_BED = register(new BlockItem(builder().stackSize(1), Blocks.LIGHT_BLUE_BED));
-    public static final Item YELLOW_BED = register(new BlockItem(builder().stackSize(1), Blocks.YELLOW_BED));
-    public static final Item LIME_BED = register(new BlockItem(builder().stackSize(1), Blocks.LIME_BED));
-    public static final Item PINK_BED = register(new BlockItem(builder().stackSize(1), Blocks.PINK_BED));
-    public static final Item GRAY_BED = register(new BlockItem(builder().stackSize(1), Blocks.GRAY_BED));
-    public static final Item LIGHT_GRAY_BED = register(new BlockItem(builder().stackSize(1), Blocks.LIGHT_GRAY_BED));
-    public static final Item CYAN_BED = register(new BlockItem(builder().stackSize(1), Blocks.CYAN_BED));
-    public static final Item PURPLE_BED = register(new BlockItem(builder().stackSize(1), Blocks.PURPLE_BED));
-    public static final Item BLUE_BED = register(new BlockItem(builder().stackSize(1), Blocks.BLUE_BED));
-    public static final Item BROWN_BED = register(new BlockItem(builder().stackSize(1), Blocks.BROWN_BED));
-    public static final Item GREEN_BED = register(new BlockItem(builder().stackSize(1), Blocks.GREEN_BED));
-    public static final Item RED_BED = register(new BlockItem(builder().stackSize(1), Blocks.RED_BED));
-    public static final Item BLACK_BED = register(new BlockItem(builder().stackSize(1), Blocks.BLACK_BED));
+    public static final Item CAKE = register(new BlockItem(builder(), Blocks.CAKE));
+    public static final Item WHITE_BED = register(new BlockItem(builder(), Blocks.WHITE_BED));
+    public static final Item ORANGE_BED = register(new BlockItem(builder(), Blocks.ORANGE_BED));
+    public static final Item MAGENTA_BED = register(new BlockItem(builder(), Blocks.MAGENTA_BED));
+    public static final Item LIGHT_BLUE_BED = register(new BlockItem(builder(), Blocks.LIGHT_BLUE_BED));
+    public static final Item YELLOW_BED = register(new BlockItem(builder(), Blocks.YELLOW_BED));
+    public static final Item LIME_BED = register(new BlockItem(builder(), Blocks.LIME_BED));
+    public static final Item PINK_BED = register(new BlockItem(builder(), Blocks.PINK_BED));
+    public static final Item GRAY_BED = register(new BlockItem(builder(), Blocks.GRAY_BED));
+    public static final Item LIGHT_GRAY_BED = register(new BlockItem(builder(), Blocks.LIGHT_GRAY_BED));
+    public static final Item CYAN_BED = register(new BlockItem(builder(), Blocks.CYAN_BED));
+    public static final Item PURPLE_BED = register(new BlockItem(builder(), Blocks.PURPLE_BED));
+    public static final Item BLUE_BED = register(new BlockItem(builder(), Blocks.BLUE_BED));
+    public static final Item BROWN_BED = register(new BlockItem(builder(), Blocks.BROWN_BED));
+    public static final Item GREEN_BED = register(new BlockItem(builder(), Blocks.GREEN_BED));
+    public static final Item RED_BED = register(new BlockItem(builder(), Blocks.RED_BED));
+    public static final Item BLACK_BED = register(new BlockItem(builder(), Blocks.BLACK_BED));
     public static final Item COOKIE = register(new Item("cookie", builder()));
     public static final Item CRAFTER = register(new BlockItem(builder(), Blocks.CRAFTER));
     public static final Item FILLED_MAP = register(new FilledMapItem("filled_map", builder()));
-    public static final Item SHEARS = register(new Item("shears", builder().stackSize(1).maxDamage(238)));
+    public static final Item SHEARS = register(new Item("shears", builder()));
     public static final Item MELON_SLICE = register(new Item("melon_slice", builder()));
     public static final Item DRIED_KELP = register(new Item("dried_kelp", builder()));
     public static final Item PUMPKIN_SEEDS = register(new BlockItem("pumpkin_seeds", builder(), Blocks.PUMPKIN_STEM));
@@ -1108,19 +1117,19 @@ public final class Items {
     public static final Item CHICKEN = register(new Item("chicken", builder()));
     public static final Item COOKED_CHICKEN = register(new Item("cooked_chicken", builder()));
     public static final Item ROTTEN_FLESH = register(new Item("rotten_flesh", builder()));
-    public static final Item ENDER_PEARL = register(new Item("ender_pearl", builder().stackSize(16)));
+    public static final Item ENDER_PEARL = register(new Item("ender_pearl", builder()));
     public static final Item BLAZE_ROD = register(new Item("blaze_rod", builder()));
     public static final Item GHAST_TEAR = register(new Item("ghast_tear", builder()));
     public static final Item GOLD_NUGGET = register(new Item("gold_nugget", builder()));
     public static final Item NETHER_WART = register(new BlockItem(builder(), Blocks.NETHER_WART));
     public static final Item GLASS_BOTTLE = register(new Item("glass_bottle", builder()));
-    public static final Item POTION = register(new PotionItem("potion", builder().stackSize(1)));
+    public static final Item POTION = register(new PotionItem("potion", builder()));
     public static final Item SPIDER_EYE = register(new Item("spider_eye", builder()));
     public static final Item FERMENTED_SPIDER_EYE = register(new Item("fermented_spider_eye", builder()));
     public static final Item BLAZE_POWDER = register(new Item("blaze_powder", builder()));
     public static final Item MAGMA_CREAM = register(new Item("magma_cream", builder()));
     public static final Item BREWING_STAND = register(new BlockItem(builder(), Blocks.BREWING_STAND));
-    public static final Item CAULDRON = register(new BlockItem(builder(), Blocks.CAULDRON, Blocks.LAVA_CAULDRON, Blocks.WATER_CAULDRON, Blocks.POWDER_SNOW_CAULDRON));
+    public static final Item CAULDRON = register(new BlockItem(builder(), Blocks.CAULDRON, Blocks.POWDER_SNOW_CAULDRON, Blocks.LAVA_CAULDRON, Blocks.WATER_CAULDRON));
     public static final Item ENDER_EYE = register(new Item("ender_eye", builder()));
     public static final Item GLISTERING_MELON_SLICE = register(new Item("glistering_melon_slice", builder()));
     public static final Item ARMADILLO_SPAWN_EGG = register(new SpawnEggItem("armadillo_spawn_egg", builder()));
@@ -1207,10 +1216,10 @@ public final class Items {
     public static final Item EXPERIENCE_BOTTLE = register(new Item("experience_bottle", builder()));
     public static final Item FIRE_CHARGE = register(new Item("fire_charge", builder()));
     public static final Item WIND_CHARGE = register(new Item("wind_charge", builder()));
-    public static final Item WRITABLE_BOOK = register(new WritableBookItem("writable_book", builder().stackSize(1)));
-    public static final Item WRITTEN_BOOK = register(new WrittenBookItem("written_book", builder().stackSize(16)));
+    public static final Item WRITABLE_BOOK = register(new WritableBookItem("writable_book", builder()));
+    public static final Item WRITTEN_BOOK = register(new WrittenBookItem("written_book", builder()));
     public static final Item BREEZE_ROD = register(new Item("breeze_rod", builder()));
-    public static final Item MACE = register(new MaceItem("mace", builder().stackSize(1).maxDamage(500)));
+    public static final Item MACE = register(new MaceItem("mace", builder()));
     public static final Item ITEM_FRAME = register(new Item("item_frame", builder()));
     public static final Item GLOW_ITEM_FRAME = register(new Item("glow_item_frame", builder()));
     public static final Item FLOWER_POT = register(new BlockItem(builder(), Blocks.FLOWER_POT));
@@ -1231,41 +1240,42 @@ public final class Items {
     public static final Item PUMPKIN_PIE = register(new Item("pumpkin_pie", builder()));
     public static final Item FIREWORK_ROCKET = register(new FireworkRocketItem("firework_rocket", builder()));
     public static final Item FIREWORK_STAR = register(new FireworkStarItem("firework_star", builder()));
-    public static final Item ENCHANTED_BOOK = register(new EnchantedBookItem("enchanted_book", builder().stackSize(1)));
+    public static final Item ENCHANTED_BOOK = register(new EnchantedBookItem("enchanted_book", builder()));
     public static final Item NETHER_BRICK = register(new Item("nether_brick", builder()));
+    public static final Item RESIN_BRICK = register(new Item("resin_brick", builder()));
     public static final Item PRISMARINE_SHARD = register(new Item("prismarine_shard", builder()));
     public static final Item PRISMARINE_CRYSTALS = register(new Item("prismarine_crystals", builder()));
     public static final Item RABBIT = register(new Item("rabbit", builder()));
     public static final Item COOKED_RABBIT = register(new Item("cooked_rabbit", builder()));
-    public static final Item RABBIT_STEW = register(new Item("rabbit_stew", builder().stackSize(1)));
+    public static final Item RABBIT_STEW = register(new Item("rabbit_stew", builder()));
     public static final Item RABBIT_FOOT = register(new Item("rabbit_foot", builder()));
     public static final Item RABBIT_HIDE = register(new Item("rabbit_hide", builder()));
-    public static final Item ARMOR_STAND = register(new Item("armor_stand", builder().stackSize(16)));
-    public static final Item IRON_HORSE_ARMOR = register(new Item("iron_horse_armor", builder().stackSize(1)));
-    public static final Item GOLDEN_HORSE_ARMOR = register(new Item("golden_horse_armor", builder().stackSize(1)));
-    public static final Item DIAMOND_HORSE_ARMOR = register(new Item("diamond_horse_armor", builder().stackSize(1)));
-    public static final Item LEATHER_HORSE_ARMOR = register(new DyeableArmorItem("leather_horse_armor", ArmorMaterial.LEATHER, builder().stackSize(1)));
+    public static final Item ARMOR_STAND = register(new Item("armor_stand", builder()));
+    public static final Item IRON_HORSE_ARMOR = register(new Item("iron_horse_armor", builder()));
+    public static final Item GOLDEN_HORSE_ARMOR = register(new Item("golden_horse_armor", builder()));
+    public static final Item DIAMOND_HORSE_ARMOR = register(new Item("diamond_horse_armor", builder()));
+    public static final Item LEATHER_HORSE_ARMOR = register(new Item("leather_horse_armor", builder()));
     public static final Item LEAD = register(new Item("lead", builder()));
     public static final Item NAME_TAG = register(new Item("name_tag", builder()));
-    public static final Item COMMAND_BLOCK_MINECART = register(new Item("command_block_minecart", builder().stackSize(1)));
+    public static final Item COMMAND_BLOCK_MINECART = register(new Item("command_block_minecart", builder()));
     public static final Item MUTTON = register(new Item("mutton", builder()));
     public static final Item COOKED_MUTTON = register(new Item("cooked_mutton", builder()));
-    public static final Item WHITE_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.WHITE_BANNER, Blocks.WHITE_WALL_BANNER));
-    public static final Item ORANGE_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.ORANGE_BANNER, Blocks.ORANGE_WALL_BANNER));
-    public static final Item MAGENTA_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.MAGENTA_BANNER, Blocks.MAGENTA_WALL_BANNER));
-    public static final Item LIGHT_BLUE_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.LIGHT_BLUE_BANNER, Blocks.LIGHT_BLUE_WALL_BANNER));
-    public static final Item YELLOW_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.YELLOW_BANNER, Blocks.YELLOW_WALL_BANNER));
-    public static final Item LIME_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.LIME_BANNER, Blocks.LIME_WALL_BANNER));
-    public static final Item PINK_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.PINK_BANNER, Blocks.PINK_WALL_BANNER));
-    public static final Item GRAY_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.GRAY_BANNER, Blocks.GRAY_WALL_BANNER));
-    public static final Item LIGHT_GRAY_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.LIGHT_GRAY_BANNER, Blocks.LIGHT_GRAY_WALL_BANNER));
-    public static final Item CYAN_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.CYAN_BANNER, Blocks.CYAN_WALL_BANNER));
-    public static final Item PURPLE_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.PURPLE_BANNER, Blocks.PURPLE_WALL_BANNER));
-    public static final Item BLUE_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.BLUE_BANNER, Blocks.BLUE_WALL_BANNER));
-    public static final Item BROWN_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.BROWN_BANNER, Blocks.BROWN_WALL_BANNER));
-    public static final Item GREEN_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.GREEN_BANNER, Blocks.GREEN_WALL_BANNER));
-    public static final Item RED_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.RED_BANNER, Blocks.RED_WALL_BANNER));
-    public static final Item BLACK_BANNER = register(new BannerItem(builder().stackSize(16), Blocks.BLACK_BANNER, Blocks.BLACK_WALL_BANNER));
+    public static final Item WHITE_BANNER = register(new BannerItem(builder(), Blocks.WHITE_BANNER, Blocks.WHITE_WALL_BANNER));
+    public static final Item ORANGE_BANNER = register(new BannerItem(builder(), Blocks.ORANGE_BANNER, Blocks.ORANGE_WALL_BANNER));
+    public static final Item MAGENTA_BANNER = register(new BannerItem(builder(), Blocks.MAGENTA_BANNER, Blocks.MAGENTA_WALL_BANNER));
+    public static final Item LIGHT_BLUE_BANNER = register(new BannerItem(builder(), Blocks.LIGHT_BLUE_BANNER, Blocks.LIGHT_BLUE_WALL_BANNER));
+    public static final Item YELLOW_BANNER = register(new BannerItem(builder(), Blocks.YELLOW_BANNER, Blocks.YELLOW_WALL_BANNER));
+    public static final Item LIME_BANNER = register(new BannerItem(builder(), Blocks.LIME_BANNER, Blocks.LIME_WALL_BANNER));
+    public static final Item PINK_BANNER = register(new BannerItem(builder(), Blocks.PINK_BANNER, Blocks.PINK_WALL_BANNER));
+    public static final Item GRAY_BANNER = register(new BannerItem(builder(), Blocks.GRAY_BANNER, Blocks.GRAY_WALL_BANNER));
+    public static final Item LIGHT_GRAY_BANNER = register(new BannerItem(builder(), Blocks.LIGHT_GRAY_BANNER, Blocks.LIGHT_GRAY_WALL_BANNER));
+    public static final Item CYAN_BANNER = register(new BannerItem(builder(), Blocks.CYAN_BANNER, Blocks.CYAN_WALL_BANNER));
+    public static final Item PURPLE_BANNER = register(new BannerItem(builder(), Blocks.PURPLE_BANNER, Blocks.PURPLE_WALL_BANNER));
+    public static final Item BLUE_BANNER = register(new BannerItem(builder(), Blocks.BLUE_BANNER, Blocks.BLUE_WALL_BANNER));
+    public static final Item BROWN_BANNER = register(new BannerItem(builder(), Blocks.BROWN_BANNER, Blocks.BROWN_WALL_BANNER));
+    public static final Item GREEN_BANNER = register(new BannerItem(builder(), Blocks.GREEN_BANNER, Blocks.GREEN_WALL_BANNER));
+    public static final Item RED_BANNER = register(new BannerItem(builder(), Blocks.RED_BANNER, Blocks.RED_WALL_BANNER));
+    public static final Item BLACK_BANNER = register(new BannerItem(builder(), Blocks.BLACK_BANNER, Blocks.BLACK_WALL_BANNER));
     public static final Item END_CRYSTAL = register(new Item("end_crystal", builder()));
     public static final Item CHORUS_FRUIT = register(new Item("chorus_fruit", builder()));
     public static final Item POPPED_CHORUS_FRUIT = register(new Item("popped_chorus_fruit", builder()));
@@ -1273,55 +1283,55 @@ public final class Items {
     public static final Item PITCHER_POD = register(new BlockItem("pitcher_pod", builder(), Blocks.PITCHER_CROP));
     public static final Item BEETROOT = register(new Item("beetroot", builder()));
     public static final Item BEETROOT_SEEDS = register(new BlockItem("beetroot_seeds", builder(), Blocks.BEETROOTS));
-    public static final Item BEETROOT_SOUP = register(new Item("beetroot_soup", builder().stackSize(1)));
+    public static final Item BEETROOT_SOUP = register(new Item("beetroot_soup", builder()));
     public static final Item DRAGON_BREATH = register(new Item("dragon_breath", builder()));
-    public static final Item SPLASH_POTION = register(new PotionItem("splash_potion", builder().stackSize(1)));
+    public static final Item SPLASH_POTION = register(new PotionItem("splash_potion", builder()));
     public static final Item SPECTRAL_ARROW = register(new Item("spectral_arrow", builder()));
     public static final Item TIPPED_ARROW = register(new TippedArrowItem("tipped_arrow", builder()));
-    public static final Item LINGERING_POTION = register(new PotionItem("lingering_potion", builder().stackSize(1)));
-    public static final Item SHIELD = register(new ShieldItem("shield", builder().stackSize(1).maxDamage(336)));
-    public static final Item TOTEM_OF_UNDYING = register(new Item("totem_of_undying", builder().stackSize(1)));
+    public static final Item LINGERING_POTION = register(new PotionItem("lingering_potion", builder()));
+    public static final Item SHIELD = register(new ShieldItem("shield", builder()));
+    public static final Item TOTEM_OF_UNDYING = register(new Item("totem_of_undying", builder()));
     public static final Item SHULKER_SHELL = register(new Item("shulker_shell", builder()));
     public static final Item IRON_NUGGET = register(new Item("iron_nugget", builder()));
-    public static final Item KNOWLEDGE_BOOK = register(new Item("knowledge_book", builder().stackSize(1)));
-    public static final Item DEBUG_STICK = register(new Item("debug_stick", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_13 = register(new Item("music_disc_13", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_CAT = register(new Item("music_disc_cat", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_BLOCKS = register(new Item("music_disc_blocks", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_CHIRP = register(new Item("music_disc_chirp", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_CREATOR = register(new Item("music_disc_creator", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_CREATOR_MUSIC_BOX = register(new Item("music_disc_creator_music_box", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_FAR = register(new Item("music_disc_far", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_MALL = register(new Item("music_disc_mall", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_MELLOHI = register(new Item("music_disc_mellohi", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_STAL = register(new Item("music_disc_stal", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_STRAD = register(new Item("music_disc_strad", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_WARD = register(new Item("music_disc_ward", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_11 = register(new Item("music_disc_11", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_WAIT = register(new Item("music_disc_wait", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_OTHERSIDE = register(new Item("music_disc_otherside", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_RELIC = register(new Item("music_disc_relic", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_5 = register(new Item("music_disc_5", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_PIGSTEP = register(new Item("music_disc_pigstep", builder().stackSize(1)));
-    public static final Item MUSIC_DISC_PRECIPICE = register(new Item("music_disc_precipice", builder().stackSize(1)));
+    public static final Item KNOWLEDGE_BOOK = register(new Item("knowledge_book", builder()));
+    public static final Item DEBUG_STICK = register(new Item("debug_stick", builder()));
+    public static final Item MUSIC_DISC_13 = register(new Item("music_disc_13", builder()));
+    public static final Item MUSIC_DISC_CAT = register(new Item("music_disc_cat", builder()));
+    public static final Item MUSIC_DISC_BLOCKS = register(new Item("music_disc_blocks", builder()));
+    public static final Item MUSIC_DISC_CHIRP = register(new Item("music_disc_chirp", builder()));
+    public static final Item MUSIC_DISC_CREATOR = register(new Item("music_disc_creator", builder()));
+    public static final Item MUSIC_DISC_CREATOR_MUSIC_BOX = register(new Item("music_disc_creator_music_box", builder()));
+    public static final Item MUSIC_DISC_FAR = register(new Item("music_disc_far", builder()));
+    public static final Item MUSIC_DISC_MALL = register(new Item("music_disc_mall", builder()));
+    public static final Item MUSIC_DISC_MELLOHI = register(new Item("music_disc_mellohi", builder()));
+    public static final Item MUSIC_DISC_STAL = register(new Item("music_disc_stal", builder()));
+    public static final Item MUSIC_DISC_STRAD = register(new Item("music_disc_strad", builder()));
+    public static final Item MUSIC_DISC_WARD = register(new Item("music_disc_ward", builder()));
+    public static final Item MUSIC_DISC_11 = register(new Item("music_disc_11", builder()));
+    public static final Item MUSIC_DISC_WAIT = register(new Item("music_disc_wait", builder()));
+    public static final Item MUSIC_DISC_OTHERSIDE = register(new Item("music_disc_otherside", builder()));
+    public static final Item MUSIC_DISC_RELIC = register(new Item("music_disc_relic", builder()));
+    public static final Item MUSIC_DISC_5 = register(new Item("music_disc_5", builder()));
+    public static final Item MUSIC_DISC_PIGSTEP = register(new Item("music_disc_pigstep", builder()));
+    public static final Item MUSIC_DISC_PRECIPICE = register(new Item("music_disc_precipice", builder()));
     public static final Item DISC_FRAGMENT_5 = register(new Item("disc_fragment_5", builder()));
-    public static final Item TRIDENT = register(new Item("trident", builder().stackSize(1).maxDamage(250).attackDamage(9.0)));
+    public static final Item TRIDENT = register(new Item("trident", builder().attackDamage(9.0)));
     public static final Item NAUTILUS_SHELL = register(new Item("nautilus_shell", builder()));
     public static final Item HEART_OF_THE_SEA = register(new Item("heart_of_the_sea", builder()));
-    public static final Item CROSSBOW = register(new CrossbowItem("crossbow", builder().stackSize(1).maxDamage(465)));
-    public static final Item SUSPICIOUS_STEW = register(new Item("suspicious_stew", builder().stackSize(1)));
+    public static final Item CROSSBOW = register(new CrossbowItem("crossbow", builder()));
+    public static final Item SUSPICIOUS_STEW = register(new Item("suspicious_stew", builder()));
     public static final Item LOOM = register(new BlockItem(builder(), Blocks.LOOM));
-    public static final Item FLOWER_BANNER_PATTERN = register(new Item("flower_banner_pattern", builder().stackSize(1)));
-    public static final Item CREEPER_BANNER_PATTERN = register(new Item("creeper_banner_pattern", builder().stackSize(1)));
-    public static final Item SKULL_BANNER_PATTERN = register(new Item("skull_banner_pattern", builder().stackSize(1)));
-    public static final Item MOJANG_BANNER_PATTERN = register(new Item("mojang_banner_pattern", builder().stackSize(1)));
-    public static final Item GLOBE_BANNER_PATTERN = register(new Item("globe_banner_pattern", builder().stackSize(1)));
-    public static final Item PIGLIN_BANNER_PATTERN = register(new Item("piglin_banner_pattern", builder().stackSize(1)));
-    public static final Item FLOW_BANNER_PATTERN = register(new Item("flow_banner_pattern", builder().stackSize(1)));
-    public static final Item GUSTER_BANNER_PATTERN = register(new Item("guster_banner_pattern", builder().stackSize(1)));
-    public static final Item FIELD_MASONED_BANNER_PATTERN = register(new Item("field_masoned_banner_pattern", builder().stackSize(1)));
-    public static final Item BORDURE_INDENTED_BANNER_PATTERN = register(new Item("bordure_indented_banner_pattern", builder().stackSize(1)));
-    public static final Item GOAT_HORN = register(new GoatHornItem("goat_horn", builder().stackSize(1)));
+    public static final Item FLOWER_BANNER_PATTERN = register(new Item("flower_banner_pattern", builder()));
+    public static final Item CREEPER_BANNER_PATTERN = register(new Item("creeper_banner_pattern", builder()));
+    public static final Item SKULL_BANNER_PATTERN = register(new Item("skull_banner_pattern", builder()));
+    public static final Item MOJANG_BANNER_PATTERN = register(new Item("mojang_banner_pattern", builder()));
+    public static final Item GLOBE_BANNER_PATTERN = register(new Item("globe_banner_pattern", builder()));
+    public static final Item PIGLIN_BANNER_PATTERN = register(new Item("piglin_banner_pattern", builder()));
+    public static final Item FLOW_BANNER_PATTERN = register(new Item("flow_banner_pattern", builder()));
+    public static final Item GUSTER_BANNER_PATTERN = register(new Item("guster_banner_pattern", builder()));
+    public static final Item FIELD_MASONED_BANNER_PATTERN = register(new Item("field_masoned_banner_pattern", builder()));
+    public static final Item BORDURE_INDENTED_BANNER_PATTERN = register(new Item("bordure_indented_banner_pattern", builder()));
+    public static final Item GOAT_HORN = register(new GoatHornItem("goat_horn", builder()));
     public static final Item COMPOSTER = register(new BlockItem(builder(), Blocks.COMPOSTER));
     public static final Item BARREL = register(new BlockItem(builder(), Blocks.BARREL));
     public static final Item SMOKER = register(new BlockItem(builder(), Blocks.SMOKER));
@@ -1342,7 +1352,7 @@ public final class Items {
     public static final Item HONEYCOMB = register(new Item("honeycomb", builder()));
     public static final Item BEE_NEST = register(new BlockItem(builder(), Blocks.BEE_NEST));
     public static final Item BEEHIVE = register(new BlockItem(builder(), Blocks.BEEHIVE));
-    public static final Item HONEY_BOTTLE = register(new Item("honey_bottle", builder().stackSize(16)));
+    public static final Item HONEY_BOTTLE = register(new Item("honey_bottle", builder()));
     public static final Item HONEYCOMB_BLOCK = register(new BlockItem(builder(), Blocks.HONEYCOMB_BLOCK));
     public static final Item LODESTONE = register(new BlockItem(builder(), Blocks.LODESTONE));
     public static final Item CRYING_OBSIDIAN = register(new BlockItem(builder(), Blocks.CRYING_OBSIDIAN));
@@ -1386,7 +1396,7 @@ public final class Items {
     public static final Item PEARLESCENT_FROGLIGHT = register(new BlockItem(builder(), Blocks.PEARLESCENT_FROGLIGHT));
     public static final Item FROGSPAWN = register(new BlockItem(builder(), Blocks.FROGSPAWN));
     public static final Item ECHO_SHARD = register(new Item("echo_shard", builder()));
-    public static final Item BRUSH = register(new Item("brush", builder().stackSize(1).maxDamage(64)));
+    public static final Item BRUSH = register(new Item("brush", builder()));
     public static final Item NETHERITE_UPGRADE_SMITHING_TEMPLATE = register(new Item("netherite_upgrade_smithing_template", builder()));
     public static final Item SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE = register(new Item("sentry_armor_trim_smithing_template", builder()));
     public static final Item DUNE_ARMOR_TRIM_SMITHING_TEMPLATE = register(new Item("dune_armor_trim_smithing_template", builder()));
@@ -1449,7 +1459,7 @@ public final class Items {
     public static final Item TRIAL_KEY = register(new Item("trial_key", builder()));
     public static final Item OMINOUS_TRIAL_KEY = register(new Item("ominous_trial_key", builder()));
     public static final Item VAULT = register(new BlockItem(builder(), Blocks.VAULT));
-    public static final Item OMINOUS_BOTTLE = register(new OminousBottleItem("ominous_bottle", builder()));
+    public static final Item OMINOUS_BOTTLE = register(new Item("ominous_bottle", builder()));
 
     public static final int AIR_ID = AIR.javaId();
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/BedrockRequiresTagItem.java b/core/src/main/java/org/geysermc/geyser/item/type/BedrockRequiresTagItem.java
index c41d14396..cd360f564 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/BedrockRequiresTagItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/BedrockRequiresTagItem.java
@@ -25,12 +25,6 @@
 
 package org.geysermc.geyser.item.type;
 
-import org.checkerframework.checker.nullness.qual.Nullable;
-import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
-
+// Whether this item should have its NBT data kept in the recipe book.
 public interface BedrockRequiresTagItem {
-
-    void addRequiredNbt(GeyserSession session, @Nullable DataComponents components, BedrockItemBuilder builder);
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java b/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java
index 2e7848318..862325a90 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java
@@ -27,7 +27,6 @@ package org.geysermc.geyser.item.type;
 
 import it.unimi.dsi.fastutil.ints.IntArrays;
 import org.checkerframework.checker.nullness.qual.NonNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.nbt.NbtList;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
@@ -142,20 +141,4 @@ public class FireworkRocketItem extends Item implements BedrockRequiresTagItem {
             return null;
         }
     }
-
-    @Override
-    public void addRequiredNbt(GeyserSession session, @Nullable DataComponents components, BedrockItemBuilder builder) {
-        if (components != null) {
-            Fireworks fireworks = components.get(DataComponentType.FIREWORKS);
-            if (fireworks != null) {
-                // Already translated
-                return;
-            }
-        }
-
-        NbtMapBuilder fireworksNbt = NbtMap.builder();
-        fireworksNbt.putByte("Flight", (byte) 1);
-        fireworksNbt.put("Explosions", NbtList.EMPTY);
-        builder.putCompound("Fireworks", fireworksNbt.build());
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 0155c4e35..7f0d9099e 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -62,23 +62,16 @@ public class Item {
     private static final Map<Block, Item> BLOCK_TO_ITEM = new HashMap<>();
     protected final Key javaIdentifier;
     private int javaId = -1;
-
-    // TODO remove these
-    private final int stackSize;
     private final int attackDamage;
-    private final int maxDamage;
-    private final Rarity rarity;
-    private final boolean glint;
+    private final DataComponents baseComponents;
 
-    private DataComponents dataComponents;
+    private final List<Item> enchantmentGlintPresent = List.of(Items.ENCHANTED_GOLDEN_APPLE, Items.EXPERIENCE_BOTTLE, Items.WRITTEN_BOOK,
+        Items.NETHER_STAR, Items.ENCHANTED_BOOK, Items.END_CRYSTAL);
 
     public Item(String javaIdentifier, Builder builder) {
         this.javaIdentifier = MinecraftKey.key(javaIdentifier);
-        this.stackSize = builder.stackSize;
-        this.maxDamage = builder.maxDamage;
+        this.baseComponents = builder.components;
         this.attackDamage = builder.attackDamage;
-        this.rarity = builder.rarity;
-        this.glint = builder.glint;
     }
 
     public String javaIdentifier() {
@@ -89,24 +82,28 @@ public class Item {
         return javaId;
     }
 
-    public int maxDamage() {
-        return dataComponents.getOrDefault(DataComponentType.MAX_DAMAGE, 0);
+    public int defaultMaxDamage() {
+        return baseComponents.getOrDefault(DataComponentType.MAX_DAMAGE, 0);
     }
 
-    public int attackDamage() {
+    public int defaultAttackDamage() {
         return attackDamage;
     }
 
-    public int maxStackSize() {
-        return dataComponents.getOrDefault(DataComponentType.MAX_STACK_SIZE, 1);
+    public int defaultMaxStackSize() {
+        return baseComponents.getOrDefault(DataComponentType.MAX_STACK_SIZE, 1);
     }
 
-    public Rarity rarity() {
-        return rarity;
+    public Rarity defaultRarity() {
+        return Rarity.fromId(baseComponents.getOrDefault(DataComponentType.RARITY, 0));
     }
 
-    public boolean glint() {
-        return glint;
+    public DataComponents gatherComponents(DataComponents others) {
+        if (others == null) return baseComponents.clone();
+
+        DataComponents components = baseComponents.clone();
+        components.getDataComponents().putAll(others.getDataComponents());
+        return components;
     }
 
     public boolean isValidRepairItem(Item other) {
@@ -295,32 +292,28 @@ public class Item {
     }
 
     public static Builder builder() {
-        return new Builder();
+        return new Builder().components(new DataComponents(new HashMap<>())); // TODO actually set components here
     }
 
     public static final class Builder {
-        private int stackSize = 64;
-        private int maxDamage;
+        private DataComponents components;
         private int attackDamage;
-        private Rarity rarity = Rarity.COMMON;
-        private boolean glint = false;
-
-        public Builder stackSize(int stackSize) {
-            this.stackSize = stackSize;
-            return this;
-        }
 
         public Builder attackDamage(double attackDamage) {
-            // TODO properly store/send a double value once Bedrock supports it.. pls
+            // Bedrock edition does not support attack damage being a double
             this.attackDamage = (int) attackDamage;
             return this;
         }
 
-        public Builder maxDamage(int maxDamage) {
-            this.maxDamage = maxDamage;
+        public Builder components(DataComponents components) {
+            this.components = components;
             return this;
         }
 
+        public DataComponents components() {
+            return this.components;
+        }
+
         private Builder() {
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
index 0a9c93980..ec094ea31 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
@@ -48,6 +48,8 @@ import org.geysermc.geyser.registry.mappings.MappingsConfigReader;
 import org.geysermc.geyser.registry.type.GeyserMappingItem;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.NonVanillaItemRegistration;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.*;
 
@@ -129,10 +131,11 @@ public class CustomItemRegistryPopulator {
 
         Set<String> repairMaterials = customItemData.repairMaterials();
 
-        Item.Builder itemBuilder = Item.builder()
-                .stackSize(customItemData.stackSize())
-                .maxDamage(customItemData.maxDamage());
-        Item item = new Item(customIdentifier, itemBuilder) {
+        DataComponents components = new DataComponents(new HashMap<>());
+        components.put(DataComponentType.MAX_STACK_SIZE, customItemData.stackSize());
+        components.put(DataComponentType.MAX_DAMAGE, customItemData.maxDamage());
+
+        Item item = new Item(customIdentifier, Item.builder().components(components)) {
             @Override
             public boolean isValidRepairItem(Item other) {
                 return repairMaterials != null && repairMaterials.contains(other.javaIdentifier());
@@ -167,11 +170,11 @@ public class CustomItemRegistryPopulator {
         NbtMapBuilder itemProperties = NbtMap.builder();
         NbtMapBuilder componentBuilder = NbtMap.builder();
 
-        setupBasicItemInfo(javaItem.maxDamage(), javaItem.maxStackSize(), mapping.getToolType() != null || customItemData.displayHandheld(), customItemData, itemProperties, componentBuilder, protocolVersion);
+        setupBasicItemInfo(javaItem.defaultMaxDamage(), javaItem.defaultMaxStackSize(), mapping.getToolType() != null || customItemData.displayHandheld(), customItemData, itemProperties, componentBuilder, protocolVersion);
 
         boolean canDestroyInCreative = true;
         if (mapping.getToolType() != null) { // This is not using the isTool boolean because it is not just a render type here.
-            canDestroyInCreative = computeToolProperties(mapping.getToolType(), itemProperties, componentBuilder, javaItem.attackDamage());
+            canDestroyInCreative = computeToolProperties(mapping.getToolType(), itemProperties, componentBuilder, javaItem.defaultAttackDamage());
         }
         itemProperties.putBoolean("can_destroy_in_creative", canDestroyInCreative);
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 1da3b0e66..b4c963578 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -447,7 +447,7 @@ public class ItemRegistryPopulator {
                     }
                 }
 
-                if (javaOnlyItems.contains(javaItem) || javaItem.rarity() != Rarity.COMMON) {
+                if (javaOnlyItems.contains(javaItem) || javaItem.defaultRarity() != Rarity.COMMON) {
                     // These items don't exist on Bedrock, so set up a variable that indicates they should have custom names
                     // Or, ensure that we are translating these at all times to account for rarity colouring
                     mappingBuilder = mappingBuilder.translationString((javaItem instanceof BlockItem ? "block." : "item.") + entry.getKey().replace(":", "."));
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
index b65b06431..fdc90c215 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
@@ -62,7 +62,7 @@ public final class CustomItemTranslator {
             }
         }
 
-        boolean checkDamage = mapping.getJavaItem().maxDamage() > 0;
+        boolean checkDamage = mapping.getJavaItem().defaultMaxDamage() > 0;
         int damage = !checkDamage ? 0 : components.getOrDefault(DataComponentType.DAMAGE, 0);
         boolean unbreakable = checkDamage && !isDamaged(components, damage);
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 3cfd00233..062666f84 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -40,7 +40,6 @@ import org.geysermc.geyser.api.block.custom.CustomBlockData;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.components.Rarity;
-import org.geysermc.geyser.item.type.BedrockRequiresTagItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.registry.BlockRegistries;
@@ -150,42 +149,24 @@ public final class ItemTranslator {
     public static ItemData.@NonNull Builder translateToBedrock(GeyserSession session, Item javaItem, ItemMapping bedrockItem, int count, @Nullable DataComponents components) {
         BedrockItemBuilder nbtBuilder = new BedrockItemBuilder();
 
-        boolean hideTooltips = false;
-        if (components != null) {
-            javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
-            if (components.get(DataComponentType.HIDE_TOOLTIP) != null) hideTooltips = true;
-        }
+        // Populates default components that aren't sent over the network
+        components = javaItem.gatherComponents(components);
 
-        // Fixes fireworks crafting recipe: they always contain a tag
-        // TODO remove once all items have their default components
-        if (javaItem instanceof BedrockRequiresTagItem requiresTagItem) {
-            requiresTagItem.addRequiredNbt(session, components, nbtBuilder);
-        }
-
-        Rarity rarity = javaItem.rarity();
-        boolean enchantmentGlint = javaItem.glint();
-        if (components != null) {
-            Integer rarityIndex = components.get(DataComponentType.RARITY);
-            if (rarityIndex != null) {
-                rarity = Rarity.fromId(rarityIndex);
-            }
-            Boolean enchantmentGlintOverride = components.get(DataComponentType.ENCHANTMENT_GLINT_OVERRIDE);
-            if (enchantmentGlintOverride != null) {
-                enchantmentGlint = enchantmentGlintOverride;
-            }
-        }
+        // Translate item-specific components
+        javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
 
+        Rarity rarity = Rarity.fromId(components.getOrDefault(DataComponentType.RARITY, 0));
         String customName = getCustomName(session, components, bedrockItem, rarity.getColor());
         if (customName != null) {
             nbtBuilder.setCustomName(customName);
         }
 
-        if (components != null) {
-            ItemAttributeModifiers attributeModifiers = components.get(DataComponentType.ATTRIBUTE_MODIFIERS);
-            if (attributeModifiers != null && attributeModifiers.isShowInTooltip() && !hideTooltips) {
-                // only add if attribute modifiers do not indicate to hide them
-                addAttributeLore(attributeModifiers, nbtBuilder, session.locale());
-            }
+        boolean hideTooltips = components.get(DataComponentType.HIDE_TOOLTIP) != null;
+
+        ItemAttributeModifiers attributeModifiers = components.get(DataComponentType.ATTRIBUTE_MODIFIERS);
+        if (attributeModifiers != null && attributeModifiers.isShowInTooltip() && !hideTooltips) {
+            // only add if attribute modifiers do not indicate to hide them
+            addAttributeLore(attributeModifiers, nbtBuilder, session.locale());
         }
 
         if (session.isAdvancedTooltips() && !hideTooltips) {
@@ -193,7 +174,7 @@ public final class ItemTranslator {
         }
 
         // Add enchantment override. We can't remove it - enchantments would stop showing - but we can add it.
-        if (enchantmentGlint) {
+        if (components.getOrDefault(DataComponentType.ENCHANTMENT_GLINT_OVERRIDE, false)) {
             NbtMapBuilder nbtMapBuilder = nbtBuilder.getOrCreateNbt();
             nbtMapBuilder.putIfAbsent("ench", NbtList.EMPTY);
         }
@@ -217,18 +198,16 @@ public final class ItemTranslator {
 
         translateCustomItem(components, builder, bedrockItem);
 
-        if (components != null) {
-            // Translate the canDestroy and canPlaceOn Java components
-            AdventureModePredicate canDestroy = components.get(DataComponentType.CAN_BREAK);
-            AdventureModePredicate canPlaceOn = components.get(DataComponentType.CAN_PLACE_ON);
-            String[] canBreak = getCanModify(session, canDestroy);
-            String[] canPlace = getCanModify(session, canPlaceOn);
-            if (canBreak != null) {
-                builder.canBreak(canBreak);
-            }
-            if (canPlace != null) {
-                builder.canPlace(canPlace);
-            }
+        // Translate the canDestroy and canPlaceOn Java components
+        AdventureModePredicate canDestroy = components.get(DataComponentType.CAN_BREAK);
+        AdventureModePredicate canPlaceOn = components.get(DataComponentType.CAN_PLACE_ON);
+        String[] canBreak = getCanModify(session, canDestroy);
+        String[] canPlace = getCanModify(session, canPlaceOn);
+        if (canBreak != null) {
+            builder.canBreak(canBreak);
+        }
+        if (canPlace != null) {
+            builder.canPlace(canPlace);
         }
 
         return builder;
@@ -325,7 +304,7 @@ public final class ItemTranslator {
     }
 
     private static void addAdvancedTooltips(@Nullable DataComponents components, BedrockItemBuilder builder, Item item, String language) {
-        int maxDurability = item.maxDamage();
+        int maxDurability = item.defaultMaxDamage();
 
         if (maxDurability != 0 && components != null) {
             Integer durabilityComponent = components.get(DataComponentType.DAMAGE);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockPickRequestTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockPickRequestTranslator.java
index 94368a6d4..ee4d7b3d5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockPickRequestTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBlockPickRequestTranslator.java
@@ -27,18 +27,14 @@ package org.geysermc.geyser.translator.protocol.bedrock;
 
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.protocol.bedrock.packet.BlockPickRequestPacket;
-import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.ItemFrameEntity;
-import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.level.block.Blocks;
-import org.geysermc.geyser.level.block.type.BannerBlock;
 import org.geysermc.geyser.level.block.type.BlockState;
-import org.geysermc.geyser.level.block.type.SkullBlock;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.geyser.util.InventoryUtils;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemFromBlockPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemFromEntityPacket;
 
 @Translator(packet = BlockPickRequestPacket.class)
 public class BedrockBlockPickRequestTranslator extends PacketTranslator<BlockPickRequestPacket> {
@@ -52,42 +48,14 @@ public class BedrockBlockPickRequestTranslator extends PacketTranslator<BlockPic
         if (blockToPick.is(Blocks.AIR)) {
             // Check for an item frame since the client thinks that's a block when it's an entity in Java
             ItemFrameEntity entity = ItemFrameEntity.getItemFrameEntity(session, packet.getBlockPosition());
+
             if (entity != null) {
-                // Check to see if the item frame has an item in it first
-                if (!InventoryUtils.isEmpty(entity.getHeldItem())) {
-                    // Grab the item in the frame
-                    InventoryUtils.findOrCreateItem(session, entity.getHeldItem());
-                } else {
-                    // Grab the frame as the item
-                    InventoryUtils.findOrCreateItem(session, entity.getDefinition() == EntityDefinitions.GLOW_ITEM_FRAME ? Items.GLOW_ITEM_FRAME : Items.ITEM_FRAME);
-                }
+                session.sendDownstreamGamePacket(new ServerboundPickItemFromEntityPacket(entity.javaId(), packet.isAddUserData()));
             }
             return;
         }
 
         boolean addExtraData = packet.isAddUserData() && blockToPick.block().hasBlockEntity(); // Holding down CTRL
-        if (session.isInstabuild() && addExtraData && blockToPick.block() instanceof SkullBlock skull) {
-            InventoryUtils.findOrCreateItem(session, skull.pickItem(session, blockToPick, vector));
-            return;
-        }
-        if (blockToPick.block() instanceof BannerBlock) {
-            session.getGeyser().getWorldManager().getPickItemComponents(session, vector.getX(), vector.getY(), vector.getZ(), addExtraData)
-                    .whenComplete((components, ex) -> session.ensureInEventLoop(() -> {
-                        if (components == null) {
-                            pickItem(session, blockToPick);
-                            return;
-                        }
-
-                        ItemStack itemStack = new ItemStack(blockToPick.block().asItem().javaId(), 1, components);
-                        InventoryUtils.findOrCreateItem(session, itemStack);
-                    }));
-            return;
-        }
-
-        pickItem(session, blockToPick);
-    }
-
-    private void pickItem(GeyserSession session, BlockState state) {
-        InventoryUtils.findOrCreateItem(session, state.block().pickItem(state));
+        session.sendDownstreamGamePacket(new ServerboundPickItemFromBlockPacket(vector, addExtraData));
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java
index acb8573fb..2368e1ad7 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockEntityPickRequestTranslator.java
@@ -26,15 +26,11 @@
 package org.geysermc.geyser.translator.protocol.bedrock;
 
 import org.cloudburstmc.protocol.bedrock.packet.EntityPickRequestPacket;
-import org.geysermc.geyser.entity.type.BoatEntity;
 import org.geysermc.geyser.entity.type.Entity;
-import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.geyser.util.InventoryUtils;
-
-import java.util.Locale;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundPickItemFromEntityPacket;
 
 /**
  * Called when the Bedrock user uses the pick block button on an entity
@@ -49,35 +45,8 @@ public class BedrockEntityPickRequestTranslator extends PacketTranslator<EntityP
             return;
         }
         Entity entity = session.getEntityCache().getEntityByGeyserId(packet.getRuntimeEntityId());
-        if (entity == null) return;
-
-        if (entity instanceof BoatEntity boat) {
-            InventoryUtils.findOrCreateItem(session, boat.getPickItem());
-            return;
+        if (entity != null) {
+            session.sendDownstreamGamePacket(new ServerboundPickItemFromEntityPacket(entity.javaId(), false));
         }
-
-        // Get the corresponding item
-        String itemName;
-        switch (entity.getDefinition().entityType()) {
-            case LEASH_KNOT -> itemName = "lead";
-            case CHEST_MINECART, COMMAND_BLOCK_MINECART, FURNACE_MINECART, HOPPER_MINECART, TNT_MINECART ->
-                    // The Bedrock identifier matches the item name which moves MINECART to the end of the name
-                    // TODO test
-                    itemName = entity.getDefinition().identifier();
-            case SPAWNER_MINECART -> itemName = "minecart"; // Turns into a normal minecart
-            //case ITEM_FRAME -> Not an entity in Bedrock Edition
-            //case GLOW_ITEM_FRAME ->
-            case ARMOR_STAND, END_CRYSTAL, MINECART, PAINTING ->
-                    // No spawn egg, just an item
-                    itemName = entity.getDefinition().entityType().toString().toLowerCase(Locale.ROOT);
-            default -> itemName = entity.getDefinition().entityType().toString().toLowerCase(Locale.ROOT) + "_spawn_egg";
-        }
-
-        String fullItemName = "minecraft:" + itemName;
-        ItemMapping mapping = session.getItemMappings().getMapping(fullItemName);
-        // Verify it is, indeed, an item
-        if (mapping == null) return;
-
-        InventoryUtils.findOrCreateItem(session, fullItemName);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaMerchantOffersTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaMerchantOffersTranslator.java
index 970061436..e4ff0539f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaMerchantOffersTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaMerchantOffersTranslator.java
@@ -173,7 +173,7 @@ public class JavaMerchantOffersTranslator extends PacketTranslator<ClientboundMe
 
         // Bedrock expects all price adjustments to be applied to the item's count
         int count = stack.getAmount() + ((int) Math.max(Math.floor(stack.getAmount() * demand * priceMultiplier), 0)) + specialPrice;
-        count = MathUtils.constrain(count, 1, Registries.JAVA_ITEMS.get().get(stack.getId()).maxStackSize());
+        count = MathUtils.constrain(count, 1, Registries.JAVA_ITEMS.get().get(stack.getId()).defaultMaxStackSize());
 
         return getItemTag(session, stack, mapping, count);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index df0450ce6..14a64d57a 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -34,19 +34,16 @@ import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
-import org.cloudburstmc.protocol.bedrock.packet.PlayerHotbarPacket;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.Container;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.LecternContainer;
-import org.geysermc.geyser.inventory.PlayerInventory;
 import org.geysermc.geyser.inventory.click.Click;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
 import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.level.BedrockDimension;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMappings;
@@ -58,7 +55,6 @@ import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.inventory.LecternInventoryTranslator;
 import org.geysermc.geyser.translator.inventory.chest.DoubleChestInventoryTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.CompositeSlotDisplay;
@@ -69,7 +65,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDis
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.TagSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.WithRemainderSlotDisplay;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
 import org.jetbrains.annotations.Contract;
 
 import java.util.ArrayList;
@@ -270,171 +265,6 @@ public class InventoryUtils {
             .count(1).build();
     }
 
-    /**
-     * See {@link #findOrCreateItem(GeyserSession, String)}. This is for finding a specified {@link ItemStack}.
-     *
-     * @param session the Bedrock client's session
-     * @param itemStack the item to try to find a match for. NBT will also be accounted for.
-     */
-    public static void findOrCreateItem(GeyserSession session, ItemStack itemStack) {
-        if (isEmpty(itemStack)) {
-            return;
-        }
-        PlayerInventory inventory = session.getPlayerInventory();
-
-        // Check hotbar for item
-        for (int i = 36; i < 45; i++) {
-            GeyserItemStack geyserItem = inventory.getItem(i);
-            if (geyserItem.isEmpty()) {
-                continue;
-            }
-            // If this is the item we're looking for
-            if (geyserItem.getJavaId() == itemStack.getId() && Objects.equals(geyserItem.getComponents(), itemStack.getDataComponents())) { //TODO verify
-                setHotbarItem(session, i);
-                // Don't check inventory if item was in hotbar
-                return;
-            }
-        }
-
-        // Check inventory for item
-        for (int i = 9; i < 36; i++) {
-            GeyserItemStack geyserItem = inventory.getItem(i);
-            if (geyserItem.isEmpty()) {
-                continue;
-            }
-            // If this is the item we're looking for
-            if (geyserItem.getJavaId() == itemStack.getId() && Objects.equals(geyserItem.getComponents(), itemStack.getDataComponents())) { //TODO verify
-                //ServerboundPickItemFromBlockPacket packetToSend = new ServerboundPickItemFromBlockPacket(i); // https://wiki.vg/Protocol#Pick_Item
-                //session.sendDownstreamGamePacket(packetToSend);
-                // TODO 1.21.4
-                return;
-            }
-        }
-
-        // If we still have not found the item, and we're in creative, ask for the item from the server.
-        if (session.getGameMode() == GameMode.CREATIVE) {
-            setPickedItem(session, inventory, GeyserItemStack.from(itemStack));
-        }
-    }
-
-    // Please remove!!!
-    public static void findOrCreateItem(GeyserSession session, String itemName) {
-        findOrCreateItem(session, Registries.JAVA_ITEM_IDENTIFIERS.getOrDefault(itemName, Items.AIR));
-    }
-
-    /**
-     * Attempt to find the specified item name in the session's inventory.
-     * If it is found and in the hotbar, set the user's held item to that slot.
-     * If it is found in another part of the inventory, move it.
-     * If it is not found and the user is in creative mode, create the item,
-     * overriding the current item slot if no other hotbar slots are empty, or otherwise selecting the empty slot.
-     * <p>
-     * This attempts to mimic Java Edition behavior as best as it can.
-     * @param session the Bedrock client's session
-     * @param item the Java item to search/select for
-     */
-    public static void findOrCreateItem(GeyserSession session, Item item) {
-        // Get the inventory to choose a slot to pick
-        PlayerInventory inventory = session.getPlayerInventory();
-
-        if (item == Items.AIR) {
-            return;
-        }
-
-        // Check hotbar for item
-        for (int i = 36; i < 45; i++) {
-            GeyserItemStack geyserItem = inventory.getItem(i);
-            if (geyserItem.isEmpty()) {
-                continue;
-            }
-            // If this isn't the item we're looking for
-            if (!geyserItem.asItem().equals(item)) {
-                continue;
-            }
-
-            setHotbarItem(session, i);
-            // Don't check inventory if item was in hotbar
-            return;
-        }
-
-        // Check inventory for item
-        for (int i = 9; i < 36; i++) {
-            GeyserItemStack geyserItem = inventory.getItem(i);
-            if (geyserItem.isEmpty()) {
-                continue;
-            }
-            // If this isn't the item we're looking for
-            if (!geyserItem.asItem().equals(item)) {
-                continue;
-            }
-
-            // TODO 1.21.4
-            //ServerboundPickItemPacket packetToSend = new ServerboundPickItemPacket(i); // https://wiki.vg/Protocol#Pick_Item
-            //session.sendDownstreamGamePacket(packetToSend);
-            return;
-        }
-
-        // If we still have not found the item, and we're in creative, set the item ourselves.
-        if (session.getGameMode() == GameMode.CREATIVE) {
-            GeyserItemStack itemStack = item.newItemStack(1, null);
-            setPickedItem(session, inventory, itemStack);
-        }
-    }
-
-    private static void setPickedItem(GeyserSession session, PlayerInventory inventory, GeyserItemStack itemStack) {
-        // Try to find an empty hotbar slot.
-        int slot = inventory.getHeldItemSlot() + 36;
-        if (!inventory.getItemInHand().isEmpty()) { // Otherwise we should just use the current slot
-            for (int i = 36; i < 45; i++) {
-                if (inventory.getItem(i).isEmpty()) {
-                    slot = i;
-                    break;
-                }
-            }
-        }
-        GeyserItemStack existingItem = inventory.getItem(slot);
-        if (!existingItem.isEmpty()) {
-            // Try to move the item to another slot.
-            for (int i = 9; i < 36; i++) {
-                if (inventory.getItem(i).isEmpty()) {
-                    inventory.setItem(i, existingItem, session);
-                    InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, inventory, i);
-
-                    ServerboundSetCreativeModeSlotPacket actionPacket = new ServerboundSetCreativeModeSlotPacket((short) i,
-                        existingItem.getItemStack());
-                    session.sendDownstreamGamePacket(actionPacket);
-                    break;
-                }
-            }
-        }
-
-        // As of 1.21.3 - the client does this on its own end and the server doesn't send a slot response back.
-        inventory.setItem(slot, itemStack, session);
-        InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, inventory, slot);
-
-        ServerboundSetCreativeModeSlotPacket actionPacket = new ServerboundSetCreativeModeSlotPacket((short) slot,
-            itemStack.getItemStack());
-        if ((slot - 36) != inventory.getHeldItemSlot()) {
-            setHotbarItem(session, slot);
-        }
-        session.sendDownstreamGamePacket(actionPacket);
-    }
-
-    /**
-     * Changes the held item slot to the specified slot
-     * @param session GeyserSession
-     * @param slot inventory slot to be selected
-     */
-    private static void setHotbarItem(GeyserSession session, int slot) {
-        PlayerHotbarPacket hotbarPacket = new PlayerHotbarPacket();
-        hotbarPacket.setContainerId(0);
-        // Java inventory slot to hotbar slot ID
-        hotbarPacket.setSelectedHotbarSlot(slot - 36);
-        hotbarPacket.setSelectHotbarSlot(true);
-        session.sendUpstreamPacket(hotbarPacket);
-        // No need to send a Java packet as Bedrock sends a confirmation packet back that we translate
-    }
-
     @Nullable
     public static Click getClickForHotbarSwap(int slot) {
         return switch (slot) {

From 1eedf1987c786115dee571e5198a69bd93cb0601 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 1 Dec 2024 11:50:52 -0500
Subject: [PATCH 082/165] Fix #5150

---
 .../java/JavaUpdateRecipesTranslator.java     | 20 +++++++------------
 1 file changed, 7 insertions(+), 13 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index 7ea66e0a3..3872321af 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -43,7 +43,6 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.recipe.GeyserStonecutterData;
 import org.geysermc.geyser.inventory.recipe.TrimRecipe;
 import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.ItemTranslator;
@@ -58,7 +57,6 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.Clientbound
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import java.util.Objects;
 import java.util.UUID;
@@ -117,7 +115,7 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
         session.getGeyser().getLogger().debug("Using old smithing table workaround? " + oldSmithingTable);
         session.setOldSmithingTable(oldSmithingTable);
 
-        Int2ObjectMap<List<SelectableRecipe>> unsortedStonecutterData = new Int2ObjectOpenHashMap<>();
+        Int2ObjectMap<List<SelectableRecipe>> rawStonecutterData = new Int2ObjectOpenHashMap<>();
 
         List<SelectableRecipe> stonecutterRecipes = packet.getStonecutterRecipes();
         for (SelectableRecipe recipe : stonecutterRecipes) {
@@ -131,19 +129,15 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
                 session.getGeyser().getLogger().debug("Ignoring stonecutter recipe for weird output: " + recipe);
                 continue;
             }
-            unsortedStonecutterData.computeIfAbsent(ingredient.getHolders()[0], $ -> new ArrayList<>()).add(recipe);
+            rawStonecutterData.computeIfAbsent(ingredient.getHolders()[0], $ -> new ArrayList<>()).add(recipe);
         }
 
         Int2ObjectMap<GeyserStonecutterData> stonecutterRecipeMap = new Int2ObjectOpenHashMap<>();
-        for (Int2ObjectMap.Entry<List<SelectableRecipe>> data : unsortedStonecutterData.int2ObjectEntrySet()) {
-            // Sort the list by each output item's Java identifier - this is how it's sorted on Java, and therefore
-            // We can get the correct order for button pressing
-            data.getValue().sort(Comparator.comparing((stoneCuttingRecipeData ->
-                Registries.JAVA_ITEMS.get().get(((ItemStackSlotDisplay) stoneCuttingRecipeData.recipe()).itemStack().getId())
-                    // See RecipeManager#getRecipesFor as of 1.21
-                    .translationKey())));
-
-            // Now that it's sorted, let's translate these recipes
+        for (Int2ObjectMap.Entry<List<SelectableRecipe>> data : rawStonecutterData.int2ObjectEntrySet()) {
+            // Implementation note: data used to have to be sorted according to the item translation key.
+            // This is no longer necessary as of 1.21.2, and is instead presented in the order the server sends us.
+            // (Recipes are ordered differently between Paper and vanilla)
+            // See #5150.
             int buttonId = 0;
             for (SelectableRecipe recipe : data.getValue()) {
                 // As of 1.16.4, all stonecutter recipes have one ingredient option

From 48ae28432e2e0015889844cc5c6d4001851966a8 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Mon, 2 Dec 2024 02:23:02 +0800
Subject: [PATCH 083/165] More changes - remove getPickItemComponents in
 WorldManager, separate additional and base component

---
 .../mod/world/GeyserModWorldManager.java      | 72 -------------------
 .../manager/GeyserSpigotWorldManager.java     | 19 -----
 .../living/animal/tameable/WolfEntity.java    | 25 ++++---
 .../geyser/inventory/AnvilContainer.java      | 10 +--
 .../geyser/inventory/GeyserItemStack.java     | 58 ++++++++-------
 .../updater/AnvilInventoryUpdater.java        | 37 ++++++----
 .../java/org/geysermc/geyser/item/Items.java  |  4 --
 .../org/geysermc/geyser/item/type/Item.java   | 28 ++++----
 .../geyser/level/GeyserWorldManager.java      | 20 ------
 .../geysermc/geyser/level/WorldManager.java   | 10 ---
 .../geyser/session/cache/TagCache.java        |  6 +-
 .../session/cache/tags/GeyserHolderSet.java   | 30 ++++++--
 .../geyser/skin/FakeHeadProvider.java         | 15 ++--
 .../inventory/InventoryTranslator.java        | 14 ++--
 .../inventory/LecternInventoryTranslator.java |  7 +-
 .../inventory/LoomInventoryTranslator.java    | 11 +--
 .../inventory/PlayerInventoryTranslator.java  |  9 +--
 .../translator/item/ItemTranslator.java       | 58 +++++++--------
 .../bedrock/BedrockBookEditTranslator.java    |  2 +-
 .../org/geysermc/geyser/util/BlockUtils.java  |  5 +-
 .../org/geysermc/geyser/util/ItemUtils.java   | 12 ----
 21 files changed, 176 insertions(+), 276 deletions(-)

diff --git a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
index f85b6e079..f791aab7a 100644
--- a/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
+++ b/bootstrap/mod/src/main/java/org/geysermc/geyser/platform/mod/world/GeyserModWorldManager.java
@@ -28,37 +28,24 @@ package org.geysermc.geyser.platform.mod.world;
 import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
 import net.minecraft.SharedConstants;
 import net.minecraft.core.BlockPos;
-import net.minecraft.core.RegistryAccess;
-import net.minecraft.core.component.DataComponents;
 import net.minecraft.core.registries.BuiltInRegistries;
-import net.minecraft.network.chat.Component;
 import net.minecraft.server.MinecraftServer;
 import net.minecraft.server.level.ServerChunkCache;
 import net.minecraft.server.level.ServerPlayer;
-import net.minecraft.world.item.ItemStack;
 import net.minecraft.world.level.ChunkPos;
 import net.minecraft.world.level.Level;
 import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.entity.BannerBlockEntity;
-import net.minecraft.world.level.block.entity.BannerPatternLayers;
 import net.minecraft.world.level.block.entity.BlockEntity;
 import net.minecraft.world.level.block.entity.DecoratedPotBlockEntity;
 import net.minecraft.world.level.chunk.ChunkAccess;
 import net.minecraft.world.level.chunk.LevelChunkSection;
-import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.geysermc.geyser.level.GeyserWorldManager;
 import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.mcprotocollib.protocol.data.game.Holder;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 
-import java.util.HashMap;
 import java.util.List;
-import java.util.concurrent.CompletableFuture;
 import java.util.function.Consumer;
 
 public class GeyserModWorldManager extends GeyserWorldManager {
@@ -117,49 +104,6 @@ public class GeyserModWorldManager extends GeyserWorldManager {
         return GameMode.byId(server.getDefaultGameType().getId());
     }
 
-    @NonNull
-    @Override
-    public CompletableFuture<org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents> getPickItemComponents(GeyserSession session, int x, int y, int z, boolean addNbtData) {
-        CompletableFuture<org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents> future = new CompletableFuture<>();
-        server.execute(() -> {
-            ServerPlayer player = getPlayer(session);
-            if (player == null) {
-                future.complete(null);
-                return;
-            }
-
-            BlockPos pos = new BlockPos(x, y, z);
-            // Don't create a new block entity if invalid
-            //noinspection resource - level() is just a getter
-            BlockEntity blockEntity = player.level().getChunkAt(pos).getBlockEntity(pos);
-            if (blockEntity instanceof BannerBlockEntity banner) {
-                // Potentially exposes other NBT data? But we need to get the NBT data for the banner patterns *and*
-                // the banner might have a custom name, both of which a Java client knows and caches
-                ItemStack itemStack = banner.getItem();
-
-                org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents components =
-                        new org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents(new HashMap<>());
-
-                components.put(DataComponentType.DAMAGE, itemStack.getDamageValue());
-
-                Component customName = itemStack.getComponents().get(DataComponents.CUSTOM_NAME);
-                if (customName != null) {
-                    components.put(DataComponentType.CUSTOM_NAME, toKyoriComponent(customName));
-                }
-
-                BannerPatternLayers pattern = itemStack.get(DataComponents.BANNER_PATTERNS);
-                if (pattern != null) {
-                    components.put(DataComponentType.BANNER_PATTERNS, toPatternList(pattern));
-                }
-
-                future.complete(components);
-                return;
-            }
-            future.complete(null);
-        });
-        return future;
-    }
-
     @Override
     public void getDecoratedPotData(GeyserSession session, Vector3i pos, Consumer<List<String>> apply) {
         server.execute(() -> {
@@ -184,20 +128,4 @@ public class GeyserModWorldManager extends GeyserWorldManager {
     private ServerPlayer getPlayer(GeyserSession session) {
         return server.getPlayerList().getPlayer(session.getPlayerEntity().getUuid());
     }
-
-    private static net.kyori.adventure.text.Component toKyoriComponent(Component component) {
-        String json = Component.Serializer.toJson(component, RegistryAccess.EMPTY);
-        return GSON_SERIALIZER.deserializeOr(json, net.kyori.adventure.text.Component.empty());
-    }
-
-    private static List<BannerPatternLayer> toPatternList(BannerPatternLayers patternLayers) {
-        return patternLayers.layers().stream()
-                .map(layer -> {
-                    BannerPatternLayer.BannerPattern pattern = new BannerPatternLayer.BannerPattern(
-                            MinecraftKey.key(layer.pattern().value().assetId().toString()), layer.pattern().value().translationKey()
-                    );
-                    return new BannerPatternLayer(Holder.ofCustom(pattern), layer.color().getId());
-                })
-                .toList();
-    }
 }
diff --git a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotWorldManager.java b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotWorldManager.java
index 6588a22a3..54b5b9178 100644
--- a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotWorldManager.java
+++ b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotWorldManager.java
@@ -25,18 +25,14 @@
 
 package org.geysermc.geyser.platform.spigot.world.manager;
 
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import org.bukkit.Bukkit;
 import org.bukkit.World;
 import org.bukkit.block.Block;
 import org.bukkit.block.DecoratedPot;
 import org.bukkit.entity.Player;
 import org.bukkit.plugin.Plugin;
-import org.checkerframework.checker.nullness.qual.NonNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.geysermc.erosion.bukkit.BukkitUtils;
-import org.geysermc.erosion.bukkit.PickBlockUtils;
 import org.geysermc.erosion.bukkit.SchedulerUtils;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.level.GameRule;
@@ -44,7 +40,6 @@ import org.geysermc.geyser.level.WorldManager;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.List;
 import java.util.Objects;
@@ -128,20 +123,6 @@ public class GeyserSpigotWorldManager extends WorldManager {
         return GameMode.byId(Bukkit.getDefaultGameMode().ordinal());
     }
 
-    @Override
-    public @NonNull CompletableFuture<@Nullable DataComponents> getPickItemComponents(GeyserSession session, int x, int y, int z, boolean addNbtData) {
-        Player bukkitPlayer;
-        if ((bukkitPlayer = Bukkit.getPlayer(session.getPlayerEntity().getUuid())) == null) {
-            return CompletableFuture.completedFuture(null);
-        }
-        CompletableFuture<Int2ObjectMap<byte[]>> future = new CompletableFuture<>();
-        Block block = bukkitPlayer.getWorld().getBlockAt(x, y, z);
-        // Paper 1.19.3 complains about async access otherwise.
-        // java.lang.IllegalStateException: Tile is null, asynchronous access?
-        SchedulerUtils.runTask(this.plugin, () -> future.complete(PickBlockUtils.pickBlock(block)), block);
-        return future.thenApply(RAW_TRANSFORMER);
-    }
-
     public void getDecoratedPotData(GeyserSession session, Vector3i pos, Consumer<List<String>> apply) {
         Player bukkitPlayer;
         if ((bukkitPlayer = Bukkit.getPlayer(session.getPlayerEntity().getUuid())) == null) {
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index f0b554ef9..67e5788c6 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -38,6 +38,8 @@ import org.geysermc.geyser.item.enchantment.EnchantmentComponent;
 import org.geysermc.geyser.item.type.DyeItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
 import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
@@ -51,6 +53,8 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.Object
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 
 import java.util.Collections;
 import java.util.Locale;
@@ -58,7 +62,7 @@ import java.util.UUID;
 
 public class WolfEntity extends TameableEntity {
     private byte collarColor = 14; // Red - default
-
+    private GeyserHolderSet<Item> repairableItems = null;
     private boolean isCurseOfBinding = false;
 
     public WolfEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
@@ -123,9 +127,11 @@ public class WolfEntity extends TameableEntity {
     }
 
     @Override
-    public void setChestplate(ItemStack stack) {
-        super.setChestplate(stack);
-        isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE); // TODO test
+    public void setBody(ItemStack stack) {
+        super.setBody(stack);
+        isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
+        HolderSet set = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
+        repairableItems = GeyserHolderSet.convertHolderSet(JavaRegistries.ITEM, set);
     }
 
     @Override
@@ -152,16 +158,17 @@ public class WolfEntity extends TameableEntity {
                     return super.testMobInteraction(hand, itemInHand);
                 }
             }
-            if (itemInHand.asItem() == Items.WOLF_ARMOR && !this.chestplate.isValid() && !getFlag(EntityFlag.BABY)) {
+            if (itemInHand.asItem() == Items.WOLF_ARMOR && !this.body.isValid() && !getFlag(EntityFlag.BABY)) {
                 return InteractiveTag.EQUIP_WOLF_ARMOR;
             }
-            if (itemInHand.asItem() == Items.SHEARS && this.chestplate.isValid()
+            if (itemInHand.asItem() == Items.SHEARS && this.body.isValid()
                     && (!isCurseOfBinding || session.getGameMode().equals(GameMode.CREATIVE))) {
                 return InteractiveTag.REMOVE_WOLF_ARMOR;
             }
-            if (Items.WOLF_ARMOR.isValidRepairItem(itemInHand.asItem()) && getFlag(EntityFlag.SITTING) &&
-                    this.chestplate.isValid() && this.chestplate.getTag() != null &&
-                    this.chestplate.getTag().getInt("Damage") > 0) {
+            if (getFlag(EntityFlag.SITTING) &&
+                    session.getTagCache().is(repairableItems, itemInHand.asItem()) &&
+                    this.body.isValid() && this.body.getTag() != null &&
+                    this.body.getTag().getInt("Damage") > 0) {
                 return InteractiveTag.REPAIR_WOLF_ARMOR;
             }
             // Tamed and owned by player - can sit/stand
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java b/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java
index 45a062468..f5969efbb 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java
@@ -25,15 +25,15 @@
 
 package org.geysermc.geyser.inventory;
 
-import net.kyori.adventure.text.Component;
-import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 import lombok.Getter;
 import lombok.Setter;
+import net.kyori.adventure.text.Component;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.geyser.util.ItemUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 
 /**
  * Used to determine if rename packets should be sent and stores
@@ -73,7 +73,7 @@ public class AnvilContainer extends Container {
         String correctRename;
         newName = rename;
 
-        Component originalName = ItemUtils.getCustomName(getInput().getComponents());
+        Component originalName = getInput().getComponent(DataComponentType.CUSTOM_NAME);
 
         String plainOriginalName = MessageTranslator.convertToPlainText(originalName, session.locale());
         String plainNewName = MessageTranslator.convertToPlainText(rename);
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index 256de7799..c595ea1b5 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -25,7 +25,11 @@
 
 package org.geysermc.geyser.inventory;
 
-import lombok.*;
+import lombok.AccessLevel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
@@ -104,10 +108,27 @@ public class GeyserItemStack {
         return isEmpty() ? 0 : amount;
     }
 
+    /**
+     * Returns all components of this item - base and additional components sent over the network.
+     * These are NOT modifiable! To add components, use {@link #getOrCreateComponents()}.
+     *
+     * @return the item's base data components and the "additional" ones that may exist.
+     */
+    public @Nullable DataComponents getAllComponents() {
+        return isEmpty() ? null : asItem().gatherComponents(components);
+    }
+
+    /**
+     * @return the {@link DataComponents} that aren't the base/default components.
+     */
     public @Nullable DataComponents getComponents() {
         return isEmpty() ? null : components;
     }
 
+    public boolean hasNonBaseComponents() {
+        return components != null;
+    }
+
     @NonNull
     public DataComponents getOrCreateComponents() {
         if (components == null) {
@@ -119,33 +140,20 @@ public class GeyserItemStack {
     @Nullable
     public <T> T getComponent(@NonNull DataComponentType<T> type) {
         if (components == null) {
-            return null;
+            return asItem().getComponent(type);
         }
-        return components.get(type);
+
+        T value = components.get(type);
+        if (value == null) {
+            return asItem().getComponent(type);
+        }
+
+        return value;
     }
 
-    public <T extends Boolean> boolean getComponent(@NonNull DataComponentType<T> type, boolean def) {
-        if (components == null) {
-            return def;
-        }
-
-        Boolean result = components.get(type);
-        if (result != null) {
-            return result;
-        }
-        return def;
-    }
-
-    public <T extends Integer> int getComponent(@NonNull DataComponentType<T> type, int def) {
-        if (components == null) {
-            return def;
-        }
-
-        Integer result = components.get(type);
-        if (result != null) {
-            return result;
-        }
-        return def;
+    public <T> T getComponentOrFallback(@NonNull DataComponentType<T> type, T def) {
+        T value = getComponent(type);
+        return value == null ? def : value;
     }
 
     public int getNetId() {
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index 00270e47a..459d8adf8 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -40,12 +40,15 @@ import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.enchantment.Enchantment;
+import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.geyser.util.ItemUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 
@@ -63,7 +66,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         super.updateInventory(translator, session, inventory);
         AnvilContainer anvilContainer = (AnvilContainer) inventory;
         updateInventoryState(session, anvilContainer);
-        int targetSlot = getTargetSlot(anvilContainer);
+        int targetSlot = getTargetSlot(anvilContainer, session);
         for (int i = 0; i < translator.size; i++) {
             final int bedrockSlot = translator.javaSlotToBedrock(i);
             if (bedrockSlot == 50)
@@ -88,7 +91,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         updateInventoryState(session, anvilContainer);
 
         int lastTargetSlot = anvilContainer.getLastTargetSlot();
-        int targetSlot = getTargetSlot(anvilContainer);
+        int targetSlot = getTargetSlot(anvilContainer, session);
         if (targetSlot != javaSlot) {
             // Update the requested slot
             InventorySlotPacket slotPacket = new InventorySlotPacket();
@@ -117,7 +120,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
 
             // Changing the item in the input slot resets the name field on Bedrock, but
             // does not result in a FilterTextPacket
-            String originalName = MessageTranslator.convertToPlainText(ItemUtils.getCustomName(input.getComponents()), session.locale());
+            String originalName = MessageTranslator.convertToPlainText(input.getComponent(DataComponentType.CUSTOM_NAME), session.locale());
             ServerboundRenameItemPacket renameItemPacket = new ServerboundRenameItemPacket(originalName);
             session.sendDownstreamGamePacket(renameItemPacket);
 
@@ -135,12 +138,12 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
      * @param anvilContainer the anvil inventory
      * @return the slot to change the repair cost
      */
-    private int getTargetSlot(AnvilContainer anvilContainer) {
+    private int getTargetSlot(AnvilContainer anvilContainer, GeyserSession session) {
         GeyserItemStack input = anvilContainer.getInput();
         GeyserItemStack material = anvilContainer.getMaterial();
 
         if (!material.isEmpty()) {
-            if (!input.isEmpty() && isRepairing(input, material)) {
+            if (!input.isEmpty() && isRepairing(input, material, session)) {
                 // Changing the repair cost on the material item makes it non-stackable
                 return 0;
             }
@@ -233,7 +236,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
                     // Can't repair or merge enchantments
                     return -1;
                 }
-            } else if (hasDurability(input) && isRepairing(input, material)) {
+            } else if (hasDurability(input) && isRepairing(input, material, session)) {
                 cost = calcRepairLevelCost(input, material);
                 if (cost == -1) {
                     // No damage to repair
@@ -394,8 +397,14 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         return isEnchantedBook(material) || (input.getJavaId() == material.getJavaId() && hasDurability(input));
     }
 
-    private boolean isRepairing(GeyserItemStack input, GeyserItemStack material) {
-        return input.asItem().isValidRepairItem(material.asItem());
+    private boolean isRepairing(GeyserItemStack input, GeyserItemStack material, GeyserSession session) {
+        HolderSet repairable = input.getComponent(DataComponentType.REPAIRABLE);
+        if (repairable == null) {
+            return false;
+        }
+
+        GeyserHolderSet<Item> set = GeyserHolderSet.convertHolderSet(JavaRegistries.ITEM, repairable);
+        return session.getTagCache().is(set, material.asItem());
     }
 
     private boolean isRenaming(GeyserSession session, AnvilContainer anvilContainer, boolean bedrock) {
@@ -404,27 +413,27 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         }
         // This should really check the name field in all cases, but that requires the localized name
         // of the item which can change depending on NBT and Minecraft Edition
-        Component originalName = ItemUtils.getCustomName(anvilContainer.getInput().getComponents());
+        Component originalName = anvilContainer.getInput().getComponent(DataComponentType.CUSTOM_NAME);
         if (bedrock && originalName != null && anvilContainer.getNewName() != null) {
             // Check text and formatting
             String legacyOriginalName = MessageTranslator.convertMessage(originalName, session.locale());
             return !legacyOriginalName.equals(anvilContainer.getNewName());
         }
-        return !Objects.equals(originalName, ItemUtils.getCustomName(anvilContainer.getResult().getComponents()));
+        return !Objects.equals(originalName, anvilContainer.getResult().getComponent(DataComponentType.CUSTOM_NAME));
     }
 
     private int getRepairCost(GeyserItemStack itemStack) {
-        return itemStack.getComponent(DataComponentType.REPAIR_COST, 0);
+        return itemStack.getComponentOrFallback(DataComponentType.REPAIR_COST, 0);
     }
 
     private boolean hasDurability(GeyserItemStack itemStack) {
         if (itemStack.asItem().defaultMaxDamage() > 0) {
-            return itemStack.getComponent(DataComponentType.UNBREAKABLE, false);
+            return itemStack.getComponentOrFallback(DataComponentType.UNBREAKABLE, false);
         }
         return false;
     }
 
     private int getDamage(GeyserItemStack itemStack) {
-        return itemStack.getComponent(DataComponentType.DAMAGE, 0);
+        return itemStack.getComponentOrFallback(DataComponentType.DAMAGE, 0);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index d2ae08ec4..4a2d5827a 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.item;
 
-import org.geysermc.geyser.item.components.ToolTier;
 import org.geysermc.geyser.item.type.ArmorItem;
 import org.geysermc.geyser.item.type.ArrowItem;
 import org.geysermc.geyser.item.type.AxolotlBucketItem;
@@ -45,16 +44,13 @@ import org.geysermc.geyser.item.type.FireworkStarItem;
 import org.geysermc.geyser.item.type.FishingRodItem;
 import org.geysermc.geyser.item.type.GoatHornItem;
 import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.item.type.LightItem;
 import org.geysermc.geyser.item.type.MaceItem;
 import org.geysermc.geyser.item.type.MapItem;
-import org.geysermc.geyser.item.type.OminousBottleItem;
 import org.geysermc.geyser.item.type.PlayerHeadItem;
 import org.geysermc.geyser.item.type.PotionItem;
 import org.geysermc.geyser.item.type.ShieldItem;
 import org.geysermc.geyser.item.type.ShulkerBoxItem;
 import org.geysermc.geyser.item.type.SpawnEggItem;
-import org.geysermc.geyser.item.type.TieredItem;
 import org.geysermc.geyser.item.type.TippedArrowItem;
 import org.geysermc.geyser.item.type.TropicalFishBucketItem;
 import org.geysermc.geyser.item.type.WolfArmorItem;
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 7f0d9099e..c851ee332 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.item.type;
 
+import com.google.common.collect.ImmutableMap;
 import net.kyori.adventure.key.Key;
 import net.kyori.adventure.text.Component;
 import org.checkerframework.checker.nullness.qual.NonNull;
@@ -45,7 +46,6 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.MinecraftKey;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
@@ -98,16 +98,23 @@ public class Item {
         return Rarity.fromId(baseComponents.getOrDefault(DataComponentType.RARITY, 0));
     }
 
+    /**
+     * Returns a modifiable DataComponents map. Should only be used when it must be modified.
+     * Otherwise, prefer using GeyserItemStack's getComponent
+     */
+    @NonNull
     public DataComponents gatherComponents(DataComponents others) {
-        if (others == null) return baseComponents.clone();
-
         DataComponents components = baseComponents.clone();
+        if (others == null) {
+            return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
+        }
         components.getDataComponents().putAll(others.getDataComponents());
-        return components;
+        return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
     }
 
-    public boolean isValidRepairItem(Item other) {
-        return false;
+    @Nullable
+    public <T> T getComponent(@NonNull DataComponentType<T> type) {
+        return baseComponents.get(type);
     }
 
     public String translationKey() {
@@ -121,14 +128,11 @@ public class Item {
             // Return, essentially, air
             return ItemData.builder();
         }
-        ItemData.Builder builder = ItemData.builder()
+
+        return ItemData.builder()
                 .definition(mapping.getBedrockDefinition())
                 .damage(mapping.getBedrockData())
                 .count(count);
-
-        ItemTranslator.translateCustomItem(components, builder, mapping);
-
-        return builder;
     }
 
     public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
@@ -292,7 +296,7 @@ public class Item {
     }
 
     public static Builder builder() {
-        return new Builder().components(new DataComponents(new HashMap<>())); // TODO actually set components here
+        return new Builder().components(new DataComponents(ImmutableMap.of())); // TODO actually set components here
     }
 
     public static final class Builder {
diff --git a/core/src/main/java/org/geysermc/geyser/level/GeyserWorldManager.java b/core/src/main/java/org/geysermc/geyser/level/GeyserWorldManager.java
index befcfa4b7..ca2ebcb08 100644
--- a/core/src/main/java/org/geysermc/geyser/level/GeyserWorldManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/GeyserWorldManager.java
@@ -25,20 +25,15 @@
 
 package org.geysermc.geyser.level;
 
-import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-import org.checkerframework.checker.nullness.qual.NonNull;
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.geysermc.erosion.packet.backendbound.BackendboundBatchBlockRequestPacket;
 import org.geysermc.erosion.packet.backendbound.BackendboundBlockRequestPacket;
-import org.geysermc.erosion.packet.backendbound.BackendboundPickBlockPacket;
 import org.geysermc.erosion.util.BlockPositionIterator;
 import org.geysermc.geyser.erosion.ErosionCancellationException;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.concurrent.CompletableFuture;
 
@@ -124,19 +119,4 @@ public class GeyserWorldManager extends WorldManager {
     public GameMode getDefaultGameMode(GeyserSession session) {
         return GameMode.SURVIVAL;
     }
-
-    @NonNull
-    @Override
-    public CompletableFuture<@Nullable DataComponents> getPickItemComponents(GeyserSession session, int x, int y, int z, boolean addNbtData) {
-        var erosionHandler = session.getErosionHandler().getAsActive();
-        if (erosionHandler == null) {
-            return super.getPickItemComponents(session, x, y, z, addNbtData);
-        } else if (session.isClosed()) {
-            return CompletableFuture.failedFuture(new ErosionCancellationException());
-        }
-        CompletableFuture<Int2ObjectMap<byte[]>> future = new CompletableFuture<>();
-        erosionHandler.setPickBlockLookup(future);
-        erosionHandler.sendPacket(new BackendboundPickBlockPacket(Vector3i.from(x, y, z)));
-        return future.thenApply(RAW_TRANSFORMER);
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/level/WorldManager.java b/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
index 6baf9c2b4..a85462108 100644
--- a/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
@@ -192,16 +192,6 @@ public abstract class WorldManager {
         return null;
     }
 
-    /**
-     * Used for pick block, so we don't need to cache more data than necessary.
-     *
-     * @return expected NBT for this item.
-     */
-    @NonNull
-    public CompletableFuture<@Nullable DataComponents> getPickItemComponents(GeyserSession session, int x, int y, int z, boolean addExtraData) {
-        return CompletableFuture.completedFuture(null);
-    }
-
     /**
      * Retrieves decorated pot sherds from the server. Used to ensure the data is not erased on animation sent
      * through the BlockEntityDataPacket.
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
index 2b0f257a3..26b6aad96 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.session.cache;
 import it.unimi.dsi.fastutil.ints.IntArrays;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.type.Item;
@@ -119,7 +120,10 @@ public final class TagCache {
     /**
      * @return true if the specified network ID is in the given holder set.
      */
-    public <T> boolean is(GeyserHolderSet<T> holderSet, T object) {
+    public <T> boolean is(@Nullable GeyserHolderSet<T> holderSet, @Nullable T object) {
+        if (holderSet == null || object == null) {
+            return false;
+        }
         return contains(holderSet.resolveRaw(this), holderSet.getRegistry().toNetworkId(session, object));
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
index 3c6e02e53..0e0d117a4 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
@@ -25,10 +25,6 @@
 
 package org.geysermc.geyser.session.cache.tags;
 
-import java.util.List;
-import java.util.Objects;
-import java.util.function.ToIntFunction;
-
 import it.unimi.dsi.fastutil.ints.IntArrays;
 import lombok.Data;
 import net.kyori.adventure.key.Key;
@@ -37,6 +33,11 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.TagCache;
 import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.function.ToIntFunction;
 
 /**
  * Similar to vanilla Minecraft's HolderSets, stores either a tag or a list of IDs (this list can also be represented as a single ID in vanilla HolderSets).
@@ -87,6 +88,27 @@ public final class GeyserHolderSet<T> {
         return tagCache.getRaw(Objects.requireNonNull(tag, "HolderSet must have a tag if it doesn't have a list of IDs"));
     }
 
+    /**
+     * Reads a MCPL {@link HolderSet} and turns it into a GeyserHolderSet.
+     * @param registry the registry the HolderSet contains IDs from.
+     * @param holderSet the HolderSet as the MCPL HolderSet object
+     */
+    public static <T> GeyserHolderSet<T> convertHolderSet(@NonNull JavaRegistryKey<T> registry, @Nullable HolderSet holderSet) {
+        if (holderSet == null) {
+            return new GeyserHolderSet<>(registry, IntArrays.EMPTY_ARRAY);
+        }
+
+        if (holderSet.getHolders() != null) {
+            return new GeyserHolderSet<>(registry, holderSet.getHolders());
+        }
+
+        if (holderSet.getLocation() != null) {
+            return new GeyserHolderSet<>(registry, new Tag<>(registry, holderSet.getLocation()));
+        }
+
+        throw new IllegalStateException("HolderSet must have a tag or a list of IDs! " + holderSet);
+    }
+
     /**
      * Reads a HolderSet from an object from NBT.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java b/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java
index 22786a4ee..2434d6d91 100644
--- a/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java
+++ b/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java
@@ -25,10 +25,6 @@
 
 package org.geysermc.geyser.skin;
 
-import org.geysermc.mcprotocollib.auth.GameProfile;
-import org.geysermc.mcprotocollib.auth.GameProfile.Texture;
-import org.geysermc.mcprotocollib.auth.GameProfile.TextureModel;
-import org.geysermc.mcprotocollib.auth.GameProfile.TextureType;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
@@ -36,6 +32,7 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.Setter;
 import org.checkerframework.checker.nullness.qual.NonNull;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.skin.Cape;
 import org.geysermc.geyser.api.skin.Skin;
@@ -46,8 +43,10 @@ import org.geysermc.geyser.entity.type.player.PlayerEntity;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.skin.SkinManager.GameProfileData;
 import org.geysermc.geyser.text.GeyserLocale;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
+import org.geysermc.mcprotocollib.auth.GameProfile;
+import org.geysermc.mcprotocollib.auth.GameProfile.Texture;
+import org.geysermc.mcprotocollib.auth.GameProfile.TextureModel;
+import org.geysermc.mcprotocollib.auth.GameProfile.TextureType;
 
 import java.awt.*;
 import java.awt.image.BufferedImage;
@@ -105,9 +104,7 @@ public class FakeHeadProvider {
                 }
             });
 
-    public static void setHead(GeyserSession session, PlayerEntity entity, DataComponents components) {
-        GameProfile profile = components.get(DataComponentType.PROFILE);
-
+    public static void setHead(GeyserSession session, PlayerEntity entity, @Nullable GameProfile profile) {
         if (profile == null) {
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index 15c19c542..ffaae13d2 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -76,7 +76,6 @@ import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.ItemUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
@@ -252,8 +251,8 @@ public abstract class InventoryTranslator {
                             //only set the head if the destination is the head slot
                             GeyserItemStack javaItem = inventory.getItem(sourceSlot);
                             if (javaItem.asItem() == Items.PLAYER_HEAD
-                                    && javaItem.getComponents() != null) {
-                                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponents());
+                                    && javaItem.hasNonBaseComponents()) {
+                                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentType.PROFILE));
                             }
                         } else if (sourceSlot == 5) {
                             //we are probably removing the head, so restore the original skin
@@ -1020,12 +1019,9 @@ public abstract class InventoryTranslator {
             // As of 1.16.210: Bedrock needs confirmation on what the current item durability is.
             // If 0 is sent, then Bedrock thinks the item is not damaged
             int durability = 0;
-            DataComponents components = itemStack.getComponents();
-            if (components != null) {
-                Integer damage = components.get(DataComponentType.DAMAGE);
-                if (damage != null) {
-                    durability = ItemUtils.getCorrectBedrockDurability(itemStack.asItem(), damage);
-                }
+            Integer damage = itemStack.getComponent(DataComponentType.DAMAGE);
+            if (damage != null) {
+                durability = ItemUtils.getCorrectBedrockDurability(itemStack.asItem(), damage);
             }
 
             itemEntry = new ItemStackResponseSlot((byte) bedrockSlot, (byte) bedrockSlot, (byte) itemStack.getAmount(), itemStack.getNetId(), "", durability);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
index 3b33f5909..e72de744f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
@@ -30,7 +30,6 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.erosion.util.LecternUtils;
-import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.Container;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
@@ -158,13 +157,13 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
                     session.getLastInteractionBlockPosition() : inventory.getHolderPosition();
 
             NbtMap blockEntityTag;
-            if (book.getComponents() != null) {
+            if (book.hasNonBaseComponents()) {
                 int pages = 0;
-                WrittenBookContent writtenBookComponents = book.getComponents().get(DataComponentType.WRITTEN_BOOK_CONTENT);
+                WrittenBookContent writtenBookComponents = book.getComponent(DataComponentType.WRITTEN_BOOK_CONTENT);
                 if (writtenBookComponents != null) {
                     pages = writtenBookComponents.getPages().size();
                 } else {
-                    WritableBookContent writableBookComponents = book.getComponents().get(DataComponentType.WRITABLE_BOOK_CONTENT);
+                    WritableBookContent writableBookComponents = book.getComponent(DataComponentType.WRITABLE_BOOK_CONTENT);
                     if (writableBookComponents != null) {
                         pages = writableBookComponents.getPages().size();
                     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
index 0694e2ac6..7cdcbe8a9 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
@@ -49,11 +49,9 @@ import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerButtonClickPacket;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 
 public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
@@ -156,16 +154,11 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
 
         GeyserItemStack inputCopy = inventory.getItem(0).copy(1);
         inputCopy.setNetId(session.getNextItemNetId());
-        // Add the pattern manually, for better item synchronization
-        if (inputCopy.getComponents() == null) {
-            inputCopy.setComponents(new DataComponents(new HashMap<>()));
-        }
-
         BannerPatternLayer bannerPatternLayer = BannerItem.getJavaBannerPattern(session, pattern); // TODO
         if (bannerPatternLayer != null) {
-            List<BannerPatternLayer> patternsList = inputCopy.getComponents().getOrDefault(DataComponentType.BANNER_PATTERNS, new ArrayList<>());
+            List<BannerPatternLayer> patternsList = inputCopy.getComponentOrFallback(DataComponentType.BANNER_PATTERNS, new ArrayList<>());
             patternsList.add(bannerPatternLayer);
-            inputCopy.getComponents().put(DataComponentType.BANNER_PATTERNS, patternsList);
+            inputCopy.getOrCreateComponents().put(DataComponentType.BANNER_PATTERNS, patternsList);
         }
 
         // Set the new item as the output
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index 8fd365d7f..f08b90765 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -58,6 +58,7 @@ import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
 
 import java.util.Arrays;
@@ -103,8 +104,8 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             contents[i - 5] = item.getItemData(session);
             if (i == 5 &&
                     item.asItem() == Items.PLAYER_HEAD &&
-                    item.getComponents() != null) {
-                FakeHeadProvider.setHead(session, session.getPlayerEntity(), item.getComponents());
+                    item.hasNonBaseComponents()) {
+                FakeHeadProvider.setHead(session, session.getPlayerEntity(), item.getComponent(DataComponentType.PROFILE));
             }
         }
         armorContentPacket.setContents(Arrays.asList(contents));
@@ -147,8 +148,8 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
         if (slot == 5) {
             // Check for custom skull
             if (javaItem.asItem() == Items.PLAYER_HEAD
-                    && javaItem.getComponents() != null) {
-                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponents());
+                    && javaItem.hasNonBaseComponents()) {
+                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentType.PROFILE));
             } else {
                 FakeHeadProvider.restoreOriginalSkin(session, session.getPlayerEntity());
             }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 062666f84..284296209 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -112,7 +112,7 @@ public final class ItemTranslator {
         NbtMap nbt = data.getTag();
         if (nbt != null && !nbt.isEmpty()) {
             // translateToJava may have added components
-            DataComponents components = itemStack.getComponents() == null ? new DataComponents(new HashMap<>()) : itemStack.getComponents();
+            DataComponents components = itemStack.getOrCreateComponents();
             javaItem.translateNbtToJava(session, nbt, components, bedrockItem);
             if (!components.getDataComponents().isEmpty()) {
                 itemStack.setComponents(components);
@@ -193,7 +193,7 @@ public final class ItemTranslator {
         }
 
         if (bedrockItem.getJavaItem().equals(Items.PLAYER_HEAD)) {
-            translatePlayerHead(session, components, builder);
+            translatePlayerHead(session, components.get(DataComponentType.PROFILE), builder);
         }
 
         translateCustomItem(components, builder, bedrockItem);
@@ -391,7 +391,7 @@ public final class ItemTranslator {
             return ItemDefinition.AIR;
         }
 
-        ItemMapping mapping = itemStack.asItem().toBedrockDefinition(itemStack.getComponents(), session.getItemMappings());
+        ItemMapping mapping = itemStack.asItem().toBedrockDefinition(itemStack.getAllComponents(), session.getItemMappings());
 
         ItemDefinition itemDefinition = mapping.getBedrockDefinition();
         CustomBlockData customBlockData = BlockRegistries.CUSTOM_BLOCK_ITEM_OVERRIDES.getOrDefault(
@@ -401,7 +401,7 @@ public final class ItemTranslator {
         }
 
         if (mapping.getJavaItem().equals(Items.PLAYER_HEAD)) {
-            CustomSkull customSkull = getCustomSkull(itemStack.getComponents());
+            CustomSkull customSkull = getCustomSkull(itemStack.getComponent(DataComponentType.PROFILE));
             if (customSkull != null) {
                 itemDefinition = session.getItemMappings().getCustomBlockItemDefinitions().get(customSkull.getCustomBlockData());
             }
@@ -466,39 +466,35 @@ public final class ItemTranslator {
         builder.blockDefinition(blockDefinition);
     }
 
-    private static @Nullable CustomSkull getCustomSkull(DataComponents components) {
-        if (components == null) {
+    private static @Nullable CustomSkull getCustomSkull(@Nullable GameProfile profile) {
+        if (profile == null) {
             return null;
         }
-        
-        GameProfile profile = components.get(DataComponentType.PROFILE);
-        if (profile != null) {
-            Map<TextureType, Texture> textures;
-            try {
-                textures = profile.getTextures(false);
-            } catch (IllegalStateException e) {
-                GeyserImpl.getInstance().getLogger().debug("Could not decode player head from profile %s, got: %s".formatted(profile, e.getMessage()));
-                return null;
-            }
 
-            if (textures == null || textures.isEmpty()) {
-                return null;
-            }
-
-            Texture skinTexture = textures.get(TextureType.SKIN);
-
-            if (skinTexture == null) {
-                return null;
-            }
-
-            String skinHash = skinTexture.getURL().substring(skinTexture.getURL().lastIndexOf('/') + 1);
-            return BlockRegistries.CUSTOM_SKULLS.get(skinHash);
+        Map<TextureType, Texture> textures;
+        try {
+            textures = profile.getTextures(false);
+        } catch (IllegalStateException e) {
+            GeyserImpl.getInstance().getLogger().debug("Could not decode player head from profile %s, got: %s".formatted(profile, e.getMessage()));
+            return null;
         }
-        return null;
+
+        if (textures == null || textures.isEmpty()) {
+            return null;
+        }
+
+        Texture skinTexture = textures.get(TextureType.SKIN);
+
+        if (skinTexture == null) {
+            return null;
+        }
+
+        String skinHash = skinTexture.getURL().substring(skinTexture.getURL().lastIndexOf('/') + 1);
+        return BlockRegistries.CUSTOM_SKULLS.get(skinHash);
     }
 
-    private static void translatePlayerHead(GeyserSession session, DataComponents components, ItemData.Builder builder) {
-        CustomSkull customSkull = getCustomSkull(components);
+    private static void translatePlayerHead(GeyserSession session, GameProfile profile, ItemData.Builder builder) {
+        CustomSkull customSkull = getCustomSkull(profile);
         if (customSkull != null) {
             CustomBlockData customBlockData = customSkull.getCustomBlockData();
             ItemDefinition itemDefinition = session.getItemMappings().getCustomBlockItemDefinitions().get(customBlockData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java
index 456b6507f..700ba0532 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java
@@ -53,7 +53,7 @@ public class BedrockBookEditTranslator extends PacketTranslator<BookEditPacket>
 
         GeyserItemStack itemStack = session.getPlayerInventory().getItemInHand();
         if (itemStack != null) {
-            DataComponents components = itemStack.getComponents() != null ? itemStack.getComponents() : new DataComponents(new HashMap<>());
+            DataComponents components = itemStack.getOrCreateComponents();
             ItemStack bookItem = new ItemStack(itemStack.getJavaId(), itemStack.getAmount(), components);
             List<String> pages = new LinkedList<>();
 
diff --git a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
index 6367b2d14..1d84c169e 100644
--- a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
@@ -131,6 +131,7 @@ public final class BlockUtils {
         return 1.0 / speed;
     }
 
+    // TODO 1.21.4 this changed probably; no more tiers
     public static double getBreakTime(GeyserSession session, Block block, ItemMapping item, @Nullable DataComponents components, boolean isSessionPlayer) {
         boolean isShearsEffective = session.getTagCache().is(BlockTag.LEAVES, block) || session.getTagCache().is(BlockTag.WOOL, block); //TODO called twice
         boolean canHarvestWithHand = !block.requiresCorrectToolForDrops();
@@ -160,7 +161,7 @@ public final class BlockUtils {
 
         boolean waterInEyes = session.getCollisionManager().isWaterInEyes();
         boolean insideOfWaterWithoutAquaAffinity = waterInEyes &&
-                ItemUtils.getEnchantmentLevel(session, session.getPlayerInventory().getItem(5).getComponents(), BedrockEnchantment.AQUA_AFFINITY) < 1;
+                ItemUtils.getEnchantmentLevel(session, session.getPlayerInventory().getItem(5).getAllComponents(), BedrockEnchantment.AQUA_AFFINITY) < 1;
 
         return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
                 toolEfficiencyLevel, hasteLevel, miningFatigueLevel, insideOfWaterWithoutAquaAffinity, session.getPlayerEntity().isOnGround());
@@ -173,7 +174,7 @@ public final class BlockUtils {
         DataComponents components = null;
         if (item != null) {
             mapping = item.getMapping(session);
-            components = item.getComponents();
+            components = item.getAllComponents();
         }
         return getBreakTime(session, block, mapping, components, true);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java b/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java
index eec0d173d..eca9756e6 100644
--- a/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.util;
 
-import net.kyori.adventure.text.Component;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.item.Items;
@@ -102,17 +101,6 @@ public final class ItemUtils {
         return original;
     }
 
-    /**
-     * @param components the data components of the item
-     * @return the custom name of the item
-     */
-    public static @Nullable Component getCustomName(DataComponents components) {
-        if (components == null) {
-            return null;
-        }
-        return components.get(DataComponentType.CUSTOM_NAME);
-    }
-
     private ItemUtils() {
     }
 }

From 77ffb6098ea78c1f1df33199f28a98795225e40f Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Mon, 2 Dec 2024 02:48:54 +0800
Subject: [PATCH 084/165] Better immutability checks

---
 .../main/java/org/geysermc/geyser/item/type/Item.java    | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index c851ee332..fde742efa 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -63,7 +63,7 @@ public class Item {
     protected final Key javaIdentifier;
     private int javaId = -1;
     private final int attackDamage;
-    private final DataComponents baseComponents;
+    private final DataComponents baseComponents; // unmodifiable
 
     private final List<Item> enchantmentGlintPresent = List.of(Items.ENCHANTED_GOLDEN_APPLE, Items.EXPERIENCE_BOTTLE, Items.WRITTEN_BOOK,
         Items.NETHER_STAR, Items.ENCHANTED_BOOK, Items.END_CRYSTAL);
@@ -104,10 +104,11 @@ public class Item {
      */
     @NonNull
     public DataComponents gatherComponents(DataComponents others) {
-        DataComponents components = baseComponents.clone();
         if (others == null) {
-            return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
+            return baseComponents;
         }
+
+        DataComponents components = baseComponents.clone();
         components.getDataComponents().putAll(others.getDataComponents());
         return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
     }
@@ -315,7 +316,7 @@ public class Item {
         }
 
         public DataComponents components() {
-            return this.components;
+            return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
         }
 
         private Builder() {

From a19e7cb9f42f5753d8db22c1ebb7ef314b8554e2 Mon Sep 17 00:00:00 2001
From: Arno Keesman <34793978+arnokeesman@users.noreply.github.com>
Date: Mon, 2 Dec 2024 21:06:06 +0100
Subject: [PATCH 085/165] Bump cloud-minecraft-modded (#5181)

fixes crashes on fabric from the previously included Fabric Permissions API
---
 gradle/libs.versions.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1e942df77..01fffb29f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -28,7 +28,7 @@ viaversion = "4.9.2"
 adapters = "1.15-SNAPSHOT"
 cloud = "2.0.0-rc.2"
 cloud-minecraft = "2.0.0-beta.9"
-cloud-minecraft-modded = "2.0.0-beta.9"
+cloud-minecraft-modded = "2.0.0-beta.10"
 commodore = "2.2"
 bungeecord = "a7c6ede"
 velocity = "3.3.0-SNAPSHOT"

From d956354b7f401664de7103228bc4f7ec5213802b Mon Sep 17 00:00:00 2001
From: BugTeaON <99161186+BUGTeas@users.noreply.github.com>
Date: Tue, 3 Dec 2024 14:03:09 +0800
Subject: [PATCH 086/165] =?UTF-8?q?Feature=EF=BC=9AMake=20custom=20effect?=
 =?UTF-8?q?=20information=20visible=20&=20Support=20for=20customizing=20it?=
 =?UTF-8?q?em=20name=20via=20'custom=5Fname'=20tag=20in=20'potion=5Fconten?=
 =?UTF-8?q?ts'=20component=20(new=20feature=20since=201.21.2)=20(#5176)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Make custom effect information visible

* Support for customizing item name via 'custom_name' tag in 'potion_contents' component

* A little optimization of custom effect information

* The effect information should appear in front of the custom lore
---
 .../geysermc/geyser/item/type/PotionItem.java | 13 ++++
 .../geyser/item/type/TippedArrowItem.java     | 14 ++++
 .../translator/item/ItemTranslator.java       | 78 +++++++++++++++++++
 3 files changed, 105 insertions(+)

diff --git a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
index 89e60b325..4cc3756cd 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
@@ -34,7 +34,9 @@ import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
+import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
@@ -68,6 +70,17 @@ public class PotionItem extends Item {
         return super.translateToBedrock(session, count, components, mapping, mappings);
     }
 
+    @Override
+    public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
+        // Make custom effect information visible
+        PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+        if (potionContents != null) {
+            ItemTranslator.addPotionEffectLore(potionContents, builder, session.locale());
+        }
+
+        super.translateComponentsToBedrock(session, components, builder);
+    }
+
     @Override
     public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         Potion potion = Potion.getByBedrockId(itemData.getDamage());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
index 09e4ee21f..9e212ebef 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
@@ -25,12 +25,15 @@
 
 package org.geysermc.geyser.item.type;
 
+import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.item.BedrockItemBuilder;
+import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
@@ -57,4 +60,15 @@ public class TippedArrowItem extends ArrowItem {
         }
         return super.translateToBedrock(session, count, components, mapping, mappings);
     }
+
+    @Override
+    public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
+        // Make custom effect information visible
+        PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+        if (potionContents != null) {
+            ItemTranslator.addPotionEffectLore(potionContents, builder, session.locale());
+        }
+
+        super.translateComponentsToBedrock(session, components, builder);
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 3cfd00233..97cb3df2f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -26,6 +26,7 @@
 package org.geysermc.geyser.translator.item;
 
 import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.TranslatableComponent;
 import net.kyori.adventure.text.format.NamedTextColor;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
@@ -55,6 +56,7 @@ import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.auth.GameProfile.Texture;
 import org.geysermc.mcprotocollib.auth.GameProfile.TextureType;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.Effect;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.AttributeType;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.ModifierOperation;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
@@ -63,12 +65,16 @@ import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponen
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemAttributeModifiers;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.MobEffectDetails;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.MobEffectInstance;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.EnumMap;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 public final class ItemTranslator {
@@ -324,6 +330,65 @@ public final class ItemTranslator {
         return MessageTranslator.convertMessage(attributeComponent, language);
     }
 
+    private static final List<Effect> negativeEffectList = List.of(
+        Effect.SLOWNESS,
+        Effect.MINING_FATIGUE,
+        Effect.INSTANT_DAMAGE,
+        Effect.NAUSEA,
+        Effect.BLINDNESS,
+        Effect.HUNGER,
+        Effect.WEAKNESS,
+        Effect.POISON,
+        Effect.WITHER,
+        Effect.LEVITATION,
+        Effect.UNLUCK,
+        Effect.DARKNESS,
+        Effect.WIND_CHARGED,
+        Effect.WEAVING,
+        Effect.OOZING,
+        Effect.INFESTED
+    );
+
+    public static void addPotionEffectLore(PotionContents contents, BedrockItemBuilder builder, String language) {
+        List<MobEffectInstance> effectInstanceList = contents.getCustomEffects();
+        for (MobEffectInstance effectInstance : effectInstanceList) {
+            Effect effect = effectInstance.getEffect();
+            MobEffectDetails details = effectInstance.getDetails();
+            int amplifier = details.getAmplifier();
+            int durations = details.getDuration();
+            TranslatableComponent appendTranslatable = Component.translatable("effect.minecraft." + effect.toString().toLowerCase(Locale.ROOT));
+            if (amplifier != 0) {
+                appendTranslatable = Component.translatable("potion.withAmplifier",
+                    appendTranslatable,
+                    Component.translatable("potion.potency." + amplifier));
+            }
+            if (durations > 20) {
+                int seconds = durations / 20;
+                int secondsFormat = seconds % 60;
+                int minutes = seconds / 60;
+                int minutesFormat = minutes % 60;
+                int hours = minutes / 60;
+                String text = ((minutesFormat > 9) ? "" : "0") + minutesFormat + ":" + ((secondsFormat > 9) ? "" : "0") + secondsFormat;
+                if (minutes >= 60) {
+                    text = ((hours > 9) ? "" : "0") + hours + ":" + text;
+                }
+                appendTranslatable = Component.translatable("potion.withDuration",
+                    appendTranslatable,
+                    Component.text(text));
+            } else if (durations == -1) {
+                appendTranslatable = Component.translatable("potion.withDuration",
+                    appendTranslatable,
+                    Component.translatable("effect.duration.infinite"));
+            }
+            Component component = Component.text()
+                .resetStyle()
+                .color((negativeEffectList.contains(effect)) ? NamedTextColor.RED : NamedTextColor.BLUE)
+                .append(appendTranslatable)
+                .build();
+            builder.getOrCreateLore().add(MessageTranslator.convertMessage(component, language));
+        }
+    }
+
     private static void addAdvancedTooltips(@Nullable DataComponents components, BedrockItemBuilder builder, Item item, String language) {
         int maxDurability = item.maxDamage();
 
@@ -448,6 +513,19 @@ public final class ItemTranslator {
             if (customName != null) {
                 return MessageTranslator.convertMessage(customName, session.locale());
             }
+            PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+            if (potionContents != null) {
+                // "custom_name" tag in "potion_contents" component
+                String customPotionName = potionContents.getCustomName();
+                if (customPotionName != null) {
+                    Component component = Component.text()
+                        .resetStyle()
+                        .color(NamedTextColor.WHITE)
+                        .append(Component.translatable(mapping.getJavaItem().translationKey() + ".effect." + customPotionName))
+                        .build();
+                    return MessageTranslator.convertMessage(component, session.locale());
+                }
+            }
             customName = components.get(DataComponentType.ITEM_NAME);
             if (customName != null) {
                 // Get the translated name and prefix it with a reset char to prevent italics - matches Java Edition

From 289a74975d607312e5860f028a71b3f6022d81b8 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 3 Dec 2024 17:25:48 +0800
Subject: [PATCH 087/165] start implementing new block breaking

---
 .../entity/attribute/GeyserAttributeType.java |   3 +
 .../type/player/SessionPlayerEntity.java      |   9 +
 .../geyser/session/GeyserSession.java         |   5 +
 .../player/input/BedrockBlockActions.java     |   5 +-
 .../org/geysermc/geyser/util/BlockUtils.java  | 246 +++++++++---------
 5 files changed, 150 insertions(+), 118 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java b/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java
index 1e050c840..833f2f46d 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java
@@ -51,6 +51,9 @@ public enum GeyserAttributeType {
     MAX_HEALTH("minecraft:generic.max_health", null, 0f, 1024f, 20f),
     SCALE("minecraft:generic.scale", null, 0.0625f, 16f, 1f),
     BLOCK_INTERACTION_RANGE("minecraft:player.block_interaction_range", null, 0.0f, 64f, 4.5f),
+    MINING_EFFICIENCY("minecraft:mining_efficiency", null, 0f, 1024f, 0f),
+    BLOCK_BREAK_SPEED("minecraft:block_break_speed", null, 0f, 1024f, 1f),
+    SUBMERGED_MINING_SPEED("minecraft:submerged_mining_speed", null, 0f, 20f, 0.2f),
 
     // Bedrock Attributes
     ABSORPTION(null, "minecraft:absorption", 0f, 1024f, 0f),
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index 9d5bc011c..7543e05bc 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -286,6 +286,15 @@ public class SessionPlayerEntity extends PlayerEntity {
         return attributeData;
     }
 
+    public float attributeOrDefault(GeyserAttributeType type) {
+        var attribute = this.attributes.get(type);
+        if (attribute == null) {
+            return type.getDefaultValue();
+        }
+
+        return attribute.getValue();
+    }
+
     public void setLastDeathPosition(@Nullable GlobalPos pos) {
         if (pos != null) {
             dirtyMetadata.put(EntityDataTypes.PLAYER_LAST_DEATH_POS, pos.getPosition());
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index ef6261ead..9b49b3cfc 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -523,6 +523,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     @Setter
     private long blockBreakStartTime;
 
+    /**
+     * // TODO
+     */
+    private long destroyProgress;
+
     /**
      * Stores whether the player intended to place a bucket.
      */
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
index 061a04b77..ea386ebcf 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
@@ -32,6 +32,7 @@ import org.cloudburstmc.protocol.bedrock.data.PlayerActionType;
 import org.cloudburstmc.protocol.bedrock.data.PlayerBlockActionData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
+import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.block.custom.CustomBlockState;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.ItemFrameEntity;
@@ -88,7 +89,7 @@ final class BedrockBlockActions {
                 LevelEventPacket startBreak = new LevelEventPacket();
                 startBreak.setType(LevelEvent.BLOCK_START_BREAK);
                 startBreak.setPosition(vector.toFloat());
-                double breakTime = BlockUtils.getSessionBreakTime(session, BlockState.of(blockState).block()) * 20;
+                double breakTime = BlockUtils.getSessionBreakTime(session, BlockState.of(blockState).block()) * 20; // TODO afdaöwelfunöwoaenf
 
                 // If the block is custom or the breaking item is custom, we must keep track of break time ourselves
                 GeyserItemStack item = session.getPlayerInventory().getItemInHand();
@@ -169,6 +170,7 @@ final class BedrockBlockActions {
                 if (session.getGameMode() != GameMode.CREATIVE) {
                     // As of 1.16.210: item frame items are taken out here.
                     // Survival also sends START_BREAK, but by attaching our process here adventure mode also works
+                    GeyserImpl.getInstance().getLogger().warning("abort break, not creative - item frame???");
                     Entity itemFrameEntity = ItemFrameEntity.getItemFrameEntity(session, vector);
                     if (itemFrameEntity != null) {
                         ServerboundInteractPacket interactPacket = new ServerboundInteractPacket(itemFrameEntity.getEntityId(),
@@ -180,6 +182,7 @@ final class BedrockBlockActions {
 
                 ServerboundPlayerActionPacket abortBreakingPacket = new ServerboundPlayerActionPacket(PlayerAction.CANCEL_DIGGING, vector, Direction.DOWN, 0);
                 session.sendDownstreamGamePacket(abortBreakingPacket);
+
                 LevelEventPacket stopBreak = new LevelEventPacket();
                 stopBreak.setType(LevelEvent.BLOCK_STOP_BREAK);
                 stopBreak.setPosition(vector.toFloat());
diff --git a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
index 1d84c169e..52a4a6df9 100644
--- a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
@@ -27,156 +27,168 @@ package org.geysermc.geyser.util;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
+import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
+import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.PlayerInventory;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.EntityEffectCache;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
 import org.geysermc.geyser.session.cache.tags.BlockTag;
+import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.collision.BlockCollision;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.AttributeType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.ToolData;
 
 public final class BlockUtils {
 
-    private static boolean correctTool(GeyserSession session, Block block, String itemToolType) {
-        return switch (itemToolType) {
-            case "axe" -> session.getTagCache().is(BlockTag.MINEABLE_AXE, block);
-            case "hoe" -> session.getTagCache().is(BlockTag.MINEABLE_HOE, block);
-            case "pickaxe" -> session.getTagCache().is(BlockTag.MINEABLE_PICKAXE, block);
-            case "shears" -> session.getTagCache().is(BlockTag.LEAVES, block) || session.getTagCache().is(BlockTag.WOOL, block);
-            case "shovel" -> session.getTagCache().is(BlockTag.MINEABLE_SHOVEL, block);
-            case "sword" -> block == Blocks.COBWEB;
-            default -> {
-                session.getGeyser().getLogger().warning("Unknown tool type: " + itemToolType);
-                yield false;
+    public static float getBlockDestroyProgress(GeyserSession session, BlockState blockState, GeyserItemStack itemInHand) {
+        float destroySpeed = blockState.block().destroyTime();
+        if (destroySpeed == -1) {
+            return 0;
+        }
+
+        int speedMultiplier = hasCorrectTool(session, blockState.block(), itemInHand) ? 30 : 100;
+        return getPlayerDestroySpeed(session, blockState, itemInHand) / destroySpeed / speedMultiplier;
+    }
+
+    private static boolean hasCorrectTool(GeyserSession session, Block block, GeyserItemStack stack) {
+        return !block.requiresCorrectToolForDrops() || isCorrectItemForDrops(session, block, stack);
+    }
+
+    private static boolean isCorrectItemForDrops(GeyserSession session, Block block, GeyserItemStack stack) {
+        ToolData tool = stack.getComponent(DataComponentType.TOOL);
+        if (tool == null) {
+            return false;
+        }
+
+        for (ToolData.Rule rule : tool.getRules()) {
+            if (rule.getCorrectForDrops() != null) {
+                GeyserHolderSet<Block> set = GeyserHolderSet.convertHolderSet(JavaRegistries.BLOCK, rule.getBlocks());
+                if (session.getTagCache().is(set, block)) {
+                    return rule.getCorrectForDrops();
+                }
             }
-        };
+        }
+
+        return false;
     }
 
-    private static double toolBreakTimeBonus(String toolType, String toolTier, boolean isShearsEffective) {
-        if (toolType.equals("shears")) return isShearsEffective ? 5.0 : 15.0;
-        if (toolType.isEmpty()) return 1.0;
-        return switch (toolTier) {
-            // https://minecraft.wiki/w/Breaking#Speed
-            case "wooden" -> 2.0;
-            case "stone" -> 4.0;
-            case "iron" -> 6.0;
-            case "diamond" -> 8.0;
-            case "netherite" -> 9.0;
-            case "golden" -> 12.0;
-            default -> 1.0;
-        };
+    private static float getItemDestroySpeed(GeyserSession session, Block block, GeyserItemStack stack) {
+        ToolData tool = stack.getComponent(DataComponentType.TOOL);
+        if (tool == null) {
+            return 1f;
+        }
+
+        for (ToolData.Rule rule : tool.getRules()) {
+            if (rule.getSpeed() != null) {
+                GeyserHolderSet<Block> set = GeyserHolderSet.convertHolderSet(JavaRegistries.BLOCK, rule.getBlocks());
+                if (session.getTagCache().is(set, block)) {
+                    return rule.getSpeed();
+                }
+            }
+        }
+
+        return tool.getDefaultMiningSpeed();
     }
 
-    private static boolean canToolTierBreakBlock(GeyserSession session, Block block, String toolTier) {
-        if (toolTier.equals("netherite") || toolTier.equals("diamond")) {
-            // As of 1.17, these tiers can mine everything that is mineable
-            return true;
+    private static float getPlayerDestroySpeed(GeyserSession session, BlockState blockState, GeyserItemStack itemInHand) {
+        float destroySpeed = getItemDestroySpeed(session, blockState.block(), itemInHand);
+        EntityEffectCache effectCache = session.getEffectCache();
+
+        if (destroySpeed > 1.0F) {
+            destroySpeed += session.getPlayerEntity().attributeOrDefault(GeyserAttributeType.MINING_EFFICIENCY);
         }
 
-        switch (toolTier) {
-            // Use intentional fall-throughs to check each tier with this block
-            default:
-                if (session.getTagCache().is(BlockTag.NEEDS_STONE_TOOL, block)) {
-                    return false;
-                }
-            case "stone":
-                if (session.getTagCache().is(BlockTag.NEEDS_IRON_TOOL, block)) {
-                    return false;
-                }
-            case "iron":
-                if (session.getTagCache().is(BlockTag.NEEDS_DIAMOND_TOOL, block)) {
-                    return false;
-                }
+        int miningSpeedMultiplier = getMiningSpeedAmplification(effectCache);
+        if (miningSpeedMultiplier > 0) {
+            destroySpeed *= miningSpeedMultiplier * 0.2F;
         }
 
-        return true;
+        if (effectCache.getMiningFatigue() != 0) {
+            float slowdown = switch (effectCache.getMiningFatigue()) {
+                case 1 -> 0.3F;
+                case 2 -> 0.09F;
+                case 3 -> 0.0027F;
+                default -> 8.1E-4F;
+            };
+            destroySpeed *= slowdown;
+        }
+
+        destroySpeed *= session.getPlayerEntity().attributeOrDefault(GeyserAttributeType.BLOCK_BREAK_SPEED);
+        if (session.getCollisionManager().isWaterInEyes()) {
+            destroySpeed *= session.getPlayerEntity().attributeOrDefault(GeyserAttributeType.SUBMERGED_MINING_SPEED);
+        }
+
+        if (!session.getPlayerEntity().isOnGround()) {
+            destroySpeed /= 5F;
+        }
+
+        return destroySpeed;
     }
 
-    // https://minecraft.wiki/w/Breaking
-    private static double calculateBreakTime(double blockHardness, String toolTier, boolean canHarvestWithHand, boolean correctTool, boolean canTierMineBlock,
-                                             String toolType, boolean isShearsEffective, int toolEfficiencyLevel, int hasteLevel, int miningFatigueLevel,
-                                             boolean insideOfWaterWithoutAquaAffinity, boolean onGround) {
-        double baseTime = (((correctTool && canTierMineBlock) || canHarvestWithHand) ? 1.5 : 5.0) * blockHardness;
-        double speed = 1.0 / baseTime;
+    private static int getMiningSpeedAmplification(EntityEffectCache cache) {
+        return Math.max(cache.getHaste(), cache.getConduitPower());
+    }
 
-        if (correctTool) {
-            speed *= toolBreakTimeBonus(toolType, toolTier, isShearsEffective);
-            speed += toolEfficiencyLevel == 0 ? 0 : toolEfficiencyLevel * toolEfficiencyLevel + 1;
-        }
-        speed *= 1.0 + (0.2 * hasteLevel);
-
-        switch (miningFatigueLevel) {
-            case 0:
-                break;
-            case 1:
-                speed -= (speed * 0.7);
-                break;
-            case 2:
-                speed -= (speed * 0.91);
-                break;
-            case 3:
-                speed -= (speed * 0.9973);
-                break;
-            default:
-                speed -= (speed * 0.99919);
-                break;
-        }
-
-        if (insideOfWaterWithoutAquaAffinity) speed *= 0.2;
-        if (!onGround) speed *= 0.2;
-        return 1.0 / speed;
+    public int getDestroyStage(GeyserSession session) {
+        return session.getDestroyProgress() > 0F ? (int) session.getDestroyProgress() * 10 : -1;
     }
 
     // TODO 1.21.4 this changed probably; no more tiers
     public static double getBreakTime(GeyserSession session, Block block, ItemMapping item, @Nullable DataComponents components, boolean isSessionPlayer) {
-        boolean isShearsEffective = session.getTagCache().is(BlockTag.LEAVES, block) || session.getTagCache().is(BlockTag.WOOL, block); //TODO called twice
-        boolean canHarvestWithHand = !block.requiresCorrectToolForDrops();
-        String toolType = "";
-        String toolTier = "";
-        boolean correctTool = false;
-        boolean toolCanBreak = false;
-        if (item.isTool()) {
-            toolType = item.getToolType();
-            toolTier = item.getToolTier();
-            correctTool = correctTool(session, block, toolType);
-            toolCanBreak = canToolTierBreakBlock(session, block, toolTier);
-        }
-
-        int toolEfficiencyLevel = ItemUtils.getEnchantmentLevel(session, components, BedrockEnchantment.EFFICIENCY);
-        int hasteLevel = 0;
-        int miningFatigueLevel = 0;
-
-        if (!isSessionPlayer) {
-            // Another entity is currently mining; we have all the information we know
-            return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
-                    toolEfficiencyLevel, hasteLevel, miningFatigueLevel, false, true);
-        }
-
-        hasteLevel = Math.max(session.getEffectCache().getHaste(), session.getEffectCache().getConduitPower());
-        miningFatigueLevel = session.getEffectCache().getMiningFatigue();
-
-        boolean waterInEyes = session.getCollisionManager().isWaterInEyes();
-        boolean insideOfWaterWithoutAquaAffinity = waterInEyes &&
-                ItemUtils.getEnchantmentLevel(session, session.getPlayerInventory().getItem(5).getAllComponents(), BedrockEnchantment.AQUA_AFFINITY) < 1;
-
-        return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
-                toolEfficiencyLevel, hasteLevel, miningFatigueLevel, insideOfWaterWithoutAquaAffinity, session.getPlayerEntity().isOnGround());
+//        boolean isShearsEffective = session.getTagCache().is(BlockTag.LEAVES, block) || session.getTagCache().is(BlockTag.WOOL, block); //TODO called twice
+//        boolean canHarvestWithHand = !block.requiresCorrectToolForDrops();
+//        String toolType = "";
+//        String toolTier = "";
+//        boolean correctTool = false;
+//        boolean toolCanBreak = false;
+//        if (item.isTool()) {
+//            toolType = item.getToolType();
+//            toolTier = item.getToolTier();
+//            correctTool = correctTool(session, block, toolType);
+//            toolCanBreak = canToolTierBreakBlock(session, block, toolTier);
+//        }
+//
+//        int toolEfficiencyLevel = ItemUtils.getEnchantmentLevel(session, components, BedrockEnchantment.EFFICIENCY);
+//        int hasteLevel = 0;
+//        int miningFatigueLevel = 0;
+//
+//        if (!isSessionPlayer) {
+//            // Another entity is currently mining; we have all the information we know
+//            return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
+//                    toolEfficiencyLevel, hasteLevel, miningFatigueLevel, false, true);
+//        }
+//
+//        hasteLevel = Math.max(session.getEffectCache().getHaste(), session.getEffectCache().getConduitPower());
+//        miningFatigueLevel = session.getEffectCache().getMiningFatigue();
+//
+//        boolean waterInEyes = session.getCollisionManager().isWaterInEyes();
+//        boolean insideOfWaterWithoutAquaAffinity = waterInEyes &&
+//                ItemUtils.getEnchantmentLevel(session, session.getPlayerInventory().getItem(5).getAllComponents(), BedrockEnchantment.AQUA_AFFINITY) < 1;
+//
+//        return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
+//                toolEfficiencyLevel, hasteLevel, miningFatigueLevel, insideOfWaterWithoutAquaAffinity, session.getPlayerEntity().isOnGround());
     }
 
     public static double getSessionBreakTime(GeyserSession session, Block block) {
-        PlayerInventory inventory = session.getPlayerInventory();
-        GeyserItemStack item = inventory.getItemInHand();
-        ItemMapping mapping = ItemMapping.AIR;
-        DataComponents components = null;
-        if (item != null) {
-            mapping = item.getMapping(session);
-            components = item.getAllComponents();
-        }
-        return getBreakTime(session, block, mapping, components, true);
+//        PlayerInventory inventory = session.getPlayerInventory();
+//        GeyserItemStack item = inventory.getItemInHand();
+//        ItemMapping mapping = ItemMapping.AIR;
+//        DataComponents components = null;
+//        if (item != null) {
+//            mapping = item.getMapping(session);
+//            components = item.getAllComponents();
+//        }
+//        return getBreakTime(session, block, mapping, components, true);
     }
 
     /**

From 650cb8d4733f52fa19020a0cf4c8631e205b65fa Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 3 Dec 2024 18:35:02 +0800
Subject: [PATCH 088/165] remove isValidRepairItem in favor of component,
 remove unneeded item tiers, deprecate repair items and tool tier in
 NonVanillaCustomItemData

---
 .../item/custom/NonVanillaCustomItemData.java | 10 ++-
 .../java/org/geysermc/geyser/item/Items.java  |  6 +-
 .../geyser/item/components/ToolTier.java      | 64 -------------------
 .../geysermc/geyser/item/type/ArmorItem.java  | 10 +--
 .../geyser/item/type/DyeableArmorItem.java    |  5 +-
 .../geysermc/geyser/item/type/ElytraItem.java | 39 -----------
 .../geysermc/geyser/item/type/LightItem.java  |  1 -
 .../geysermc/geyser/item/type/MaceItem.java   | 39 -----------
 .../geysermc/geyser/item/type/ShieldItem.java |  7 --
 .../geysermc/geyser/item/type/TieredItem.java | 46 -------------
 .../geyser/item/type/WolfArmorItem.java       |  5 +-
 .../CustomItemRegistryPopulator.java          | 18 +++---
 .../geyser/registry/type/ItemMapping.java     |  2 -
 13 files changed, 19 insertions(+), 233 deletions(-)
 delete mode 100644 core/src/main/java/org/geysermc/geyser/item/components/ToolTier.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/item/type/ElytraItem.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/item/type/MaceItem.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/item/type/TieredItem.java

diff --git a/api/src/main/java/org/geysermc/geyser/api/item/custom/NonVanillaCustomItemData.java b/api/src/main/java/org/geysermc/geyser/api/item/custom/NonVanillaCustomItemData.java
index 2c283780c..2fff247a7 100644
--- a/api/src/main/java/org/geysermc/geyser/api/item/custom/NonVanillaCustomItemData.java
+++ b/api/src/main/java/org/geysermc/geyser/api/item/custom/NonVanillaCustomItemData.java
@@ -80,10 +80,9 @@ public interface NonVanillaCustomItemData extends CustomItemData {
     @Nullable String toolType();
 
     /**
-     * Gets the tool tier of the item.
-     *
-     * @return the tool tier of the item
+     * @deprecated no longer used
      */
+    @Deprecated(forRemoval = true)
     @Nullable String toolTier();
 
     /**
@@ -108,10 +107,9 @@ public interface NonVanillaCustomItemData extends CustomItemData {
     @Nullable String translationString();
 
     /**
-     * Gets the repair materials of the item.
-     *
-     * @return the repair materials of the item
+     * @deprecated No longer used.
      */
+    @Deprecated(forRemoval = true)
     @Nullable Set<String> repairMaterials();
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index 4a2d5827a..5cdb6c4ce 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -36,7 +36,6 @@ import org.geysermc.geyser.item.type.CrossbowItem;
 import org.geysermc.geyser.item.type.DecoratedPotItem;
 import org.geysermc.geyser.item.type.DyeItem;
 import org.geysermc.geyser.item.type.DyeableArmorItem;
-import org.geysermc.geyser.item.type.ElytraItem;
 import org.geysermc.geyser.item.type.EnchantedBookItem;
 import org.geysermc.geyser.item.type.FilledMapItem;
 import org.geysermc.geyser.item.type.FireworkRocketItem;
@@ -44,7 +43,6 @@ import org.geysermc.geyser.item.type.FireworkStarItem;
 import org.geysermc.geyser.item.type.FishingRodItem;
 import org.geysermc.geyser.item.type.GoatHornItem;
 import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.item.type.MaceItem;
 import org.geysermc.geyser.item.type.MapItem;
 import org.geysermc.geyser.item.type.PlayerHeadItem;
 import org.geysermc.geyser.item.type.PotionItem;
@@ -873,7 +871,7 @@ public final class Items {
     public static final Item CARROT_ON_A_STICK = register(new Item("carrot_on_a_stick", builder()));
     public static final Item WARPED_FUNGUS_ON_A_STICK = register(new Item("warped_fungus_on_a_stick", builder()));
     public static final Item PHANTOM_MEMBRANE = register(new Item("phantom_membrane", builder()));
-    public static final Item ELYTRA = register(new ElytraItem("elytra", builder()));
+    public static final Item ELYTRA = register(new Item("elytra", builder()));
     public static final Item OAK_BOAT = register(new BoatItem("oak_boat", builder()));
     public static final Item OAK_CHEST_BOAT = register(new BoatItem("oak_chest_boat", builder()));
     public static final Item SPRUCE_BOAT = register(new BoatItem("spruce_boat", builder()));
@@ -1215,7 +1213,7 @@ public final class Items {
     public static final Item WRITABLE_BOOK = register(new WritableBookItem("writable_book", builder()));
     public static final Item WRITTEN_BOOK = register(new WrittenBookItem("written_book", builder()));
     public static final Item BREEZE_ROD = register(new Item("breeze_rod", builder()));
-    public static final Item MACE = register(new MaceItem("mace", builder()));
+    public static final Item MACE = register(new Item("mace", builder()));
     public static final Item ITEM_FRAME = register(new Item("item_frame", builder()));
     public static final Item GLOW_ITEM_FRAME = register(new Item("glow_item_frame", builder()));
     public static final Item FLOWER_POT = register(new BlockItem(builder(), Blocks.FLOWER_POT));
diff --git a/core/src/main/java/org/geysermc/geyser/item/components/ToolTier.java b/core/src/main/java/org/geysermc/geyser/item/components/ToolTier.java
deleted file mode 100644
index a8832df1e..000000000
--- a/core/src/main/java/org/geysermc/geyser/item/components/ToolTier.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.item.components;
-
-import com.google.common.base.Suppliers;
-import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.item.type.Item;
-
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Set;
-import java.util.function.Supplier;
-
-public enum ToolTier {
-    WOODEN(2, () -> Set.of(Items.OAK_PLANKS, Items.SPRUCE_PLANKS, Items.BIRCH_PLANKS, Items.JUNGLE_PLANKS, Items.ACACIA_PLANKS, Items.DARK_OAK_PLANKS, Items.CRIMSON_PLANKS, Items.WARPED_PLANKS, Items.MANGROVE_PLANKS)), // PLANKS tag // TODO ?
-    STONE(4, () -> Set.of(Items.COBBLESTONE, Items.BLACKSTONE, Items.COBBLED_DEEPSLATE)), // STONE_TOOL_MATERIALS tag
-    IRON(6, () -> Collections.singleton(Items.IRON_INGOT)),
-    GOLDEN(12, () -> Collections.singleton(Items.GOLD_INGOT)),
-    DIAMOND(8, () -> Collections.singleton(Items.DIAMOND)),
-    NETHERITE(9, () -> Collections.singleton(Items.NETHERITE_INGOT));
-
-    private static final ToolTier[] VALUES = values();
-
-    private final int speed;
-    private final Supplier<Set<Item>> repairIngredients;
-
-    ToolTier(int speed, Supplier<Set<Item>> repairIngredients) {
-        this.speed = speed;
-        // Lazily initialize as this will likely be called as items are loading
-        this.repairIngredients = Suppliers.memoize(repairIngredients::get);
-    }
-
-    public Set<Item> getRepairIngredients() {
-        return repairIngredients.get();
-    }
-
-    @Override
-    public String toString() {
-        return this.name().toLowerCase(Locale.ROOT);
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java
index 0a25a8d4f..ec87728a9 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java
@@ -30,7 +30,6 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.protocol.bedrock.data.TrimMaterial;
 import org.cloudburstmc.protocol.bedrock.data.TrimPattern;
-import org.geysermc.geyser.item.ArmorMaterial;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ArmorTrim;
@@ -38,11 +37,9 @@ import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponen
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class ArmorItem extends Item {
-    private final ArmorMaterial material;
 
-    public ArmorItem(String javaIdentifier, ArmorMaterial material, Builder builder) {
+    public ArmorItem(String javaIdentifier, Builder builder) {
         super(javaIdentifier, builder);
-        this.material = material;
     }
 
     @Override
@@ -68,11 +65,6 @@ public class ArmorItem extends Item {
         }
     }
 
-    @Override
-    public boolean isValidRepairItem(Item other) {
-        return material.getRepairIngredient() == other;
-    }
-
     // TODO maybe some kind of namespace util?
     private static String getNamespace(String identifier) {
         int i = identifier.indexOf(':');
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/DyeableArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/DyeableArmorItem.java
index 8c63eaeb0..480385d07 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/DyeableArmorItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/DyeableArmorItem.java
@@ -26,14 +26,13 @@
 package org.geysermc.geyser.item.type;
 
 import org.checkerframework.checker.nullness.qual.NonNull;
-import org.geysermc.geyser.item.ArmorMaterial;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class DyeableArmorItem extends ArmorItem {
-    public DyeableArmorItem(String javaIdentifier, ArmorMaterial material, Builder builder) {
-        super(javaIdentifier, material, builder);
+    public DyeableArmorItem(String javaIdentifier, Builder builder) {
+        super(javaIdentifier, builder);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ElytraItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ElytraItem.java
deleted file mode 100644
index e5d94eb8b..000000000
--- a/core/src/main/java/org/geysermc/geyser/item/type/ElytraItem.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.item.type;
-
-import org.geysermc.geyser.item.Items;
-
-public class ElytraItem extends Item {
-    public ElytraItem(String javaIdentifier, Builder builder) {
-        super(javaIdentifier, builder);
-    }
-
-    @Override
-    public boolean isValidRepairItem(Item other) {
-        return other == Items.PHANTOM_MEMBRANE;
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java b/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
index fa10b08b1..d176ff367 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
@@ -60,7 +60,6 @@ public class LightItem extends BlockItem {
         return super.toBedrockDefinition(components, mappings);
     }
 
-
     private static ItemMapping getLightLevelMapping(DataComponents components, ItemMappings mappings) {
         String lightLevel = "15";
         if (components != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/MaceItem.java b/core/src/main/java/org/geysermc/geyser/item/type/MaceItem.java
deleted file mode 100644
index e7b9a8684..000000000
--- a/core/src/main/java/org/geysermc/geyser/item/type/MaceItem.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.item.type;
-
-import org.geysermc.geyser.item.Items;
-
-public class MaceItem extends Item {
-    public MaceItem(String javaIdentifier, Builder builder) {
-        super(javaIdentifier, builder);
-    }
-
-    @Override
-    public boolean isValidRepairItem(Item other) {
-        return other == Items.BREEZE_ROD;
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java
index 14d41a073..98ef80d95 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java
@@ -26,7 +26,6 @@
 package org.geysermc.geyser.item.type;
 
 import org.checkerframework.checker.nullness.qual.NonNull;
-import org.geysermc.geyser.item.components.ToolTier;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
@@ -54,10 +53,4 @@ public class ShieldItem extends Item {
             builder.putInt("Base", 15 - baseColor);
         }
     }
-
-    @Override
-    public boolean isValidRepairItem(Item other) {
-        // Java Edition 1.19.3 checks the tag, but TODO check to see if we want it or are simulating what Bedrock is doing
-        return ToolTier.WOODEN.getRepairIngredients().contains(other);
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/TieredItem.java b/core/src/main/java/org/geysermc/geyser/item/type/TieredItem.java
deleted file mode 100644
index d998eb0d4..000000000
--- a/core/src/main/java/org/geysermc/geyser/item/type/TieredItem.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.item.type;
-
-import org.geysermc.geyser.item.components.ToolTier;
-
-public class TieredItem extends Item {
-    private final ToolTier tier;
-
-    public TieredItem(String javaIdentifier, ToolTier tier, Builder builder) {
-        super(javaIdentifier, builder);
-        this.tier = tier;
-    }
-
-    public ToolTier tier() {
-        return tier;
-    }
-
-    @Override
-    public boolean isValidRepairItem(Item other) {
-        return tier.getRepairIngredients().contains(other);
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java
index bd97a6a7d..52ded0407 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java
@@ -26,14 +26,13 @@
 package org.geysermc.geyser.item.type;
 
 import org.checkerframework.checker.nullness.qual.NonNull;
-import org.geysermc.geyser.item.ArmorMaterial;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class WolfArmorItem extends ArmorItem {
-    public WolfArmorItem(String javaIdentifier, ArmorMaterial material, Builder builder) {
-        super(javaIdentifier, material, builder);
+    public WolfArmorItem(String javaIdentifier, Builder builder) {
+        super(javaIdentifier, builder);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
index ec094ea31..3d2ca4ef9 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
@@ -51,7 +51,13 @@ import org.geysermc.geyser.registry.type.NonVanillaItemRegistration;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
 
 public class CustomItemRegistryPopulator {
     public static void populate(Map<String, GeyserMappingItem> items, Multimap<String, CustomItemData> customItems, List<NonVanillaCustomItemData> nonVanillaCustomItems) {
@@ -129,18 +135,11 @@ public class CustomItemRegistryPopulator {
     public static NonVanillaItemRegistration registerCustomItem(NonVanillaCustomItemData customItemData, int customItemId, int protocolVersion) {
         String customIdentifier = customItemData.identifier();
 
-        Set<String> repairMaterials = customItemData.repairMaterials();
-
         DataComponents components = new DataComponents(new HashMap<>());
         components.put(DataComponentType.MAX_STACK_SIZE, customItemData.stackSize());
         components.put(DataComponentType.MAX_DAMAGE, customItemData.maxDamage());
 
-        Item item = new Item(customIdentifier, Item.builder().components(components)) {
-            @Override
-            public boolean isValidRepairItem(Item other) {
-                return repairMaterials != null && repairMaterials.contains(other.javaIdentifier());
-            }
-        };
+        Item item = new Item(customIdentifier, Item.builder().components(components));
         Items.register(item, customItemData.javaId());
 
         ItemMapping customItemMapping = ItemMapping.builder()
@@ -148,7 +147,6 @@ public class CustomItemRegistryPopulator {
                 .bedrockData(0)
                 .bedrockBlockDefinition(null)
                 .toolType(customItemData.toolType())
-                .toolTier(customItemData.toolTier())
                 .translationString(customItemData.translationString())
                 .customItemOptions(Collections.emptyList())
                 .javaItem(item)
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/ItemMapping.java b/core/src/main/java/org/geysermc/geyser/registry/type/ItemMapping.java
index 8a2c77f28..d940db6e0 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/ItemMapping.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/ItemMapping.java
@@ -52,7 +52,6 @@ public class ItemMapping {
             null, // Air is never sent in full over the network for this to serialize.
             null,
             null,
-            null,
             Collections.emptyList(),
             Items.AIR
     );
@@ -68,7 +67,6 @@ public class ItemMapping {
     BlockDefinition bedrockBlockDefinition;
 
     String toolType;
-    String toolTier;
 
     String translationString;
 

From 9e276c10777ddf73dacb4d35769f1801d42882d6 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Tue, 3 Dec 2024 20:37:05 +0800
Subject: [PATCH 089/165] Feature: 1.21.50 support (#5180)

* Drop pre-1.21.40 support, start adapting to 1.21.50 changes

* fix camera definitions

* remove more old workarounds, make it compile

* Add 1.21.50 data files

* Add item tags, update block registry populator

* finishing touches

* Don't add items to the creative inventory that we don't have a Java mapping for

* fix readme typo
---
 README.md                                     |    2 +-
 .../type/player/SessionPlayerEntity.java      |    8 +-
 .../SessionLoadResourcePacksEventImpl.java    |   12 +-
 .../geyser/impl/camera/CameraDefinitions.java |   15 +-
 .../level/physics/CollisionManager.java       |   34 -
 .../geysermc/geyser/network/GameProtocol.java |   48 +-
 .../geyser/network/UpstreamPacketHandler.java |   22 +-
 .../geysermc/geyser/registry/Registries.java  |    3 +-
 .../registry/loader/ResourcePackLoader.java   |    9 +-
 .../populator/BlockRegistryPopulator.java     |   35 +-
 .../registry/populator/Conversion685_671.java |  220 -
 .../registry/populator/Conversion712_685.java |  439 --
 .../registry/populator/Conversion729_712.java |  152 -
 .../CreativeItemRegistryPopulator.java        |   28 +-
 .../populator/ItemRegistryPopulator.java      |   21 +-
 .../populator/TagRegistryPopulator.java       |   12 +-
 .../geyser/session/GeyserSession.java         |    4 +-
 .../inventory/InventoryTranslator.java        |   20 +-
 .../entity/SkullBlockEntityTranslator.java    |    5 -
 .../player/input/BedrockMovePlayer.java       |   29 +-
 .../entity/JavaSetEquipmentTranslator.java    |    8 +-
 .../resources/bedrock/biome_definitions.dat   |  Bin 37653 -> 37891 bytes
 .../bedrock/block_palette.1_20_80.nbt         |  Bin 176786 -> 0 bytes
 .../bedrock/block_palette.1_21_0.nbt          |  Bin 177397 -> 0 bytes
 .../bedrock/block_palette.1_21_20.nbt         |  Bin 178977 -> 0 bytes
 .../bedrock/block_palette.1_21_30.nbt         |  Bin 180490 -> 0 bytes
 .../bedrock/block_palette.1_21_50.nbt         |  Bin 0 -> 192451 bytes
 .../bedrock/creative_items.1_20_80.json       | 5812 --------------
 .../bedrock/creative_items.1_21_0.json        | 6214 ---------------
 .../bedrock/creative_items.1_21_20.json       | 6214 ---------------
 ...21_30.json => creative_items.1_21_50.json} | 3049 ++++----
 .../resources/bedrock/entity_identifiers.dat  |  Bin 8314 -> 8378 bytes
 .../resources/bedrock/item_tags.1_20_80.json  |  784 --
 .../resources/bedrock/item_tags.1_21_0.json   |  802 --
 .../resources/bedrock/item_tags.1_21_20.json  |  806 --
 ...gs.1_21_30.json => item_tags.1_21_50.json} |  126 +-
 .../bedrock/runtime_item_states.1_20_80.json  | 6274 ---------------
 .../bedrock/runtime_item_states.1_21_0.json   | 6398 ----------------
 .../bedrock/runtime_item_states.1_21_20.json  | 6794 -----------------
 ....json => runtime_item_states.1_21_50.json} | 1288 ++--
 gradle.properties                             |    2 +-
 gradle/libs.versions.toml                     |    6 +-
 42 files changed, 2563 insertions(+), 43132 deletions(-)
 delete mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java
 delete mode 100644 core/src/main/resources/bedrock/block_palette.1_20_80.nbt
 delete mode 100644 core/src/main/resources/bedrock/block_palette.1_21_0.nbt
 delete mode 100644 core/src/main/resources/bedrock/block_palette.1_21_20.nbt
 delete mode 100644 core/src/main/resources/bedrock/block_palette.1_21_30.nbt
 create mode 100644 core/src/main/resources/bedrock/block_palette.1_21_50.nbt
 delete mode 100644 core/src/main/resources/bedrock/creative_items.1_20_80.json
 delete mode 100644 core/src/main/resources/bedrock/creative_items.1_21_0.json
 delete mode 100644 core/src/main/resources/bedrock/creative_items.1_21_20.json
 rename core/src/main/resources/bedrock/{creative_items.1_21_30.json => creative_items.1_21_50.json} (84%)
 delete mode 100644 core/src/main/resources/bedrock/item_tags.1_20_80.json
 delete mode 100644 core/src/main/resources/bedrock/item_tags.1_21_0.json
 delete mode 100644 core/src/main/resources/bedrock/item_tags.1_21_20.json
 rename core/src/main/resources/bedrock/{item_tags.1_21_30.json => item_tags.1_21_50.json} (99%)
 delete mode 100644 core/src/main/resources/bedrock/runtime_item_states.1_20_80.json
 delete mode 100644 core/src/main/resources/bedrock/runtime_item_states.1_21_0.json
 delete mode 100644 core/src/main/resources/bedrock/runtime_item_states.1_21_20.json
 rename core/src/main/resources/bedrock/{runtime_item_states.1_21_30.json => runtime_item_states.1_21_50.json} (96%)

diff --git a/README.md b/README.md
index d0bcb1fdc..83a1d5c0b 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.20.80 - 1.21.44 and Minecraft Java 1.21.2/1.21.3. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.21.40 - 1.21.50 and Minecraft Java 1.21.2/1.21.3. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
index 9d5bc011c..6e5e55f03 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SessionPlayerEntity.java
@@ -39,7 +39,6 @@ import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.level.BedrockDimension;
-import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.AttributeUtils;
 import org.geysermc.geyser.util.DimensionUtils;
@@ -235,12 +234,7 @@ public class SessionPlayerEntity extends PlayerEntity {
         // the bubbles visually pop
         setFlag(EntityFlag.BREATHING, amount >= this.lastAirSupply);
         this.lastAirSupply = amount;
-
-        if (amount == getMaxAir() && GameProtocol.isPre1_21_0(session)) {
-            super.setAirSupply(0); // Hide the bubble counter from the UI for the player
-        } else {
-            super.setAirSupply(amount);
-        }
+        super.setAirSupply(amount);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/event/type/SessionLoadResourcePacksEventImpl.java b/core/src/main/java/org/geysermc/geyser/event/type/SessionLoadResourcePacksEventImpl.java
index 5ed0f8d22..5bc0dd0bd 100644
--- a/core/src/main/java/org/geysermc/geyser/event/type/SessionLoadResourcePacksEventImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/event/type/SessionLoadResourcePacksEventImpl.java
@@ -36,14 +36,14 @@ import java.util.UUID;
 
 public class SessionLoadResourcePacksEventImpl extends SessionLoadResourcePacksEvent {
 
-    private final Map<String, ResourcePack> packs;
+    private final Map<UUID, ResourcePack> packs;
 
-    public SessionLoadResourcePacksEventImpl(GeyserSession session, Map<String, ResourcePack> packMap) {
+    public SessionLoadResourcePacksEventImpl(GeyserSession session, Map<UUID, ResourcePack> packMap) {
         super(session);
         this.packs = packMap;
     }
 
-    public @NonNull Map<String, ResourcePack> getPacks() {
+    public @NonNull Map<UUID, ResourcePack> getPacks() {
         return packs;
     }
 
@@ -54,16 +54,16 @@ public class SessionLoadResourcePacksEventImpl extends SessionLoadResourcePacksE
 
     @Override
     public boolean register(@NonNull ResourcePack resourcePack) {
-        String packID = resourcePack.manifest().header().uuid().toString();
+        UUID packID = resourcePack.manifest().header().uuid();
         if (packs.containsValue(resourcePack) || packs.containsKey(packID)) {
             return false;
         }
-        packs.put(resourcePack.manifest().header().uuid().toString(), resourcePack);
+        packs.put(resourcePack.manifest().header().uuid(), resourcePack);
         return true;
     }
 
     @Override
     public boolean unregister(@NonNull UUID uuid) {
-        return packs.remove(uuid.toString()) != null;
+        return packs.remove(uuid) != null;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java b/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java
index ee20c14a2..346b971cc 100644
--- a/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/impl/camera/CameraDefinitions.java
@@ -43,13 +43,14 @@ public class CameraDefinitions {
 
     static {
         CAMERA_PRESETS = List.of(
-            new CameraPreset(CameraPerspective.FIRST_PERSON.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
-            new CameraPreset(CameraPerspective.FREE.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
-            new CameraPreset(CameraPerspective.THIRD_PERSON.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
-            new CameraPreset(CameraPerspective.THIRD_PERSON_FRONT.id(), "", null, null, null, null, null, null, OptionalBoolean.empty(), null, OptionalBoolean.empty(), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
-            new CameraPreset("geyser:free_audio", "minecraft:free", null, null, null, null, null, CameraAudioListener.PLAYER, OptionalBoolean.empty(), null, OptionalBoolean.of(false), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
-            new CameraPreset("geyser:free_effects", "minecraft:free", null, null, null, null, null, CameraAudioListener.CAMERA, OptionalBoolean.empty(), null, OptionalBoolean.of(true), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()),
-            new CameraPreset("geyser:free_audio_effects", "minecraft:free", null, null, null, null, null,  CameraAudioListener.PLAYER, OptionalBoolean.empty(), null, OptionalBoolean.of(true), null, null, null, OptionalBoolean.empty(), OptionalBoolean.empty()));
+            CameraPreset.builder().identifier(CameraPerspective.FIRST_PERSON.id()).build(),
+            CameraPreset.builder().identifier(CameraPerspective.FREE.id()).build(),
+            CameraPreset.builder().identifier(CameraPerspective.THIRD_PERSON.id()).build(),
+            CameraPreset.builder().identifier(CameraPerspective.THIRD_PERSON_FRONT.id()).build(),
+            CameraPreset.builder().identifier("geyser:free_audio").parentPreset(CameraPerspective.FREE.id()).listener(CameraAudioListener.PLAYER).playEffect(OptionalBoolean.of(false)).build(),
+            CameraPreset.builder().identifier("geyser:free_effects").parentPreset(CameraPerspective.FREE.id()).listener(CameraAudioListener.CAMERA).playEffect(OptionalBoolean.of(true)).build(),
+            CameraPreset.builder().identifier("geyser:free_audio_effects").parentPreset(CameraPerspective.FREE.id()).listener(CameraAudioListener.PLAYER).playEffect(OptionalBoolean.of(true)).build()
+        );
 
         SimpleDefinitionRegistry.Builder<NamedDefinition> builder = SimpleDefinitionRegistry.builder();
         for (int i = 0; i < CAMERA_PRESETS.size(); i++) {
diff --git a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
index 69f88e2a1..ff6557935 100644
--- a/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/physics/CollisionManager.java
@@ -416,40 +416,6 @@ public class CollisionManager {
         return BlockUtils.getCollision(blockId);
     }
 
-    public boolean isOnGround() {
-        // Temporary until pre-1.21.30 support is dropped.
-        Vector3d bottomCenter = playerBoundingBox.getBottomCenter();
-        Vector3i groundPos = Vector3i.from(bottomCenter.getX(), bottomCenter.getY() - 1, bottomCenter.getZ());
-        BlockCollision collision = BlockUtils.getCollisionAt(session, groundPos);
-        if (collision == null) {
-            return false; // Probably air.
-        }
-
-        // Hack to not check below the player
-        playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() - 0.001);
-        playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() + 0.002);
-
-        boolean intersected = collision.checkIntersection(groundPos.getX(), groundPos.getY(), groundPos.getZ(), playerBoundingBox);
-
-        playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() + 0.001);
-        playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() - 0.002);
-
-        boolean result;
-        if (intersected) {
-            result = true;
-        } else {
-            // Hack to check slightly below the player
-            playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() + 0.001);
-            playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() - 0.002);
-
-            result = collision.checkIntersection(groundPos.getX(), groundPos.getY(), groundPos.getZ(), playerBoundingBox);
-
-            playerBoundingBox.setSizeY(playerBoundingBox.getSizeY() - 0.001);
-            playerBoundingBox.setMiddleY(playerBoundingBox.getMiddleY() + 0.002);
-        }
-        return result;
-    }
-
     /**
      * @return if the player is currently in a water block
      */
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index 463cc54fd..378dc5078 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -27,14 +27,9 @@ package org.geysermc.geyser.network;
 
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
-import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
-import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
-import org.cloudburstmc.protocol.bedrock.codec.v686.Bedrock_v686;
-import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
-import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
+import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
 import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
-import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodec;
 import org.geysermc.mcprotocollib.protocol.codec.PacketCodec;
 
@@ -51,8 +46,9 @@ public final class GameProtocol {
      * Default Bedrock codec that should act as a fallback. Should represent the latest available
      * release of the game that Geyser supports.
      */
-    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
-        .minecraftVersion("1.21.44")
+    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v765.CODEC.toBuilder()
+        .minecraftVersion("1.21.50")
+        .protocolVersion(766)
         .build());
 
     /**
@@ -67,24 +63,10 @@ public final class GameProtocol {
     private static final PacketCodec DEFAULT_JAVA_CODEC = MinecraftCodec.CODEC;
 
     static {
-        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v671.CODEC.toBuilder()
-            .minecraftVersion("1.20.80/1.20.81")
-            .build()));
-        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v685.CODEC.toBuilder()
-            .minecraftVersion("1.21.0/1.21.1")
-            .build()));
-        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v686.CODEC.toBuilder()
-            .minecraftVersion("1.21.2/1.21.3")
-            .build()));
-        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v712.CODEC.toBuilder()
-            .minecraftVersion("1.21.20 - 1.21.23")
-            .build()));
-        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v729.CODEC.toBuilder()
-            .minecraftVersion("1.21.30/1.21.31")
-            .build()));
-        SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
+        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
             .minecraftVersion("1.21.40 - 1.21.44")
-            .build());
+            .build()));
+        SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
     }
 
     /**
@@ -103,22 +85,6 @@ public final class GameProtocol {
 
     /* Bedrock convenience methods to gatekeep features and easily remove the check on version removal */
 
-    public static boolean isPre1_21_0(GeyserSession session) {
-        return session.getUpstream().getProtocolVersion() < Bedrock_v685.CODEC.getProtocolVersion();
-    }
-
-    public static boolean isPre1_21_2(GeyserSession session) {
-        return session.getUpstream().getProtocolVersion() < Bedrock_v686.CODEC.getProtocolVersion();
-    }
-
-    public static boolean isPre1_21_30(GeyserSession session) {
-        return session.getUpstream().getProtocolVersion() < Bedrock_v729.CODEC.getProtocolVersion();
-    }
-
-    public static boolean isPre1_21_40(GeyserSession session) {
-        return session.getUpstream().getProtocolVersion() < Bedrock_v748.CODEC.getProtocolVersion();
-    }
-
     /**
      * Gets the {@link PacketCodec} for Minecraft: Java Edition.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index 1ac38aa35..0cf161c6a 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -77,11 +77,12 @@ import java.util.ArrayDeque;
 import java.util.Deque;
 import java.util.HashMap;
 import java.util.OptionalInt;
+import java.util.UUID;
 
 public class UpstreamPacketHandler extends LoggingPacketHandler {
 
     private boolean networkSettingsRequested = false;
-    private final Deque<String> packsToSent = new ArrayDeque<>();
+    private final Deque<String> packsToSend = new ArrayDeque<>();
     private final CompressionStrategy compressionStrategy;
 
     private SessionLoadResourcePacksEventImpl resourcePackLoadEvent;
@@ -133,8 +134,6 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
         }
 
         session.getUpstream().getSession().setCodec(packetCodec);
-        // FIXME temporary until 1.20.80 is dropped
-        session.getPlayerEntity().resetAir();
         return true;
     }
 
@@ -209,10 +208,12 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
             PackCodec codec = pack.codec();
             ResourcePackManifest.Header header = pack.manifest().header();
             resourcePacksInfo.getResourcePackInfos().add(new ResourcePacksInfoPacket.Entry(
-                    header.uuid().toString(), header.version().toString(), codec.size(), pack.contentKey(),
+                    header.uuid(), header.version().toString(), codec.size(), pack.contentKey(),
                     "", header.uuid().toString(), false, false, false, ""));
         }
         resourcePacksInfo.setForcedToAccept(GeyserImpl.getInstance().getConfig().isForceResourcePacks());
+        resourcePacksInfo.setWorldTemplateId(UUID.randomUUID());
+        resourcePacksInfo.setWorldTemplateVersion("*");
         session.sendUpstreamPacket(resourcePacksInfo);
 
         GeyserLocale.loadGeyserLocale(session.locale());
@@ -233,8 +234,8 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
                 break;
 
             case SEND_PACKS:
-                packsToSent.addAll(packet.getPackIds());
-                sendPackDataInfo(packsToSent.pop());
+                packsToSend.addAll(packet.getPackIds());
+                sendPackDataInfo(packsToSend.pop());
                 break;
 
             case HAVE_ALL_PACKS:
@@ -311,7 +312,7 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     @Override
     public PacketSignal handle(ResourcePackChunkRequestPacket packet) {
         ResourcePackChunkDataPacket data = new ResourcePackChunkDataPacket();
-        ResourcePack pack = this.resourcePackLoadEvent.getPacks().get(packet.getPackId().toString());
+        ResourcePack pack = this.resourcePackLoadEvent.getPacks().get(packet.getPackId());
         PackCodec codec = pack.codec();
 
         data.setChunkIndex(packet.getChunkIndex());
@@ -335,8 +336,8 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
         session.sendUpstreamPacket(data);
 
         // Check if it is the last chunk and send next pack in queue when available.
-        if (remainingSize <= GeyserResourcePack.CHUNK_SIZE && !packsToSent.isEmpty()) {
-            sendPackDataInfo(packsToSent.pop());
+        if (remainingSize <= GeyserResourcePack.CHUNK_SIZE && !packsToSend.isEmpty()) {
+            sendPackDataInfo(packsToSend.pop());
         }
 
         return PacketSignal.HANDLED;
@@ -345,7 +346,8 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     private void sendPackDataInfo(String id) {
         ResourcePackDataInfoPacket data = new ResourcePackDataInfoPacket();
         String[] packID = id.split("_");
-        ResourcePack pack = this.resourcePackLoadEvent.getPacks().get(packID[0]);
+        UUID uuid = UUID.fromString(packID[0]);
+        ResourcePack pack = this.resourcePackLoadEvent.getPacks().get(uuid);
         PackCodec codec = pack.codec();
         ResourcePackManifest.Header header = pack.manifest().header();
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index b0ae0d6aa..61bb42454 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -70,6 +70,7 @@ import java.util.HashSet;
 import java.util.IdentityHashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 
 /**
  * Holds all the common registries in Geyser.
@@ -163,7 +164,7 @@ public final class Registries {
     /**
      * A mapped registry holding {@link ResourcePack}'s with the pack uuid as keys.
      */
-    public static final SimpleMappedDeferredRegistry<String, ResourcePack> RESOURCE_PACKS = SimpleMappedDeferredRegistry.create(GeyserImpl.getInstance().packDirectory(), RegistryLoaders.RESOURCE_PACKS);
+    public static final SimpleMappedDeferredRegistry<UUID, ResourcePack> RESOURCE_PACKS = SimpleMappedDeferredRegistry.create(GeyserImpl.getInstance().packDirectory(), RegistryLoaders.RESOURCE_PACKS);
 
     /**
      * A versioned registry holding most Bedrock tags, with the Java item list (sorted) being the key, and the tag name as the value.
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java
index 800a3d22c..adb64b8af 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/ResourcePackLoader.java
@@ -45,6 +45,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -54,7 +55,7 @@ import java.util.zip.ZipFile;
 /**
  * Loads {@link ResourcePack}s within a {@link Path} directory, firing the {@link GeyserLoadResourcePacksEvent}.
  */
-public class ResourcePackLoader implements RegistryLoader<Path, Map<String, ResourcePack>> {
+public class ResourcePackLoader implements RegistryLoader<Path, Map<UUID, ResourcePack>> {
 
     static final PathMatcher PACK_MATCHER = FileSystems.getDefault().getPathMatcher("glob:**.{zip,mcpack}");
 
@@ -64,8 +65,8 @@ public class ResourcePackLoader implements RegistryLoader<Path, Map<String, Reso
      * Loop through the packs directory and locate valid resource pack files
      */
     @Override
-    public Map<String, ResourcePack> load(Path directory) {
-        Map<String, ResourcePack> packMap = new HashMap<>();
+    public Map<UUID, ResourcePack> load(Path directory) {
+        Map<UUID, ResourcePack> packMap = new HashMap<>();
 
         if (!Files.exists(directory)) {
             try {
@@ -100,7 +101,7 @@ public class ResourcePackLoader implements RegistryLoader<Path, Map<String, Reso
         for (Path path : event.resourcePacks()) {
             try {
                 GeyserResourcePack pack = readPack(path);
-                packMap.put(pack.manifest().header().uuid().toString(), pack);
+                packMap.put(pack.manifest().header().uuid(), pack);
             } catch (Exception e) {
                 e.printStackTrace();
             }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index 5b7213bee..1723b22ed 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -44,11 +44,8 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.nbt.NbtUtils;
-import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
-import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
-import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
-import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
+import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
 import org.cloudburstmc.protocol.bedrock.data.BlockPropertyData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.geysermc.geyser.GeyserImpl;
@@ -69,6 +66,7 @@ import org.geysermc.geyser.registry.type.BlockMappings;
 import org.geysermc.geyser.registry.type.GeyserBedrockBlock;
 import org.geysermc.geyser.util.BlockUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.jetbrains.annotations.NotNull;
 
 import java.io.DataInputStream;
 import java.io.InputStream;
@@ -127,20 +125,8 @@ public final class BlockRegistryPopulator {
 
     private static void registerBedrockBlocks() {
         var blockMappers = ImmutableMap.<ObjectIntPair<String>, Remapper>builder()
-                .put(ObjectIntPair.of("1_20_80", Bedrock_v671.CODEC.getProtocolVersion()), Conversion685_671::remapBlock)
-                .put(ObjectIntPair.of("1_21_0", Bedrock_v685.CODEC.getProtocolVersion()), Conversion712_685::remapBlock)
-                .put(ObjectIntPair.of("1_21_20", Bedrock_v712.CODEC.getProtocolVersion()), Conversion729_712::remapBlock)
-                .put(ObjectIntPair.of("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()), tag -> tag)
-                .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), tag -> {
-                    final String name = tag.getString("name");
-                    if (name.endsWith("_wood") && tag.getCompound("states").containsKey("stripped_bit")) {
-                        NbtMapBuilder builder = tag.getCompound("states").toBuilder();
-                        builder.remove("stripped_bit");
-                        NbtMap states = builder.build();
-                        return tag.toBuilder().putCompound("states", states).build();
-                    }
-                    return tag;
-                })
+                .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
+                .put(ObjectIntPair.of("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
                 .build();
 
         // We can keep this strong as nothing should be garbage collected
@@ -427,6 +413,19 @@ public final class BlockRegistryPopulator {
         }
     }
 
+    private static @NotNull Remapper faultyStrippedWoodRemapper() {
+        return tag -> {
+            final String name = tag.getString("name");
+            if (name.endsWith("_wood") && tag.getCompound("states").containsKey("stripped_bit")) {
+                NbtMapBuilder builder = tag.getCompound("states").toBuilder();
+                builder.remove("stripped_bit");
+                NbtMap states = builder.build();
+                return tag.toBuilder().putCompound("states", states).build();
+            }
+            return tag;
+        };
+    }
+
     private static void registerJavaBlocks() {
         List<NbtMap> blocksNbt;
         try (InputStream stream = GeyserImpl.getInstance().getBootstrap().getResourceOrThrow("mappings/blocks.nbt")) {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java
deleted file mode 100644
index c72ea64b2..000000000
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion685_671.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.registry.populator;
-
-import org.cloudburstmc.nbt.NbtMap;
-import org.cloudburstmc.nbt.NbtMapBuilder;
-import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.type.GeyserMappingItem;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-public class Conversion685_671 {
-    private static final List<String> NEW_CORAL_BLOCKS = List.of("minecraft:tube_coral_block", "minecraft:brain_coral_block", "minecraft:bubble_coral_block", "minecraft:fire_coral_block", "minecraft:horn_coral_block", "minecraft:dead_tube_coral_block", "minecraft:dead_brain_coral_block", "minecraft:dead_bubble_coral_block", "minecraft:dead_fire_coral_block", "minecraft:dead_horn_coral_block");
-    private static final List<String> NEW_DOUBLE_PLANTS = List.of("minecraft:sunflower", "minecraft:lilac", "minecraft:tall_grass", "minecraft:large_fern", "minecraft:rose_bush", "minecraft:peony");
-    private static final List<String> NEW_STONE_BLOCK_SLABS = List.of("minecraft:smooth_stone_slab", "minecraft:sandstone_slab", "minecraft:petrified_oak_slab", "minecraft:cobblestone_slab", "minecraft:brick_slab", "minecraft:stone_brick_slab", "minecraft:quartz_slab", "minecraft:nether_brick_slab");
-    private static final List<String> NEW_TALLGRASSES = List.of("minecraft:fern", "minecraft:short_grass");
-    private static final List<String> OMINOUS_BLOCKS = List.of("minecraft:trial_spawner", "minecraft:vault");
-    private static final List<String> NEW_BLOCKS = Stream.of(NEW_CORAL_BLOCKS, NEW_DOUBLE_PLANTS, NEW_STONE_BLOCK_SLABS, NEW_TALLGRASSES).flatMap(List::stream).toList();
-    private static final List<String> MODIFIED_BLOCKS = Stream.of(NEW_BLOCKS, OMINOUS_BLOCKS).flatMap(List::stream).toList();
-    private static final List<Item> NEW_MUSIC_DISCS = List.of(Items.MUSIC_DISC_CREATOR, Items.MUSIC_DISC_CREATOR_MUSIC_BOX, Items.MUSIC_DISC_PRECIPICE);
-
-    static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
-        mapping = Conversion712_685.remapItem(item, mapping);
-        String identifier = mapping.getBedrockIdentifier();
-
-        if (NEW_MUSIC_DISCS.contains(item)) {
-            return mapping.withBedrockIdentifier("minecraft:music_disc_otherside");
-        }
-        if (item == Items.OMINOUS_TRIAL_KEY) {
-            return mapping.withBedrockIdentifier("minecraft:trial_key");
-        }
-        if (item == Items.OMINOUS_BOTTLE) {
-            return mapping.withBedrockIdentifier("minecraft:glass_bottle");
-        }
-
-        if (!NEW_BLOCKS.contains(identifier)) {
-            return mapping;
-        }
-
-        if (NEW_CORAL_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:tube_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(0); }
-                case "minecraft:brain_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(1); }
-                case "minecraft:bubble_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(2); }
-                case "minecraft:fire_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(3); }
-                case "minecraft:horn_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(4); }
-                case "minecraft:dead_tube_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(8); }
-                case "minecraft:dead_brain_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(9); }
-                case "minecraft:dead_bubble_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(10); }
-                case "minecraft:dead_fire_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(11); }
-                case "minecraft:dead_horn_coral_block" -> { return mapping.withBedrockIdentifier("minecraft:coral_block").withBedrockData(12); }
-            }
-        }
-
-        if (NEW_DOUBLE_PLANTS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:sunflower" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(0); }
-                case "minecraft:lilac" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(1); }
-                case "minecraft:tall_grass" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(2); }
-                case "minecraft:large_fern" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(3); }
-                case "minecraft:rose_bush" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(4); }
-                case "minecraft:peony" -> { return mapping.withBedrockIdentifier("minecraft:double_plant").withBedrockData(5); }
-            }
-        }
-
-        if (NEW_STONE_BLOCK_SLABS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:smooth_stone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(0); }
-                case "minecraft:sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(1); }
-                case "minecraft:petrified_oak_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(2); }
-                case "minecraft:cobblestone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(3); }
-                case "minecraft:brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(4); }
-                case "minecraft:stone_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(5); }
-                case "minecraft:quartz_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(6); }
-                case "minecraft:nether_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab").withBedrockData(7); }
-            }
-        }
-
-        if (NEW_TALLGRASSES.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:short_grass" -> { return mapping.withBedrockIdentifier("minecraft:tallgrass").withBedrockData(1); }
-                case "minecraft:fern" -> { return mapping.withBedrockIdentifier("minecraft:tallgrass").withBedrockData(2); }
-            }
-        }
-
-        return mapping;
-    }
-
-    static NbtMap remapBlock(NbtMap tag) {
-        tag = Conversion712_685.remapBlock(tag);
-
-        final String name = tag.getString("name");
-        
-        if (!MODIFIED_BLOCKS.contains(name)) {
-            return tag;
-        }
-
-        if (OMINOUS_BLOCKS.contains(name)) {
-            NbtMapBuilder builder = tag.getCompound("states").toBuilder();
-            builder.remove("ominous");
-            return tag.toBuilder().putCompound("states", builder.build()).build();
-        }
-
-        String replacement;
-
-        if (NEW_CORAL_BLOCKS.contains(name)) {
-            replacement = "minecraft:coral_block";
-            String coralColor;
-            boolean deadBit = name.startsWith("minecraft:dead_");
-
-            switch (name) {
-                case "minecraft:tube_coral_block", "minecraft:dead_tube_coral_block" -> coralColor = "blue";
-                case "minecraft:brain_coral_block", "minecraft:dead_brain_coral_block" -> coralColor = "pink";
-                case "minecraft:bubble_coral_block", "minecraft:dead_bubble_coral_block" -> coralColor = "purple";
-                case "minecraft:fire_coral_block", "minecraft:dead_fire_coral_block" -> coralColor = "yellow";
-                case "minecraft:horn_coral_block", "minecraft:dead_horn_coral_block" -> coralColor = "red";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("coral_color", coralColor)
-                .putBoolean("dead_bit", deadBit)
-                .build();
-            
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_DOUBLE_PLANTS.contains(name)) {
-            replacement = "minecraft:double_plant";
-            String doublePlantType;
-
-            switch (name) {
-                case "minecraft:sunflower" -> doublePlantType = "sunflower";
-                case "minecraft:lilac" -> doublePlantType = "syringa";
-                case "minecraft:tall_grass" -> doublePlantType = "grass";
-                case "minecraft:large_fern" -> doublePlantType = "fern";
-                case "minecraft:rose_bush" -> doublePlantType = "rose";
-                case "minecraft:peony" -> doublePlantType = "paeonia";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("double_plant_type", doublePlantType)
-                .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_STONE_BLOCK_SLABS.contains(name)) {
-            replacement = "minecraft:stone_block_slab";
-            String stoneSlabType;
-
-            switch (name) {
-                case "minecraft:smooth_stone_slab" -> stoneSlabType = "smooth_stone";
-                case "minecraft:sandstone_slab" -> stoneSlabType = "sandstone";
-                case "minecraft:petrified_oak_slab" -> stoneSlabType = "wood";
-                case "minecraft:cobblestone_slab" -> stoneSlabType = "cobblestone";
-                case "minecraft:brick_slab" -> stoneSlabType = "brick";
-                case "minecraft:stone_brick_slab" -> stoneSlabType = "stone_brick";
-                case "minecraft:quartz_slab" -> stoneSlabType = "quartz";
-                case "minecraft:nether_brick_slab" -> stoneSlabType = "nether_brick";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("stone_slab_type", stoneSlabType)
-                .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_TALLGRASSES.contains(name)) {
-            replacement = "minecraft:tallgrass";
-            String tallGrassType;
-
-            switch (name) {
-                case "minecraft:short_grass" -> tallGrassType = "tall";
-                case "minecraft:fern" -> tallGrassType = "fern";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("tall_grass_type", tallGrassType)
-                .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        return tag;
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java
deleted file mode 100644
index 45963cb90..000000000
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion712_685.java
+++ /dev/null
@@ -1,439 +0,0 @@
-package org.geysermc.geyser.registry.populator;
-
-import org.cloudburstmc.nbt.NbtMap;
-import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.type.GeyserMappingItem;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-public class Conversion712_685 {
-    private static final List<String> NEW_STONE_BLOCK_SLABS_2 = List.of("minecraft:prismarine_slab", "minecraft:dark_prismarine_slab", "minecraft:smooth_sandstone_slab", "minecraft:purpur_slab", "minecraft:red_nether_brick_slab", "minecraft:prismarine_brick_slab", "minecraft:mossy_cobblestone_slab", "minecraft:red_sandstone_slab");
-    private static final List<String> NEW_STONE_BLOCK_SLABS_3 = List.of("minecraft:smooth_red_sandstone_slab", "minecraft:polished_granite_slab", "minecraft:granite_slab", "minecraft:polished_diorite_slab", "minecraft:andesite_slab", "minecraft:polished_andesite_slab", "minecraft:diorite_slab", "minecraft:end_stone_brick_slab");
-    private static final List<String> NEW_STONE_BLOCK_SLABS_4 = List.of("minecraft:smooth_quartz_slab", "minecraft:cut_sandstone_slab", "minecraft:cut_red_sandstone_slab", "minecraft:normal_stone_slab", "minecraft:mossy_stone_brick_slab");
-    private static final List<String> NEW_DOUBLE_STONE_BLOCK_SLABS = List.of("minecraft:quartz_double_slab", "minecraft:petrified_oak_double_slab", "minecraft:stone_brick_double_slab", "minecraft:brick_double_slab", "minecraft:sandstone_double_slab", "minecraft:nether_brick_double_slab", "minecraft:cobblestone_double_slab", "minecraft:smooth_stone_double_slab");
-    private static final List<String> NEW_DOUBLE_STONE_BLOCK_SLABS_2 = List.of("minecraft:prismarine_double_slab", "minecraft:dark_prismarine_double_slab", "minecraft:smooth_sandstone_double_slab", "minecraft:purpur_double_slab", "minecraft:red_nether_brick_double_slab", "minecraft:prismarine_brick_double_slab", "minecraft:mossy_cobblestone_double_slab", "minecraft:red_sandstone_double_slab");
-    private static final List<String> NEW_DOUBLE_STONE_BLOCK_SLABS_3 = List.of("minecraft:smooth_red_sandstone_double_slab", "minecraft:polished_granite_double_slab", "minecraft:granite_double_slab", "minecraft:polished_diorite_double_slab", "minecraft:andesite_double_slab", "minecraft:polished_andesite_double_slab", "minecraft:diorite_double_slab", "minecraft:end_stone_brick_double_slab");
-    private static final List<String> NEW_DOUBLE_STONE_BLOCK_SLABS_4 = List.of("minecraft:smooth_quartz_double_slab", "minecraft:cut_sandstone_double_slab", "minecraft:cut_red_sandstone_double_slab", "minecraft:normal_stone_double_slab", "minecraft:mossy_stone_brick_double_slab");
-    private static final List<String> NEW_PRISMARINE_BLOCKS = List.of("minecraft:prismarine_bricks", "minecraft:dark_prismarine", "minecraft:prismarine");
-    private static final List<String> NEW_CORAL_FAN_HANGS = List.of("minecraft:tube_coral_wall_fan", "minecraft:brain_coral_wall_fan", "minecraft:dead_tube_coral_wall_fan", "minecraft:dead_brain_coral_wall_fan");
-    private static final List<String> NEW_CORAL_FAN_HANGS_2 = List.of("minecraft:bubble_coral_wall_fan", "minecraft:fire_coral_wall_fan", "minecraft:dead_bubble_coral_wall_fan", "minecraft:dead_fire_coral_wall_fan");
-    private static final List<String> NEW_CORAL_FAN_HANGS_3 = List.of("minecraft:horn_coral_wall_fan", "minecraft:dead_horn_coral_wall_fan");
-    private static final List<String> NEW_MONSTER_EGGS = List.of("minecraft:infested_cobblestone", "minecraft:infested_stone_bricks", "minecraft:infested_mossy_stone_bricks", "minecraft:infested_cracked_stone_bricks", "minecraft:infested_chiseled_stone_bricks", "minecraft:infested_stone");
-    private static final List<String> NEW_STONEBRICK_BLOCKS = List.of("minecraft:mossy_stone_bricks", "minecraft:cracked_stone_bricks", "minecraft:chiseled_stone_bricks", "minecraft:smooth_stone_bricks", "minecraft:stone_bricks");
-    private static final List<String> NEW_LIGHT_BLOCKS = List.of("minecraft:light_block_0", "minecraft:light_block_1", "minecraft:light_block_2", "minecraft:light_block_3", "minecraft:light_block_4", "minecraft:light_block_5", "minecraft:light_block_6", "minecraft:light_block_7", "minecraft:light_block_8", "minecraft:light_block_9", "minecraft:light_block_10", "minecraft:light_block_11", "minecraft:light_block_12", "minecraft:light_block_13", "minecraft:light_block_14", "minecraft:light_block_15");
-    private static final List<String> NEW_SANDSTONE_BLOCKS = List.of("minecraft:cut_sandstone", "minecraft:chiseled_sandstone", "minecraft:smooth_sandstone", "minecraft:sandstone");
-    private static final List<String> NEW_QUARTZ_BLOCKS = List.of("minecraft:chiseled_quartz_block", "minecraft:quartz_pillar", "minecraft:smooth_quartz", "minecraft:quartz_block");
-    private static final List<String> NEW_RED_SANDSTONE_BLOCKS = List.of("minecraft:cut_red_sandstone", "minecraft:chiseled_red_sandstone", "minecraft:smooth_red_sandstone", "minecraft:red_sandstone");
-    private static final List<String> NEW_SAND_BLOCKS = List.of("minecraft:red_sand", "minecraft:sand");
-    private static final List<String> NEW_DIRT_BLOCKS = List.of("minecraft:coarse_dirt", "minecraft:dirt");
-    private static final List<String> NEW_ANVILS = List.of("minecraft:damaged_anvil", "minecraft:chipped_anvil", "minecraft:deprecated_anvil", "minecraft:anvil");
-    private static final List<String> NEW_YELLOW_FLOWERS = List.of("minecraft:dandelion");
-    private static final List<String> NEW_BLOCKS = Stream.of(NEW_STONE_BLOCK_SLABS_2, NEW_STONE_BLOCK_SLABS_3, NEW_STONE_BLOCK_SLABS_4, NEW_DOUBLE_STONE_BLOCK_SLABS, NEW_DOUBLE_STONE_BLOCK_SLABS_2, NEW_DOUBLE_STONE_BLOCK_SLABS_3, NEW_DOUBLE_STONE_BLOCK_SLABS_4, NEW_PRISMARINE_BLOCKS, NEW_CORAL_FAN_HANGS, NEW_CORAL_FAN_HANGS_2, NEW_CORAL_FAN_HANGS_3, NEW_MONSTER_EGGS, NEW_STONEBRICK_BLOCKS, NEW_LIGHT_BLOCKS, NEW_SANDSTONE_BLOCKS, NEW_QUARTZ_BLOCKS, NEW_RED_SANDSTONE_BLOCKS, NEW_SAND_BLOCKS, NEW_DIRT_BLOCKS, NEW_ANVILS, NEW_YELLOW_FLOWERS).flatMap(List::stream).toList();
-
-    static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
-        mapping = Conversion729_712.remapItem(item, mapping);
-        String identifier = mapping.getBedrockIdentifier();
-
-        if (!NEW_BLOCKS.contains(identifier)) {
-            return mapping;
-        }
-
-        if (identifier.equals("minecraft:coarse_dirt")) {
-            return mapping.withBedrockIdentifier("minecraft:dirt").withBedrockData(1);
-        }
-
-        if (identifier.equals("minecraft:dandelion")) {
-            return mapping.withBedrockIdentifier("minecraft:yellow_flower").withBedrockData(0);
-        }
-
-        if (identifier.equals("minecraft:red_sand")) {
-            return mapping.withBedrockIdentifier("minecraft:sand").withBedrockData(1);
-        }
-
-        if (NEW_PRISMARINE_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:prismarine" -> { return mapping.withBedrockIdentifier("minecraft:prismarine").withBedrockData(0); }
-                case "minecraft:dark_prismarine" -> { return mapping.withBedrockIdentifier("minecraft:prismarine").withBedrockData(1); }
-                case "minecraft:prismarine_bricks" -> { return mapping.withBedrockIdentifier("minecraft:prismarine").withBedrockData(2); }
-            }
-        }
-
-        if (NEW_SANDSTONE_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(0); }
-                case "minecraft:chiseled_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(1); }
-                case "minecraft:cut_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(2); }
-                case "minecraft:smooth_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:sandstone").withBedrockData(3); }
-            }
-        }
-
-        if (NEW_RED_SANDSTONE_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(0); }
-                case "minecraft:chiseled_red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(1); }
-                case "minecraft:cut_red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(2); }
-                case "minecraft:smooth_red_sandstone" -> { return mapping.withBedrockIdentifier("minecraft:red_sandstone").withBedrockData(3); }
-            }
-        }
-
-        if (NEW_QUARTZ_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:quartz_block" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(0); }
-                case "minecraft:chiseled_quartz_block" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(1); }
-                case "minecraft:quartz_pillar" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(2); }
-                case "minecraft:smooth_quartz" -> { return mapping.withBedrockIdentifier("minecraft:quartz_block").withBedrockData(3); }
-            }
-        }
-
-        if (NEW_STONE_BLOCK_SLABS_2.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:red_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(0); }
-                case "minecraft:purpur_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(1); }
-                case "minecraft:prismarine_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(2); }
-                case "minecraft:dark_prismarine_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(3); }
-                case "minecraft:prismarine_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(4); }
-                case "minecraft:mossy_cobblestone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(5); }
-                case "minecraft:smooth_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(6); }
-                case "minecraft:red_nether_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab2").withBedrockData(7); }
-            }
-        }
-
-        if (NEW_STONE_BLOCK_SLABS_3.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:end_stone_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(0); }
-                case "minecraft:smooth_red_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(1); }
-                case "minecraft:polished_andesite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(2); }
-                case "minecraft:andesite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(3); }
-                case "minecraft:diorite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(4); }
-                case "minecraft:polished_diorite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(5); }
-                case "minecraft:granite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(6); }
-                case "minecraft:polished_granite_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab3").withBedrockData(7); }
-            }
-        }
-
-        if (NEW_STONE_BLOCK_SLABS_4.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:mossy_stone_brick_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(0); }
-                case "minecraft:smooth_quartz_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(1); }
-                case "minecraft:normal_stone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(2); }
-                case "minecraft:cut_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(3); }
-                case "minecraft:cut_red_sandstone_slab" -> { return mapping.withBedrockIdentifier("minecraft:stone_block_slab4").withBedrockData(4); }
-            }
-        }
-
-        if (NEW_MONSTER_EGGS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:infested_stone" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(0); }
-                case "minecraft:infested_cobblestone" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(1); }
-                case "minecraft:infested_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(2); }
-                case "minecraft:infested_mossy_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(3); }
-                case "minecraft:infested_cracked_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(4); }
-                case "minecraft:infested_chiseled_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:monster_egg").withBedrockData(5); }
-            }
-        }
-
-        if (NEW_STONEBRICK_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(0); }
-                case "minecraft:mossy_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(1); }
-                case "minecraft:cracked_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(2); }
-                case "minecraft:chiseled_stone_bricks" -> { return mapping.withBedrockIdentifier("minecraft:stonebrick").withBedrockData(3); }
-            }
-        }
-
-        if (NEW_ANVILS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:anvil" -> { return mapping.withBedrockIdentifier("minecraft:anvil").withBedrockData(0); }
-                case "minecraft:chipped_anvil" -> { return mapping.withBedrockIdentifier("minecraft:anvil").withBedrockData(4); }
-                case "minecraft:damaged_anvil" -> { return mapping.withBedrockIdentifier("minecraft:anvil").withBedrockData(8); }
-            }
-        }
-
-        return mapping;
-    }
-
-    static NbtMap remapBlock(NbtMap tag) {
-        tag = Conversion729_712.remapBlock(tag);
-
-        final String name = tag.getString("name");
-
-        if (!NEW_BLOCKS.contains(name)) {
-            return tag;
-        }
-
-        String replacement;
-
-        if (NEW_DOUBLE_STONE_BLOCK_SLABS.contains(name)) {
-            replacement = "minecraft:double_stone_block_slab";
-            String stoneSlabType;
-
-            switch (name) {
-                case "minecraft:quartz_double_slab" -> stoneSlabType = "quartz";
-                case "minecraft:petrified_oak_double_slab" -> stoneSlabType = "wood";
-                case "minecraft:stone_brick_double_slab" -> stoneSlabType = "stone_brick";
-                case "minecraft:brick_double_slab" -> stoneSlabType = "brick";
-                case "minecraft:sandstone_double_slab" -> stoneSlabType = "sandstone";
-                case "minecraft:nether_brick_double_slab" -> stoneSlabType = "nether_brick";
-                case "minecraft:cobblestone_double_slab" -> stoneSlabType = "cobblestone";
-                case "minecraft:smooth_stone_double_slab" -> stoneSlabType = "smooth_stone";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("stone_slab_type", stoneSlabType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_STONE_BLOCK_SLABS_2.contains(name) || NEW_DOUBLE_STONE_BLOCK_SLABS_2.contains(name)) {
-            replacement = NEW_STONE_BLOCK_SLABS_2.contains(name) ? "minecraft:stone_block_slab2" : "minecraft:double_stone_block_slab2";
-            String stoneSlabType2;
-
-            switch (name) {
-                case "minecraft:prismarine_slab", "minecraft:prismarine_double_slab" -> stoneSlabType2 = "prismarine_rough";
-                case "minecraft:dark_prismarine_slab", "minecraft:dark_prismarine_double_slab" -> stoneSlabType2 = "prismarine_dark";
-                case "minecraft:smooth_sandstone_slab", "minecraft:smooth_sandstone_double_slab" -> stoneSlabType2 = "smooth_sandstone";
-                case "minecraft:purpur_slab", "minecraft:purpur_double_slab" -> stoneSlabType2 = "purpur";
-                case "minecraft:red_nether_brick_slab", "minecraft:red_nether_brick_double_slab" -> stoneSlabType2 = "red_nether_brick";
-                case "minecraft:prismarine_brick_slab", "minecraft:prismarine_brick_double_slab" -> stoneSlabType2 = "prismarine_brick";
-                case "minecraft:mossy_cobblestone_slab", "minecraft:mossy_cobblestone_double_slab" -> stoneSlabType2 = "mossy_cobblestone";
-                case "minecraft:red_sandstone_slab", "minecraft:red_sandstone_double_slab" -> stoneSlabType2 = "red_sandstone";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("stone_slab_type_2", stoneSlabType2)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_STONE_BLOCK_SLABS_3.contains(name) || NEW_DOUBLE_STONE_BLOCK_SLABS_3.contains(name)) {
-            replacement = NEW_STONE_BLOCK_SLABS_3.contains(name) ? "minecraft:stone_block_slab3" : "minecraft:double_stone_block_slab3";
-            String stoneSlabType3;
-
-            switch (name) {
-                case "minecraft:smooth_red_sandstone_slab", "minecraft:smooth_red_sandstone_double_slab" -> stoneSlabType3 = "smooth_red_sandstone";
-                case "minecraft:polished_granite_slab", "minecraft:polished_granite_double_slab" -> stoneSlabType3 = "polished_granite";
-                case "minecraft:granite_slab", "minecraft:granite_double_slab" -> stoneSlabType3 = "granite";
-                case "minecraft:polished_diorite_slab", "minecraft:polished_diorite_double_slab" -> stoneSlabType3 = "polished_diorite";
-                case "minecraft:andesite_slab", "minecraft:andesite_double_slab" -> stoneSlabType3 = "andesite";
-                case "minecraft:polished_andesite_slab", "minecraft:polished_andesite_double_slab" -> stoneSlabType3 = "polished_andesite";
-                case "minecraft:diorite_slab", "minecraft:diorite_double_slab" -> stoneSlabType3 = "diorite";
-                case "minecraft:end_stone_brick_slab", "minecraft:end_stone_brick_double_slab" -> stoneSlabType3 = "end_stone_brick";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("stone_slab_type_3", stoneSlabType3)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_STONE_BLOCK_SLABS_4.contains(name) || NEW_DOUBLE_STONE_BLOCK_SLABS_4.contains(name)) {
-            replacement = NEW_STONE_BLOCK_SLABS_4.contains(name) ? "minecraft:stone_block_slab4" : "minecraft:double_stone_block_slab4";
-            String stoneSlabType4;
-
-            switch (name) {
-                case "minecraft:smooth_quartz_slab", "minecraft:smooth_quartz_double_slab" -> stoneSlabType4 = "smooth_quartz";
-                case "minecraft:cut_sandstone_slab", "minecraft:cut_sandstone_double_slab" -> stoneSlabType4 = "cut_sandstone";
-                case "minecraft:cut_red_sandstone_slab", "minecraft:cut_red_sandstone_double_slab" -> stoneSlabType4 = "cut_red_sandstone";
-                case "minecraft:normal_stone_slab", "minecraft:normal_stone_double_slab" -> stoneSlabType4 = "stone";
-                case "minecraft:mossy_stone_brick_slab", "minecraft:mossy_stone_brick_double_slab" -> stoneSlabType4 = "mossy_stone_brick";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("stone_slab_type_4", stoneSlabType4)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_PRISMARINE_BLOCKS.contains(name)) {
-            replacement = "minecraft:prismarine";
-            String prismarineBlockType;
-
-            switch (name) {
-                case "minecraft:prismarine_bricks" -> prismarineBlockType = "bricks";
-                case "minecraft:dark_prismarine" -> prismarineBlockType = "dark";
-                case "minecraft:prismarine" -> prismarineBlockType = "default";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("prismarine_block_type", prismarineBlockType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_CORAL_FAN_HANGS.contains(name) || NEW_CORAL_FAN_HANGS_2.contains(name) || NEW_CORAL_FAN_HANGS_3.contains(name)) {
-            replacement = NEW_CORAL_FAN_HANGS.contains(name) ? "minecraft:coral_fan_hang" : NEW_CORAL_FAN_HANGS_2.contains(name) ? "minecraft:coral_fan_hang2" : "minecraft:coral_fan_hang3";
-            boolean deadBit = name.startsWith("minecraft:dead_");
-            boolean coralHangTypeBit = name.contains("brain") || name.contains("fire");
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putBoolean("coral_hang_type_bit", coralHangTypeBit)
-                .putBoolean("dead_bit", deadBit)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_MONSTER_EGGS.contains(name)) {
-            replacement = "minecraft:monster_egg";
-            String monsterEggStoneType;
-
-            switch (name) {
-                case "minecraft:infested_cobblestone" -> monsterEggStoneType = "cobblestone";
-                case "minecraft:infested_stone_bricks" -> monsterEggStoneType = "stone_brick";
-                case "minecraft:infested_mossy_stone_bricks" -> monsterEggStoneType = "mossy_stone_brick";
-                case "minecraft:infested_cracked_stone_bricks" -> monsterEggStoneType = "cracked_stone_brick";
-                case "minecraft:infested_chiseled_stone_bricks" -> monsterEggStoneType = "chiseled_stone_brick";
-                case "minecraft:infested_stone" -> monsterEggStoneType = "stone";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("monster_egg_stone_type", monsterEggStoneType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_STONEBRICK_BLOCKS.contains(name)) {
-            replacement = "minecraft:stonebrick";
-            String stoneBrickType;
-
-            switch (name) {
-                case "minecraft:mossy_stone_bricks" -> stoneBrickType = "mossy";
-                case "minecraft:cracked_stone_bricks" -> stoneBrickType = "cracked";
-                case "minecraft:chiseled_stone_bricks" -> stoneBrickType = "chiseled";
-                case "minecraft:smooth_stone_bricks" -> stoneBrickType = "smooth";
-                case "minecraft:stone_bricks" -> stoneBrickType = "default";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("stone_brick_type", stoneBrickType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_LIGHT_BLOCKS.contains(name)) {
-            replacement = "minecraft:light_block";
-            int blockLightLevel = Integer.parseInt(name.split("_")[2]);
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putInt("block_light_level", blockLightLevel)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_SANDSTONE_BLOCKS.contains(name) || NEW_RED_SANDSTONE_BLOCKS.contains(name)) {
-            replacement = NEW_SANDSTONE_BLOCKS.contains(name) ? "minecraft:sandstone" : "minecraft:red_sandstone";
-            String sandStoneType;
-
-            switch (name) {
-                case "minecraft:cut_sandstone", "minecraft:cut_red_sandstone" -> sandStoneType = "cut";
-                case "minecraft:chiseled_sandstone", "minecraft:chiseled_red_sandstone" -> sandStoneType = "heiroglyphs";
-                case "minecraft:smooth_sandstone", "minecraft:smooth_red_sandstone" -> sandStoneType = "smooth";
-                case "minecraft:sandstone", "minecraft:red_sandstone" -> sandStoneType = "default";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("sand_stone_type", sandStoneType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_QUARTZ_BLOCKS.contains(name)) {
-            replacement = "minecraft:quartz_block";
-            String chiselType;
-
-            switch (name) {
-                case "minecraft:chiseled_quartz_block" -> chiselType = "chiseled";
-                case "minecraft:quartz_pillar" -> chiselType = "lines";
-                case "minecraft:smooth_quartz" -> chiselType = "smooth";
-                case "minecraft:quartz_block" -> chiselType = "default";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("chisel_type", chiselType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_SAND_BLOCKS.contains(name)) {
-            replacement = "minecraft:sand";
-            String sandType = name.equals("minecraft:red_sand") ? "red" : "normal";
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("sand_type", sandType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_DIRT_BLOCKS.contains(name)) {
-            replacement = "minecraft:dirt";
-            String dirtType = name.equals("minecraft:coarse_dirt") ? "coarse" : "normal";
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("dirt_type", dirtType)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_ANVILS.contains(name)) {
-            replacement = "minecraft:anvil";
-            String damage;
-
-            switch (name) {
-                case "minecraft:damaged_anvil" -> damage = "broken";
-                case "minecraft:chipped_anvil" -> damage = "slightly_damaged";
-                case "minecraft:deprecated_anvil" -> damage = "very_damaged";
-                case "minecraft:anvil" -> damage = "undamaged";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("damage", damage)
-                .build();
-        
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_YELLOW_FLOWERS.contains(name)) {
-            replacement = "minecraft:yellow_flower";
-            return tag.toBuilder().putString("name", replacement).build();
-        }
-
-        return tag;
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java
deleted file mode 100644
index fbc2233bc..000000000
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion729_712.java
+++ /dev/null
@@ -1,152 +0,0 @@
-package org.geysermc.geyser.registry.populator;
-
-import org.cloudburstmc.nbt.NbtMap;
-import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.type.GeyserMappingItem;
-
-import java.util.List;
-import java.util.stream.Stream;
-
-public class Conversion729_712 {
-    private static final List<String> NEW_PURPUR_BLOCKS = List.of("minecraft:purpur_block", "minecraft:purpur_pillar");
-    private static final List<String> NEW_WALL_BLOCKS = List.of("minecraft:cobblestone_wall", "minecraft:mossy_cobblestone_wall", "minecraft:granite_wall", "minecraft:diorite_wall", "minecraft:andesite_wall", "minecraft:sandstone_wall", "minecraft:brick_wall", "minecraft:stone_brick_wall", "minecraft:mossy_stone_brick_wall", "minecraft:nether_brick_wall", "minecraft:end_stone_brick_wall", "minecraft:prismarine_wall", "minecraft:red_sandstone_wall", "minecraft:red_nether_brick_wall");
-    private static final List<String> NEW_SPONGE_BLOCKS = List.of("minecraft:sponge", "minecraft:wet_sponge");
-    private static final List<String> NEW_TNT_BLOCKS = List.of("minecraft:tnt", "minecraft:underwater_tnt");
-    private static final List<String> STRUCTURE_VOID = List.of("minecraft:structure_void");
-    private static final List<String> NEW_BLOCKS = Stream.of(NEW_PURPUR_BLOCKS, NEW_WALL_BLOCKS, NEW_SPONGE_BLOCKS, NEW_TNT_BLOCKS, STRUCTURE_VOID).flatMap(List::stream).toList();
-
-    static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
-        mapping = Conversion748_729.remapItem(item, mapping);
-        String identifier = mapping.getBedrockIdentifier();
-
-        if (!NEW_BLOCKS.contains(identifier)) {
-            return mapping;
-        }
-
-        if (identifier.equals("minecraft:underwater_tnt")) {
-            return mapping.withBedrockIdentifier("minecraft:tnt").withBedrockData(1);
-        }
-
-        if (NEW_PURPUR_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:purpur_block" -> { return mapping.withBedrockIdentifier("minecraft:purpur_block").withBedrockData(0); }
-                case "minecraft:purpur_pillar" -> { return mapping.withBedrockIdentifier("minecraft:purpur_block").withBedrockData(1); }
-            }
-        }
-
-        if (NEW_WALL_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:cobblestone_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(0); }
-                case "minecraft:mossy_cobblestone_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(1); }
-                case "minecraft:granite_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(2); }
-                case "minecraft:diorite_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(3); }
-                case "minecraft:andesite_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(4); }
-                case "minecraft:sandstone_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(5); }
-                case "minecraft:brick_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(6); }
-                case "minecraft:stone_brick_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(7); }
-                case "minecraft:mossy_stone_brick_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(8); }
-                case "minecraft:nether_brick_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(9); }
-                case "minecraft:end_stone_brick_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(10); }
-                case "minecraft:prismarine_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(11); }
-                case "minecraft:red_sandstone_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(12); }
-                case "minecraft:red_nether_brick_wall" -> { return mapping.withBedrockIdentifier("minecraft:cobblestone_wall").withBedrockData(13); }
-            }
-        }
-
-        if (NEW_SPONGE_BLOCKS.contains(identifier)) {
-            switch (identifier) {
-                case "minecraft:sponge" -> { return mapping.withBedrockIdentifier("minecraft:sponge").withBedrockData(0); }
-                case "minecraft:wet_sponge" -> { return mapping.withBedrockIdentifier("minecraft:sponge").withBedrockData(1); }
-            }
-        }
-
-        return mapping;
-    }
-
-    static NbtMap remapBlock(NbtMap tag) {
-        final String name = tag.getString("name");
-
-        if (!NEW_BLOCKS.contains(name)) {
-            return tag;
-        }
-
-        String replacement;
-
-        if (NEW_PURPUR_BLOCKS.contains(name)) {
-            replacement = "minecraft:purpur_block";
-            String purpurType = name.equals("minecraft:purpur_pillar") ? "lines" : "default";
-
-            NbtMap states = tag.getCompound("states")
-                    .toBuilder()
-                    .putString("chisel_type", purpurType)
-                    .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_WALL_BLOCKS.contains(name)) {
-            replacement = "minecraft:cobblestone_wall";
-            String wallType;
-
-            switch (name) {
-                case "minecraft:cobblestone_wall" -> wallType = "cobblestone";
-                case "minecraft:mossy_cobblestone_wall" -> wallType = "mossy_cobblestone";
-                case "minecraft:granite_wall" -> wallType = "granite";
-                case "minecraft:diorite_wall" -> wallType = "diorite";
-                case "minecraft:andesite_wall" -> wallType = "andesite";
-                case "minecraft:sandstone_wall" -> wallType = "sandstone";
-                case "minecraft:brick_wall" -> wallType = "brick";
-                case "minecraft:stone_brick_wall" -> wallType = "stone_brick";
-                case "minecraft:mossy_stone_brick_wall" -> wallType = "mossy_stone_brick";
-                case "minecraft:nether_brick_wall" -> wallType = "nether_brick";
-                case "minecraft:end_stone_brick_wall" -> wallType = "end_brick";
-                case "minecraft:prismarine_wall" -> wallType = "prismarine";
-                case "minecraft:red_sandstone_wall" -> wallType = "red_sandstone";
-                case "minecraft:red_nether_brick_wall" -> wallType = "red_nether_brick";
-                default -> throw new IllegalStateException("Unexpected value: " + name);
-            }
-
-            NbtMap states = tag.getCompound("states")
-                    .toBuilder()
-                    .putString("wall_block_type", wallType)
-                    .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_SPONGE_BLOCKS.contains(name)) {
-            replacement = "minecraft:sponge";
-            String spongeType = name.equals("minecraft:wet_sponge") ? "wet" : "dry";
-
-            NbtMap states = tag.getCompound("states")
-                    .toBuilder()
-                    .putString("sponge_type", spongeType)
-                    .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (NEW_TNT_BLOCKS.contains(name)) {
-            replacement = "minecraft:tnt";
-            byte tntType = (byte) (name.equals("minecraft:underwater_tnt") ? 1 : 0);
-
-            NbtMap states = tag.getCompound("states")
-                    .toBuilder()
-                    .putByte("allow_underwater_bit", tntType)
-                    .build();
-
-            return tag.toBuilder().putString("name", replacement).putCompound("states", states).build();
-        }
-
-        if (STRUCTURE_VOID.contains(name)) {
-            NbtMap states = tag.getCompound("states")
-                .toBuilder()
-                .putString("structure_void_type", "air")
-                .build();
-
-            return tag.toBuilder().putCompound("states", states).build();
-        }
-
-        return tag;
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java
index 8e42887ff..01dcd38a6 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java
@@ -37,6 +37,7 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.type.BlockMappings;
 import org.geysermc.geyser.registry.type.GeyserBedrockBlock;
+import org.geysermc.geyser.registry.type.GeyserMappingItem;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
@@ -50,12 +51,10 @@ import java.util.function.Consumer;
 public class CreativeItemRegistryPopulator {
     private static final List<BiPredicate<String, Integer>> JAVA_ONLY_ITEM_FILTER = List.of(
             // Bedrock-only as its own item
-            (identifier, data) -> identifier.equals("minecraft:empty_map") && data == 2,
-            // Bedrock-only banner patterns
-            (identifier, data) -> identifier.equals("minecraft:bordure_indented_banner_pattern") || identifier.equals("minecraft:field_masoned_banner_pattern")
+            (identifier, data) -> identifier.equals("minecraft:empty_map") && data == 2
     );
 
-    static void populate(ItemRegistryPopulator.PaletteVersion palette, Map<String, ItemDefinition> definitions, Consumer<ItemData.Builder> itemConsumer) {
+    static void populate(ItemRegistryPopulator.PaletteVersion palette, Map<String, ItemDefinition> definitions, Map<String, GeyserMappingItem> items, Consumer<ItemData.Builder> itemConsumer) {
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
         // Load creative items
@@ -68,7 +67,7 @@ public class CreativeItemRegistryPopulator {
 
         BlockMappings blockMappings = BlockRegistries.BLOCKS.forVersion(palette.protocolVersion());
         for (JsonNode itemNode : creativeItemEntries) {
-            ItemData.Builder itemBuilder = createItemData(itemNode, blockMappings, definitions);
+            ItemData.Builder itemBuilder = createItemData(itemNode, items, blockMappings, definitions);
             if (itemBuilder == null) {
                 continue;
             }
@@ -77,7 +76,7 @@ public class CreativeItemRegistryPopulator {
         }
     }
 
-    private static ItemData.@Nullable Builder createItemData(JsonNode itemNode, BlockMappings blockMappings, Map<String, ItemDefinition> definitions) {
+    private static ItemData.@Nullable Builder createItemData(JsonNode itemNode, Map<String, GeyserMappingItem> items, BlockMappings blockMappings, Map<String, ItemDefinition> definitions) {
         int count = 1;
         int damage = 0;
         NbtMap tag = null;
@@ -89,6 +88,23 @@ public class CreativeItemRegistryPopulator {
             }
         }
 
+        // Attempt to remove items that do not exist in Java (1.21.50 has 1.21.4 items, that don't exist on 1.21.2)
+        // we still add the lodestone compass - we're going to translate it.
+        if (!items.containsKey(identifier) && !identifier.equals("minecraft:lodestone_compass")) {
+            // bedrock identifier not found, let's make sure it's not just different
+            boolean found = false;
+            for (var mapping : items.values()) {
+                if (mapping.getBedrockIdentifier().equals(identifier)) {
+                    found = true;
+                    break;
+                }
+            }
+
+            if (!found) {
+                return null;
+            }
+        }
+
         JsonNode damageNode = itemNode.get("damage");
         if (damageNode != null) {
             damage = damageNode.asInt();
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 1da3b0e66..e9901c620 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -45,11 +45,8 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.nbt.NbtUtils;
-import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
-import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
-import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
-import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
+import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
@@ -85,7 +82,6 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -111,18 +107,9 @@ public class ItemRegistryPopulator {
     }
 
     public static void populate() {
-        List<Item> bundles = List.of(Items.BUNDLE, Items.BLACK_BUNDLE, Items.BLUE_BUNDLE, Items.BROWN_BUNDLE, Items.CYAN_BUNDLE, Items.GRAY_BUNDLE,
-            Items.GREEN_BUNDLE, Items.LIGHT_BLUE_BUNDLE, Items.LIGHT_GRAY_BUNDLE, Items.LIME_BUNDLE, Items.MAGENTA_BUNDLE, Items.ORANGE_BUNDLE, Items.RED_BUNDLE,
-            Items.PINK_BUNDLE, Items.PURPLE_BUNDLE, Items.WHITE_BUNDLE, Items.YELLOW_BUNDLE);
-        Map<Item, Item> pre1_21_2Items = new HashMap<>();
-        bundles.forEach(bundle -> pre1_21_2Items.put(bundle, Items.SHULKER_SHELL));
-
-        List<PaletteVersion> paletteVersions = new ArrayList<>(3);
-        paletteVersions.add(new PaletteVersion("1_20_80", Bedrock_v671.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion685_671::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_0", Bedrock_v685.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion712_685::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_20", Bedrock_v712.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion729_712::remapItem));
-        paletteVersions.add(new PaletteVersion("1_21_30", Bedrock_v729.CODEC.getProtocolVersion(), pre1_21_2Items, Conversion748_729::remapItem));
+        List<PaletteVersion> paletteVersions = new ArrayList<>(2);
         paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
+        paletteVersions.add(new PaletteVersion("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
@@ -207,7 +194,7 @@ public class ItemRegistryPopulator {
             noBlockDefinitions.add("minecraft:structure_void");
 
             AtomicInteger creativeNetId = new AtomicInteger();
-            CreativeItemRegistryPopulator.populate(palette, definitions, itemBuilder -> {
+            CreativeItemRegistryPopulator.populate(palette, definitions, items, itemBuilder -> {
                 ItemData item = itemBuilder.netId(creativeNetId.incrementAndGet()).build();
                 creativeItems.add(item);
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
index 24cc270c9..dd654531a 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
@@ -33,11 +33,8 @@ import it.unimi.dsi.fastutil.ints.IntArrayList;
 import it.unimi.dsi.fastutil.ints.IntList;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
 import it.unimi.dsi.fastutil.objects.ObjectIntPair;
-import org.cloudburstmc.protocol.bedrock.codec.v671.Bedrock_v671;
-import org.cloudburstmc.protocol.bedrock.codec.v685.Bedrock_v685;
-import org.cloudburstmc.protocol.bedrock.codec.v712.Bedrock_v712;
-import org.cloudburstmc.protocol.bedrock.codec.v729.Bedrock_v729;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
+import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
 import org.geysermc.geyser.GeyserBootstrap;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.item.type.Item;
@@ -70,11 +67,8 @@ public final class TagRegistryPopulator {
         };
 
         List<ObjectIntPair<String>> paletteVersions = List.of(
-            ObjectIntPair.of("1_20_80", Bedrock_v671.CODEC.getProtocolVersion()),
-            ObjectIntPair.of("1_21_0", Bedrock_v685.CODEC.getProtocolVersion()),
-            ObjectIntPair.of("1_21_20", Bedrock_v712.CODEC.getProtocolVersion()),
-            ObjectIntPair.of("1_21_30", Bedrock_v729.CODEC.getProtocolVersion()),
-            ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion())
+            ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()),
+            ObjectIntPair.of("1_21_50", Bedrock_v765.CODEC.getProtocolVersion())
         );
         Type type = new TypeToken<Map<String, List<String>>>() {}.getType();
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index ef6261ead..cfb981b7d 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -2241,9 +2241,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     @Override
     public void closeForm() {
-        if (!GameProtocol.isPre1_21_2(this)) {
-            sendUpstreamPacket(new ClientboundCloseFormPacket());
-        }
+        sendUpstreamPacket(new ClientboundCloseFormPacket());
     }
 
     public void addCommandEnum(String name, String enums) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index 15c19c542..78322c529 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -261,9 +261,9 @@ public abstract class InventoryTranslator {
                         }
                     }
 
-                    if (shouldRejectItemPlace(session, inventory, transferAction.getSource().getContainer(),
+                    if (shouldRejectItemPlace(session, inventory, transferAction.getSource().getContainerName().getContainer(),
                             isSourceCursor ? -1 : sourceSlot,
-                            transferAction.getDestination().getContainer(), isDestCursor ? -1 : destSlot)) {
+                            transferAction.getDestination().getContainerName().getContainer(), isDestCursor ? -1 : destSlot)) {
                         // This item would not be here in Java
                         return rejectRequest(request, false);
                     }
@@ -411,14 +411,14 @@ public abstract class InventoryTranslator {
                     boolean isSourceCursor = isCursor(source);
                     boolean isDestCursor = isCursor(destination);
 
-                    if (shouldRejectItemPlace(session, inventory, source.getContainer(),
+                    if (shouldRejectItemPlace(session, inventory, source.getContainerName().getContainer(),
                             isSourceCursor ? -1 : sourceSlot,
-                            destination.getContainer(), isDestCursor ? -1 : destSlot)) {
+                            destination.getContainerName().getContainer(), isDestCursor ? -1 : destSlot)) {
                         // This item would not be here in Java
                         return rejectRequest(request, false);
                     }
 
-                    if (!isSourceCursor && destination.getContainer() == ContainerSlotType.HOTBAR || destination.getContainer() == ContainerSlotType.HOTBAR_AND_INVENTORY) {
+                    if (!isSourceCursor && destination.getContainerName().getContainer() == ContainerSlotType.HOTBAR || destination.getContainerName().getContainer() == ContainerSlotType.HOTBAR_AND_INVENTORY) {
                         // Tell the server we're pressing one of the hotbar keys to save clicks
                         Click click = InventoryUtils.getClickForHotbarSwap(destination.getSlot());
                         if (click != null) {
@@ -587,7 +587,7 @@ public abstract class InventoryTranslator {
                     }
                     craftState = CraftState.TRANSFER;
 
-                    if (transferAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
+                    if (transferAction.getSource().getContainerName().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
                         return rejectRequest(request);
                     }
                     if (transferAction.getCount() <= 0) {
@@ -780,7 +780,7 @@ public abstract class InventoryTranslator {
                     }
                     craftState = CraftState.TRANSFER;
 
-                    if (transferAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
+                    if (transferAction.getSource().getContainerName().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
                         return rejectRequest(request);
                     }
                     if (transferAction.getCount() <= 0) {
@@ -1028,15 +1028,15 @@ public abstract class InventoryTranslator {
                 }
             }
 
-            itemEntry = new ItemStackResponseSlot((byte) bedrockSlot, (byte) bedrockSlot, (byte) itemStack.getAmount(), itemStack.getNetId(), "", durability);
+            itemEntry = new ItemStackResponseSlot((byte) bedrockSlot, (byte) bedrockSlot, (byte) itemStack.getAmount(), itemStack.getNetId(), "", durability, "");
         } else {
-            itemEntry = new ItemStackResponseSlot((byte) bedrockSlot, (byte) bedrockSlot, (byte) 0, 0, "", 0);
+            itemEntry = new ItemStackResponseSlot((byte) bedrockSlot, (byte) bedrockSlot, (byte) 0, 0, "", 0, "");
         }
         return itemEntry;
     }
 
     protected static boolean isCursor(ItemStackRequestSlotData slotInfoData) {
-        return slotInfoData.getContainer() == ContainerSlotType.CURSOR;
+        return slotInfoData.getContainerName().getContainer() == ContainerSlotType.CURSOR;
     }
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
index 77f58f5d6..be0f8560f 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
@@ -35,8 +35,6 @@ import org.cloudburstmc.protocol.bedrock.packet.UpdateBlockPacket;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.BlockState;
-import org.geysermc.geyser.level.block.type.SkullBlock;
-import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.SkullCache;
 import org.geysermc.geyser.skin.SkinProvider;
@@ -58,9 +56,6 @@ public class SkullBlockEntityTranslator extends BlockEntityTranslator implements
             // Could be a wall skull block otherwise, which has rotation in its Bedrock state
             bedrockNbt.putFloat("Rotation", rotation * 22.5f);
         }
-        if (GameProtocol.isPre1_21_40(session)) {
-            bedrockNbt.putByte("SkullType", (byte) (blockState.block() instanceof SkullBlock skull ? skull.skullType().bedrockId() : 0));
-        }
         if (blockState.getValue(Properties.POWERED)) {
             bedrockNbt.putBoolean("MouthMoving", true);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
index 6abb3899a..ce8afa269 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockMovePlayer.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock.entity.player.input;
 
-import net.kyori.adventure.util.TriState;
 import org.cloudburstmc.math.vector.Vector3d;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.PlayerAuthInputData;
@@ -33,7 +32,6 @@ import org.cloudburstmc.protocol.bedrock.packet.PlayerAuthInputPacket;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.level.physics.CollisionResult;
-import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.mcprotocollib.network.packet.Packet;
@@ -88,14 +86,8 @@ final class BedrockMovePlayer {
             session.setLookBackScheduledFuture(null);
         }
 
-        TriState maybeOnGround;
-        if (GameProtocol.isPre1_21_30(session)) {
-            // VERTICAL_COLLISION input data does not exist.
-            maybeOnGround = TriState.NOT_SET;
-        } else {
-            // Client is telling us it wants to move down, but something is blocking it from doing so.
-            maybeOnGround = TriState.byBoolean(packet.getInputData().contains(PlayerAuthInputData.VERTICAL_COLLISION) && packet.getDelta().getY() < 0);
-        }
+        // Client is telling us it wants to move down, but something is blocking it from doing so.
+        boolean isOnGround = packet.getInputData().contains(PlayerAuthInputData.VERTICAL_COLLISION) && packet.getDelta().getY() < 0;
         // This takes into account no movement sent from the client, but the player is trying to move anyway.
         // (Press into a wall in a corner - you're trying to move but nothing actually happens)
         boolean horizontalCollision = packet.getInputData().contains(PlayerAuthInputData.HORIZONTAL_COLLISION);
@@ -104,7 +96,7 @@ final class BedrockMovePlayer {
         // This isn't needed, but it makes the packets closer to vanilla
         // It also means you can't "lag back" while only looking, in theory
         if (!positionChanged && rotationChanged) {
-            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(maybeOnGround.toBooleanOrElse(entity.isOnGround()), horizontalCollision, yaw, pitch);
+            ServerboundMovePlayerRotPacket playerRotationPacket = new ServerboundMovePlayerRotPacket(isOnGround, horizontalCollision, yaw, pitch);
 
             entity.setYaw(yaw);
             entity.setPitch(pitch);
@@ -113,10 +105,9 @@ final class BedrockMovePlayer {
             session.sendDownstreamGamePacket(playerRotationPacket);
         } else if (positionChanged) {
             if (isValidMove(session, entity.getPosition(), packet.getPosition())) {
-                CollisionResult result = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), maybeOnGround.toBooleanOrElse(false), packet.getInputData().contains(PlayerAuthInputData.HANDLE_TELEPORT));
+                CollisionResult result = session.getCollisionManager().adjustBedrockPosition(packet.getPosition(), isOnGround, packet.getInputData().contains(PlayerAuthInputData.HANDLE_TELEPORT));
                 if (result != null) { // A null return value cancels the packet
                     Vector3d position = result.correctedMovement();
-                    boolean onGround = maybeOnGround.toBooleanOrElseGet(() -> session.getCollisionManager().isOnGround());
                     boolean isBelowVoid = entity.isVoidPositionDesynched();
 
                     boolean teleportThroughVoidFloor, mustResyncPosition;
@@ -131,7 +122,7 @@ final class BedrockMovePlayer {
 
                     if (teleportThroughVoidFloor || isBelowVoid) {
                         // https://github.com/GeyserMC/Geyser/issues/3521 - no void floor in Java so we cannot be on the ground.
-                        onGround = false;
+                        isOnGround = false;
                     }
 
                     if (isBelowVoid) {
@@ -151,7 +142,7 @@ final class BedrockMovePlayer {
                     if (rotationChanged) {
                         // Send rotation updates as well
                         movePacket = new ServerboundMovePlayerPosRotPacket(
-                                onGround,
+                                isOnGround,
                                 horizontalCollision,
                                 position.getX(), yPosition, position.getZ(),
                                 yaw, pitch
@@ -161,7 +152,7 @@ final class BedrockMovePlayer {
                         entity.setHeadYaw(headYaw);
                     } else {
                         // Rotation did not change; don't send an update with rotation
-                        movePacket = new ServerboundMovePlayerPosPacket(onGround, horizontalCollision, position.getX(), yPosition, position.getZ());
+                        movePacket = new ServerboundMovePlayerPosPacket(isOnGround, horizontalCollision, position.getX(), yPosition, position.getZ());
                     }
 
                     entity.setPositionManual(packet.getPosition());
@@ -183,12 +174,12 @@ final class BedrockMovePlayer {
                 session.getGeyser().getLogger().debug("Recalculating position...");
                 session.getCollisionManager().recalculatePosition();
             }
-        } else if (horizontalCollision != session.getInputCache().lastHorizontalCollision() || maybeOnGround.toBooleanOrElse(entity.isOnGround()) != entity.isOnGround()) {
-            session.sendDownstreamGamePacket(new ServerboundMovePlayerStatusOnlyPacket(maybeOnGround.toBooleanOrElse(false), horizontalCollision));
+        } else if (horizontalCollision != session.getInputCache().lastHorizontalCollision() || isOnGround != entity.isOnGround()) {
+            session.sendDownstreamGamePacket(new ServerboundMovePlayerStatusOnlyPacket(isOnGround, horizontalCollision));
         }
 
         session.getInputCache().setLastHorizontalCollision(horizontalCollision);
-        entity.setOnGround(maybeOnGround.toBooleanOrElse(entity.isOnGround()));
+        entity.setOnGround(isOnGround);
 
         // Move parrots to match if applicable
         if (entity.getLeftParrot() != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
index 11178115a..e1ff7a5fc 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
@@ -29,7 +29,6 @@ import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.LivingEntity;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
 import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.skin.FakeHeadProvider;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
@@ -79,11 +78,8 @@ public class JavaSetEquipmentTranslator extends PacketTranslator<ClientboundSetE
                 }
                 case BODY -> {
                     // BODY is sent for llamas with a carpet equipped, as of 1.20.5
-                    if (GameProtocol.isPre1_21_2(session)) {
-                        livingEntity.setChestplate(stack);
-                    } else {
-                        livingEntity.setBody(stack);
-                    }
+                    // and for wolves
+                    livingEntity.setBody(stack);
                     armorUpdated = true;
                 }
                 case LEGGINGS -> {
diff --git a/core/src/main/resources/bedrock/biome_definitions.dat b/core/src/main/resources/bedrock/biome_definitions.dat
index 2bd58d0a33a9ea50e55361a77e3832a66cdc771a..e59a99ce2a5c5ffc11489ea1a9d42285e77f137a 100644
GIT binary patch
delta 926
zcmYjPUr1AN6lVV?)2U_IEWJ(Bh{7=%Ld*q*KPy4PhtU48x$?HsySv-Ht2t813<B3o
zckrcNgvjh62!Bab*nB83S}6tgSP#K^>A`w33);?E(bN6T_nq_c{m!{lGy2h4{iA0F
z!_2*UzF>GmAYrlS@(fH_zu-6R68N2>cSv%{Hb5X-yq(&z#SGf*tJo^p7(ZWX(xanN
z{(w4?RSe`ZGY@TkO@wb;fThX?KCs16=!goyxBftnoXD3d^(3sMT6wu6js;IvJtSve
z^;=>}gf#*>=S>0=wJ)&;y6V57-Qk8``0c7^Jh9tk#AvWrr1p({W(1ISF@CgBBR1{Y
z_KyX@{Q_q`yWb;ucYZ&KnYh3|dQw#Qsu}$DSozbYW0cW$ph$1GYf3OC2SmA7RKp@P
zdj+WQ?tz}c8qAb`-Llt+4t%xQNs~VhelUaERt23Fhsmf0RS|UUG_YV`yua-+9tt)(
z7!S2i($zLP76?4=%#fV0Fur`;NJWXz#&?|X>q_n6pd3;om&Je<3x*X~+f)huL^%u(
z9^vaJPm@QtU!hkeql}mJ)X_$p&V0wz`4Gz4S42)r42I6(h9HOeXs7~LoG;*0Kdo+B
znxr>+WIutaNa0t|IhoC-1SK&L3aY&#I32aH^N<}}ry2#bB^;5psHhg@@~W|jD)s)?
zDnr^`gSlreE|Tj7%}F2`-Gu<U{S4MGeZ|}(g910i=19oIbN3p^;AJ!Mc^bQZrH4+C
z9rEa5xW!tm$&pw*ph*!$)VS+v!8La`xIJ<ohg+}JSrPP&naH|tjPWOl8&tF;*HQJ2
fTmKRQgl^5{$=r?v?wuGTVWO5nNoo;=l@$8}M7(Fj

delta 867
zcmX|<Ur1AN6vx@!+#jaa%CcE@o24d3V>JXZ3!$HtAmKx35t~-KQ@q|?cFXDdNBR<N
z=AV;K5g0+)LlB*OXyKoS0z*qE(nos;7DNx$ldYh6j`{Tap3gbwd(ZFuZvVJ6`dE6N
zGMg2p3@6QVED|=GX^p_B{VSc*UK#H@J`hCJ*~228yOYb(xdIyU7pYWr3T)q$Bax%-
zddd|8MFO<VRt#@_$DndhhS|b0?AhjKFc*{oxBnuKY!YV+B~DDiadf$RDZqiEXY5>C
z{GLgkyu!ldNwOF!c|$eOT>69TPL%zjv$<4YqCCe!qd{ee%QFY8Bw*Sr@YF$r>9lvp
z1_jwSMLl199|=C1ILygZT*f8;2nV&r0{;5#_^RqO&*-dnNKjW(vBhQRZ80sVgknLx
zBdm642H5+mX{NQ?E!0@Z0T+*WxbyeXPgZEMxku`Az~?N7{00|QPnrdG*1x1zf=r{p
zaKkV^S*CH4#p|YdPA6;v7tUBX$dl`F*V%x{?TB=TqOnL+y_Db8riG)~FlfZux^y^}
z+zrb&PvYvi^X$|T(0Q!6U^_3g>cY>BG4zXX8IGv}t}C=4$ZG5l7tn^+0$A?k&5fzU
z?B&-2EJh>ie}c&)@LqI=Y4c?di>p`mk${$ffOPjaNl~C~{~lb4y<nb-3;5nUPw$e7
zPjFZCS}QN`^9{dLkZWj>SZ~l!BYMcND$z(hq+#)`b>r;j;db8>GC0(~*G@NUO$vCB
um?7Ajoaaw@@2(Q49JK!jGA#LBpbR~vt}#`{is3t)94Zlz86gXp0`U))1vAwE

diff --git a/core/src/main/resources/bedrock/block_palette.1_20_80.nbt b/core/src/main/resources/bedrock/block_palette.1_20_80.nbt
deleted file mode 100644
index d330c7d6f984d4cd4ec2202c475f9c266a1d93e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 176786
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
S?{TZQA3KZh#+`H6k^T>B9i{33

diff --git a/core/src/main/resources/bedrock/block_palette.1_21_0.nbt b/core/src/main/resources/bedrock/block_palette.1_21_0.nbt
deleted file mode 100644
index 57366fc57f4456dd195497c435f5e5c7b397075d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 177397
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

diff --git a/core/src/main/resources/bedrock/block_palette.1_21_20.nbt b/core/src/main/resources/bedrock/block_palette.1_21_20.nbt
deleted file mode 100644
index 521ea3cc6fdded8adda60e2a1ad1ff35ab826dc5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 178977
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
BS)%{|

diff --git a/core/src/main/resources/bedrock/block_palette.1_21_30.nbt b/core/src/main/resources/bedrock/block_palette.1_21_30.nbt
deleted file mode 100644
index bb19c11ca73fbdda905acbb35516ab0588dbac95..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 180490
zcmafaWn33s^S6M6AR*G-9f}|+-AH#g($d`_UD60hNH<7_bR*I!T>{b}{oh^g>v{Y5
zYCf}b&dhu#<+n>3f%F9WhrF2KD)`dkW$#O2Wei0acoYhTaCpLt@Yc)nZb8_vAnW%5
zSe}Olhpm~dmrFxoy8FO`!b1Jn2ovMkeVW6c%{RXVTnl2aMmFZ$_lC`Ik*c2&btQ<p
zCA@7GRLF~yT)Dk@=teFQBx_n_s#KTCF@-%e50=I$j}zS~4(XFoG0J$K8yEDFC!<?0
zmidmh+aXMiW#`BGnas9Uy=cHbLn=$suW!EZos+-4n1hej$`GZUKo*59Xk&{~6DkbK
z3{HP);;8+6>y~X~fSRC4qf9|8?EGuigK`m<68)H^lo_Im^a9Vo_UnQDQKbmli8ogD
zod(lyCahD~#A(oy3%^O@4@}0=7i-1;g{M+>CjD3XU@ZNSetqUU?45wHzhu#`XS213
zycee=rx(Fw7e8V$Pk**}^J3h@sC-EJQqKxo#ri%XLCNPq*yV4?h32N{)m@FX?`Tee
zX7@5$x6fF#NcFF;q0!zqCkQw0Z~n?qU&qi;DXwV*#C}HFvawpZcyq)PmbI0~(RGi(
zg`zWwoTrrYLS_w1%l}oT&7OdscUfBAIagiT<pMK*eBSv}>AlVjggyAEHuqo}oy^RA
zRi$7CrBYSV;z<0U%=@Nt#sgKV*X-^JE#Ko{`6xL=Bc-ozTziy)#c|3f7UX?N4DATi
z7*!(C&}v!YRwrdn7(@~K&=3lyDeGID>_lI2W%O}a3M2NBAQarS&Y$nBaJ8>|FH&mc
zAtsW*OUHRRsP-*z{b}G!#n-~ph<*47wASy<<$1W~4D5stopwbLX?dT^U9PB={aI;f
zU)iyZBzlk7hmBAmf8~GdWarSnA{w(>k{!5?5SZJL7oHOsA5XB|n0o#_O@ZON!(G$c
z_c@7l&Qu94r#fGr{^b=G{v+V{V|K8S2J@!&ZKH<<_kyUA?<Ls?1LO7=mo~HgJpoOY
ziBQUCc`EPCB}-5Z+d5HVejE@8SL-`ll%brx#R(!EVX`)&Ca7J~q!%)m%tw27*K)ft
zh(@JsaiK~;Sj0kT!N7>skmnn!QI1>no+w{`6B+(zkXHWn;Sa~&!YPj*Y<8VY%mFrL
zBdzYk3#A&tM8<bszbGZtN?nMI|1MumRh4Rp5gEU$Jy|r`J7akIfw-c%c7~_5vt~Mp
zYpPbR;;3{~Oa6~-hTf{?B@R*2C#D}-8p8{N^DZuB1pOzBL!}E9mpnmCKdOhDnlEy6
zAl4iWnrAS`nrC~h5C{@HS;yt}(6f>a*WYoQ>PebkX>d++D%8oR8;4wGu4Z=juvts)
z)|Qn20L0$ZqI&(r45Qw(x@SU3*#zV5qN&*>BPT%d?RD)(dzS)4Np6!p@7@{mC_z>;
zgHV#bCJD+~c&nr+K$(>Z<gXB$TqT-LYvx7JL;7ZPm*!A3eN0o&rTZJ6K+jC?|3**_
zRWQ}O-9NJ-slJsSVc;<{U``t-RuLU^UW?qL4r0)uoEYe~q)=m^%>7EYv7ydpfb>jv
zN-oJAN7`m?#9(e{XHf`~SR4cYh)Nsxt+!{U-E3S76}L)#Xkzni9pUonXoxvu{XZK{
zy_?>DjA{pmDB*aKxNJQ73g*s1(oAEbdq3>*l;ZA7dNEwe3TRv65;a8wB+sucTX=U!
z$e+mzFy{CsKP4W#4D6)DQ79yZbE5l*{!aTNOz<_@GoFN)LDvPQEQMuKp^&wP<(o8k
ztlehH9ffMf+XF4Z>^4q{YePYL!}O)~v$>2=Wl8L3*AGa^jNjQzuYEE8%%wc#sF}*e
zB~_M>&2sVfv=7mn|Ng_M^1#qUH~*#8RFID#nP$_U`u)j4>@g~tkW8n`Y>PiRsj)-j
z@=oVMGckMw!S{&9)Y5rXvWlzLGXeY=#d2+qiu?9CicKeS4|!*CVu>&8t621yUk*`e
zWh`ah=Vrk3oB0ZhnL9b`l8#}%P8Bd(k}DlHkf7^7zM-8AQv2Xe9l$~qq4Pm^U5JZm
z5lIXux=7?yMFa;8u}tUTqux;NI?=Hee>a>oDF+csi{NF$&Y5qYmHW3V2AmTzB8A;h
zRE<L!R-(z6&WE8DrP_l_8Lv>p1b&vwGyO;wk_W`D2#LD{^%f+g1mOf#0xJyu*Da(5
zYPh#`$>_&^<9*$&edfJ^<1-J*F!_HI`PfNuOIQ7r`ciyGEGba>9y*R3ginmINY`NU
zVyF#ELUKKI+yojHKN5H(A%b#+d$fBZw($5QbmfD&0}`Vukfqheqh^5z@b<c7GBZED
zyCeJr=}inetMp<QgmiHG^`vesAu;c@dmET0(r#yeYYg=C4oEDdt{-+5mAqVr%7<^v
zpY(<Qxa93CcZ{7(j2UVr?}MZe$dh8Pc^+a1?a)2gKc31yF`y?B^Y+O^SvSIff~DpR
z^kWJ#1!T<@jx)B6X^a_oOdqpz4M^#l%GYOEGx==7y{hj2Hp8E<3UOsk+CS9za?WZi
z6D9YJB$z?~A}2o!gKK@;W8)rr>cul0XeU@?EOV+&YWPvsUYmrJ;eByeh@0RaO4FOs
z#P;O;2Ig4&?JprGpxUeIioZ<2ZHqYl(Tu0s$K)gm*OGW;-p@U3!WT|vrJg2igG%Fu
z3Z}_Gv82A>aAQVDjLxZ6{KGFRkeA__tLu(|M(6yrS0@Fr3ESjYNw=3WM23X*v)2M3
zY*2!GwOB$_Lf6fRF*<E?>;3|RE||z+R@Si&O;sgSoh%@kA+3bF1;nP&tkxn^%wH9I
z4I4@EfOw=!dKkuENpc|O@~eGWDaI*NH?ujv00nGboa2(Rxr@h>5~gm(I4SIdU)JY-
z+#r&bEJ0f%GKFixEwGL6&R>o+H@dCExD4vMl8@M;8%zbe!B>CVlS%ta@(S^(G`W7R
zWlo8}odBMZ3o2<~IseszK~UpyZ}0*4bCqCnJ^z0?OY)ag2p<KrurOOY7GkWZKe<sW
zU3_B-1|!~|M<jn^Upk0UA({{WG<jVN5F2k)V;BrCdI<EV(cea(lgYnF7f%b)X{>fE
z|A|o{>Egvb9!E<KQxfq^SL)P^SEq<vFK*FlHgM~=%OZH?_beS$ZZ(@wb&8C%v)f)U
z*EUYWX_bCOQT&vl;<CT+@DY6~O_@zyU9qasL#`J#?6`0fj0>RDzlg|e@pCmh9PJo+
zqnDn1M3rO-2z;(eoTF1SiJ&U+8g~Cs8vLKSo_0bY0!$0Fe<|vb(T|a-);^oFLzNT%
z`_KmQH}zVRU~g}NDv%=vwM}>R=_^`)07YI%$=j<EqV2n;onEeXrPqMh9&a1z)<CbT
zd3<q$et-HWFigkDEHY~o`jGqnB<5<ATg@K`a5?${{3)1ljah07_9aL!Dg+&zFFp={
zdAUAN<HN51{i$m3KVGATjjHj3rz5!bhNy@MJYGg{f1>LZs6#b2$7;8kn@(Ssf;sY&
zXKul+1olM<pBDB4ZwTV*lV;td0x{p{L{g)~zV8)3qEEp@Hos$_&a|ox(SZLvH1LCo
z6&5xx7Dl9pnp@2yRF$lDyR>Zt)NefT9c$Ld6v*S|dt<|!M0;)GJ9OO5MQsxM!QAN)
z{&Y_iIyrBwJLh|}`eL-I!SyQF>>@rS#97_R+$CKuHHT1Dl8zF2)>RR{th3cu`^fvu
zY~?5$vn@H5_5BUyu?ro0--#GGyBT8P%i5AxKq<xA4xTjJ`c+HRD&!5T(L?r%3u82(
z?U{W#kYCryCRYp7u_&||jtLdC5M|B`KG~&y2uVGU(#mQ{A9}FQAN`|5$)#onIDt*l
zqq+^=Smm;y#acdvX9Pspy_E`TJ>jmiC2JaC<ZAx?mW8e-AS8Ca)rh~xNk<}->;`ks
z@nL^YV|W71F=S%)Qv{cq9^eUW())vM2$o;Ngv*Vpx&Y6aGjX;ZYAX`8I+gDRxmaTU
zxx6#vO|aJ?WgPby-qO+~UvgYT<R*oB8NC{RqFExAh9;m{^0X{llPZ`K(EShFZS`e+
zF*1OlAl$MlfS?8^xkVWX5hHy!Lk!`_QaON4yGJc)zg+zSmVy|$n)^SdWr_MZte<uY
zB_fmK7|}YZtD%#UD##g;SpLP16&2-iP2r0~TW)!yz7&EsW-T3&`uVA^Oe2>#GejQ{
zmF&MM<xGW7VPel&pY{6L-2HTmAFi|Txnz4+6F?WJ8S}p81)FNadm{SR_6m&7ylkf$
zo}cshX0*_6jispiX;jVG0?HrE{S{Vn6z-A+KTbV^7P#tCLG5fGr&$G7Mmlnq!m61e
zHxqc%5R~HK_WLSLp)fn4T3!R!ab#IVf!;ddzY%gb*1`F+!94CO<+I4LRVe2ky#wQF
z=Ha@9vBV*tEi9#xXwF7Zn&-zRv4|$)vbvPbEs@c7zc4t^$jWvIg|Tc9Spw&=uWuB~
znah4*H7ii2HE~u6EAI=d?(Lkm1A0W}5;+Ck&4i1>G>YC+P8Wx2U`|c-qR0r$o@Iz`
zR_DeGv=)7_3+PC2&8IICeV`Abk|x5*osgf28kxh@eB&^FmGXkh(a=TI3_DvPmUn%o
z+cN5X$<!$K#8>jT_IJXV<qBfqQm`MsGJluZz%H3B{6Rrw9WEEBr`2QD$N$AzcAv6j
zR&>9nNS)fdCVV8*yUx6$5M8Z`yK*$i?q<T)@-2DYw$sWEX-KINoSR&TniH1=HetIX
z&zf4aqgoXVU%}vDGOk7s!cjV=>qqAL@ThC<+AoG?%Q6h{MYYnc<n~<IYI}(G!Xjy!
zv&r}Kw+EXg3zB{!dZIJgoSznkp1<{eWAkYUTPsybeBN&2bEMkK+nc4_Lzolf4?;h0
z*e|`<5pv<*MC}Slmb<bVyRv!@Nr}8|Z0DY|*%#QBqT#Sz7ZukR{fSqrCU6~^Ct5lf
z%WQ0l9F<@Y8yDNrv!C)ggF8K#o|d8EUnO^AN|)j`m5CjkPV$B^nnXrIY{!V^c@Y<U
zI!4Ks8M59LTL|3v;+j5MVoDc`g{@EssVQ*6N)F4yk1_TcE~_#_m`0TvNp7Tc2-TXT
zbqI|PHi;9yMBDMAbtrG^u;sRKrN*q=OZ}YD<sZt838BxF2fMFfs3T3zZv<+RgCaA8
zGF59Ct!|h6TT)32IV+TdWD>5IRmG8rx{&UUa8Y|}>%$%_cyuU;v-9sglG3g`62i^n
zU!oh6Ar}0dX$o)JqOBjl{?$m+S|On_Xz<!KUo2`#fk`M<u7;>3slt_)i!Z&!DGqgB
z+|e}CywVseW9fCVq<7>)<~rA8X6{dW+ara~Rey}H9}J9jZF%SR!zuUYG!hr&lCVm>
zx_Z+VU8)CMoxaX##4X6xmEQ7wd^^2f7k}qytZDdG4WKMOUh=p1YAw33Ip<YoSeJI&
z&?-m&tqY5CZuo0*()?GgrV6<}<GotroYLFrmAZJT-jHEqLwFWEi%;)Mrn`fNhKDJM
zwU)hg%ew<csHz$A+FFI$sA`EzJi>o}*oaVEsIo-=c@KBRHtA9t+s=2<kDFCzEEd^D
z@X70s1+UudU&r5ZtUNY-;cZtcQC^Jz>k!!$yB|00^tlF1s)j?D_>X|GeiH^1&IY2l
zTUK|54r$Rr`1Nku<Y^IU(`E++QrJPg8$M}WwV#daGfvWE+1});wh5-mEHERy;s0i3
zcf4j7CS6R*(@CvJ<tf)`tltDI5X&LjZbn~^?Q<n9{zQ^Q&GGJWP|FT$HJn|J56`Q}
z(qU^g-g{2=h>G6UYPdMe#j}Pr)F$3ywD6>&PEn9xPqbCZnT|27w2s*74Y8;Fi!2h1
z6sJ*Rl>NDuL9lT|QhoBB*j;&5`(`+oGmfmlM=`VNO*ZgfcPi-!3oP=%j=bML6mvCV
z(RdPa%f1O)V(mJGVQh*PkEas!2#1S?RJZB&Fiz4<p6UnDeHpi0%ooqjJfaYtt82NZ
zw8WC2OVG7R`|(ZOK0vr}%-WLP66*t9!UE~GT9)_#La>AH{kY{M-CVW;38$uVGC>bK
z^5&V5uAC*7I$eSz^R=g9?uMUm<3D#dAxkVyx&%g)KHNO<0ja1pi>=CC0jx$*?9?{R
zxO+t^42tUB3T15X{&(+o=lcj{X?3Z2GN^RqTA5if-NY?JQ_k23TA!UPKZBQhn5%y^
zB(y15F!)aGwUb~!Jz^58xl>9uoJ+cc!O`0Rkxyu$T$_Spyw2KePVJe>Xx1caJYTcn
z(9#{qsGY2kJDI4Sx{?hDwW|oLXd*57N956<il+px5U2Q_&e{iotmFg7R5TOtDa_Xw
zr+ehX!bfPO&buCnhB(!5u4G5jqrpfu7%gybaNp7gzC!8Xtu%^sBJE^)df0BcT!xNe
zM(&2_#Ql*-2)tIZrKv#xPzvkXUSs%N`I(|A@Dz541wR5j`Ku^ED*z<y4A%Mb;qX;)
z0$j-$Hg}OBLnQiea79ys_g7u19ePPb!0YfF-F7{ohfxx=>SB=L>{<1&hQPtBz?^*r
z=-Ib9)E|J^Xe(%5`k4Ly^K_cow@wf|(6Fq_4fqn^+I~9c@;{~Rzd8FTp|hNqzd0#~
zg`-!{_U|;r!$9K<I4iA{p@&BaoDnZT|32@H@IW5eS#)%JL2$%`XD;}?LgDu3RiLhB
z{GX@dbtIKUpe_S#X>CO4j*AaD|AW_G!fNmwax0eihDA6fIK6{dGNttuCy1qAnxvOM
zgwei2Q5vK{`G7PW0=56DyOtFa8a?s*id3WU)(+8!2i=r`ycjqs*w*?%jtq?2ca2nE
z7)Y-9fMvozk^yjL<@MAAAq1CbGN&AH*2NCdt9A4pgyjzRww(lIr8@UwJ^%x7$6uZv
zcu=0q;It4Hvg0IzI)Y+Ym<51{WHPfTsIVHyhN<O<CFp>c=TS8QlnqHS2k#NtK$H9~
zKeGiwiIJ9ZJ%(Y3;{fkU79yYO4BeL)gXjw7;E}DjTomZ@tAA!wb<i`_#HKlj;5Q9l
zmPiS9@Z&uaP8s}POw;9aAFm*0Wtjv_IznT*#~X1X%N+zQ&s6q?P-;KroU#P~v0XuP
zl3^CWhGOqK@b3h=_$MdsK7joSu|~7fODLwVR%WK(LeFTsY<qx2;_e{s_pF2cUrbx-
zdZ{2?rCe9nIFP3cDBdZLCFAdxnLH2S(BNvLjbn(zW+`iw?M%*qn2$Yt6_#-?EQlt0
zkkaWylr^W1)bD?H%J&EiNuFFKlnZX8jSu*|cfo!{N7jW$#sxnxV&QC%YfTu)(?Di_
zMsvrH{WDxx2f<rz^ohFX>^CSd+!+7zIDi0~`I3_%+7A2P<AXj5s=9Gc%+aZWWh+=U
zn(=4K7`kGo$&q2=6b7Q*N`EG!Lc*FOwlt91*)wi>TF@=Qll$oRgquLgzG#4>&kjkE
z4h0kxvhU9QVS^<57rZKPApj~;Z2$luQxvXksz@LM4X!d~aA*IpKHX?<8_jco8VP%|
zyZoRWXy#J61y>}5$M-L7tr*ZX3DcLK=b!_r9r}t(T24<~4MsCH@-cHDu)3uQKU7YD
zuu(T<ydMp-xBy_t>T09|s(1uMHoamVb+b&&4e_nlA^iskI*XY@+ea$o1J$cC+I;Ay
z9#7mKM!@q)u3vwT?Od(_2xC8(+&xkXlcuw-k31eXZsliV`=ASBgPTiLkn&m1Q-vk1
zAXkHv=}sWQ0UWdHRHM=8`XIlgujzRo<uXL(FHImLHYJt~<~=i@@bum~dSU_aWvQ81
zaKk~}M2q@RpdUC~=(u*wnQ}pxHz+*UPCR?)np6~I4*7UGp6w1HDHttsf(D_R<$Ov1
zsNIjKp+(K%6NDw-#N=!jWQQ<(7h^SKudw#-ni_~wB1KyQGitI`aU=r{x`xci<y;bS
zw$f-@HUPTh>}#Xn|1^``?_Ov<M)NYJxZ*K5A$t=4Mcd9>UYHs>zH(AYKgbEw7{L2W
z*zS@MN|1jJu7!`(j*|PVEhMLKIDsSqP(m5#-_ZrHXvo|Uo3<K%p51k;Xwo4zz*(Je
zKIVE>9nL7u(kSFii(VT;2SgqGrW*zd9E>8&C37x2U|WDkXoiH`Bhodt0xggJlN>Z&
zr$Fwo^DmNYe(_r&Rv@0&PXkyAoUWupscp%hp@5`+k>eYN?k?vi?p6_oviO(1ZI~70
zx8QwNuL)#1#`hY!|B5WL_nP|=Q)X%!6K+ftn_X5aKYOy9m=;Z(K(o~+P(FGs{WxL~
zL41s1)k4AfbK=Lc|N7F=v@vU-^RWmqWPQ^%W#DV<{2+q}wr=<l3~?|6c#pn&<NlZY
z%GkVDkB#LgW<4~>j!Imj{|JiLfE{9ip>?DhsXrVn+X@PfUO>`i1r3Yuk_;JYcOPeS
zwxO1GBTr-Memn&VwvQZeet`xBkxw<{P%^Ss9MA^o9LlZ;gES?d9<;yK_x(@1x_*Q#
zq_j}r=E4CQ5z^dSY{dPLZ|!;~{QsR#S^af})yZUne$eiI(@Y2@IQz2KG^8j<KtFC1
zCIlPYGxq+5G(tUr@4$m;=z>qp1Q@L1L>45#2;lbPwd>x)`d{q{?r4rOEjUBwrOaO5
z89@4J&&^){Prt$50jK6$)H(`ab{uWZ#WSIhmG*-(oR8`C7O?XGzWU|e)wH-+hyi^u
zYds=SQ_rgwl(w@s>3p1cad3aDy^69R)3AR?hXLb?)(-LF?K@zBfKnp%#G_04QS-A4
zW5}<z0pb4&fy}#}Zzx$x6NC_B*r~so-Va-|AAiwbytB~?5{}MrPcnrGf)vCw7CeqT
zH)jvyBwbX%+9NbRfq0@AX#8azUGqPV^>V5_wnU7_=60q(1ML!IjcfSCP=k({CkA$j
z$AsOUYR7`COX;`K#xTp?2c{jya1nH2<zSf}FZ8gvLO&50qrkrB<KX`UOpUC8GYZY5
zEDg}`e$K^rL!5#Dt<z47$9MnwzW^lSR@6f?PY3hc<M2BxpYs1N`TXM)HQR`1pyX?{
zio*t=Q@2B$UdH#pghmU$>n$~;ovnGv<Vs115nLE#^`jW0A#cAKs|Z1lf4)A=2ghwY
zabd$MFm9p7D_C^!vDypn5w`?uAzEmUh{i7Lcx(gG!qmU3tyRsz$gbEYr)s{1ucSa}
z>|iwy=SP7CJ5r2_>D((Q<^4wEbBLj6IQ($pe%v+Wylvh*rpTb9^y9Rb)LxE;8eqVn
zFfZbJ=oZN`YHtY4UrN;}kDgC1?QCfhLiX@)l=hwZ1u~%E*V4dP#yZW*44(ZYg5vg+
z^|1YM+!rhAg<;S`ow0E0vR@DCDt0C!c1f(*-^;)<j>b-#G=oM4%#`lqyd^{It<~^K
zeC%YT>0kc5W`wR?{HP!MUjV+Iu$s<m2SeQhhwF!#hi3)@%A7y1-Hm%=C)CBV)DNRO
z9{c#w9pQUV>ql(wW53Zqa)W+>6+Ax;PFKXk4=kpT6=-Pm@2N$h4zuTICHy$df04&S
zlhBeu@fQEThPcbAnFRDOn?2U2=MHnY0(_67Vnf)J;_*~(^ML;22zxyykzbntW$lV?
ztAjc?3|i+^z7TFoy=#GsvK?XSgxc}G&vS$SZ9PZc4BU^*pBFk8tdGN`V8Qsm!SAKh
z5@hia8(L}TJZ+;<APEgM)?kZuYj8m8(QvR7GDF;ctA{X)7-o>Wq)e(?hX!!7mXJ7e
zo&R4L!o8|^A8plY#QU!WrpgHjLrw`E>n)_Vbp}9iyP&@};)#7+5k8mbrd}-OK^q1S
zoT~>kAYf>}elP?u4w%<l=20JlJgZCcSb5xnq(3IHwcg4?2$y`lPI!d9wj}R0b5{<u
z1|01+r~Pjj8(5DVzW)OI3*1NiN=9Sv9z$!e-SgifFl$#7KnnRYGB14`0VR!_hkz7#
z?c|=ffKU44l7hplZhY;b4`T2$jPtwk{D)}Bn`&S|dR!W;PCeMXt7uel9AI1xez@TL
zw+5+)5VV3Q)HdFj40AvktWZ25{1^y@FU@7h#NfI$*)s#j4+mlB$8)|f2*z0V0#9uw
z8M3LRO~sKMiUyu{(c6jgJ}4V7a^`*fq30ViUQ3V5p}AS)e@WnmudF-(;m5bc*Z(->
z#o=Sj{s+I{VS0!{8}^GOe<SC#`p2EGs5X!k^v6;=Pc_aGf@>u|3w`1e9Rg8s0p;fO
z(O(?nh#}A~XYuLl0o_NxjGHL`YeHiv1q6><9fR2E6u3IZ!r4Bnc<jDHf1`fd9%lfS
z;}Fpq+qJ)$@OMj9lIjjOekLphD{s#9yQN$L1=9_EpmTUHDIq^-88!ceutz#KbQ+Vv
zzErg6mRBj>tXA4QSC$HYk<aJ*Mob6OIN{U2i@}$hI9!DyF`>q?Qw<k5T>E5P)61lb
zBd{Sz0mgqs+(l4`E-;85sEV~UR_wBT*d_3|ZXZ0@&%YKwP(Hq{(PJ4VExwkj+EgsR
zQ>V4Tn0SF&{>xJVetTr&X)6DS=&mn^8m2s3?UaxE`dz)%XT-Bw)uFLBruu!6^ismW
zA6w9rd;6WJlxI$u@CiI_C>s+)%+Fxb^rARY97fr(Y2t%kZXBM>e?xJXu*HZi{fByn
zJMrD2$DoIHB3%4I_K(1O0jAI{_V6P*W6z%#%Y*y<HB3=0ty9VcS@`WW2%aS3dU=Fb
z%&MRB7K>hfUch#yO6JG$<hzWa{@{Q4(R)uMXAq-E1Gge6%oMXs?qjgRK>GjZ_u6Fs
zr%E53v;%+jI8VPMdFt=MRmFi+F=Trwf%6pl#g;_c(EH_>D!-_|F0&54RtruOqHw_j
zFTma+8u0{9=u-1FXa1mXB~ysVScdB^MvoJ?!hm<FwKJa#?%c^~UmzDQBzVyi@v5@q
zQ>X5i48eczkDOvLX0B30&=n2TQHs6t2quUaiug7z$zG`Nzl}l^GEjduq*lil%!JfJ
zOhF=t<#9reyl-hZv90O9LxPlvhH+?H8@eilF{>(kEWMyFWLt?xf^RFeD#duy;}r_q
ztYywc&VuF?68yyoubk021=r9(9kuOBr<IITvw{9orog4lKhVTie`hndvznO}vAXhV
zcMbG{{B=2)M!vdWx_k-#;t&hZN!%a9RhdqFyKVjSx5a8c5zmwtK?mf?ulPhpA=^4T
z<>#l<0)*Wmbd@E+DbDa2g09+thQU5;Pq!BcE>o}icsVc~x&T9V6srtjAQVf(Y#Bc-
z+F!9MEPfU~>%Su5LxOFVK5{H&!@JN!$IT=2xw_SdB#Er;<F>E}#(GFtq=gjhsYW)j
zrpYQxg8EKjYXWU+?UayvKK<V9hm`-Rr~L`jHr*xm+Uee*1eLY3y_{fvhU+(p)0g0Q
zqobXjzr&E+kmEwV-=gViKGrAhpDQ4So!7Dhh=zyfc8bWm6a3zf!85v_5X-{#Y@iE%
z%^SdbOop`2kbM}p>EycVKiJ1c!k|H~(s=HF5cYf;^jvXpMZA)iDIKe;%0-^`nBw_<
zvEfEzYI1|B@F$Vy67}^*n<7}VQ^LuORSvVdIC9~Jy_M}FEl6<9mW9eI!l>ogajUU`
zSq|Ctx1n&&9&|HH#?Sh8`|bKyGnB@Iq3}hheX?CsqsK>ky_k`*he(>!UXFth9+AGS
z!3^*w!zjg1AhrK0zMU*G&~}l362G$L+k(`t#L1#^smTMTgilpdL18{apSO>*f;Z*b
zP$((tGWY5B*L~Mgrg}=(XE|usZ)jZb`Wa-N+qU*0u&jYR<*DvX$UHl%0`I}bVm6`x
zb4}(f3VGO$a*F7;i<SOX!KPeK4fT0$c?H(mPo&KH(^!d0n7hbBXny}FUlqffRTatO
zL1))tWa%PDv^oCcdG!L(<s75_Vj8}m7%zIz@Mcm9-W|-Fm0ySKzso-gQk!vg|01(~
z1<)F~fXC$wZJXN~QGmz81k*c2P?TwAwB&2*kcx+&hv3b-O6O{R_{0g8i&Ga&BbV9-
zz-w6%d6IQVz4q7OcJHVL`jD{Bi+1nwhN2KN+gb~?M8B!D)!43`m_zd<JVP`fEdTU+
z--T*#0_rOZ6k|f5s=})>Df2Tv2Y7ZS))iY2K09_Re|7trac#p52gCF7pt3qLT0(AW
zZS%AI>C^X24cV&B``f}U$_Fsjre|1-9ZFZ82V(K-WeP+>4M4wH_0!+OZZUe5vYY31
zKVIS{Dy$+YW*GOF;eGq{!8z^)q+Efs2-RyWB;JUQ6(7axI3nJ1c3st%qYruHRj8rh
zuWmg^YUiKJpoHyIs$p#BBxBUx5g8Jby1MR}n7VGy0(s8r5S`PMY6~&>;tvM%Otpa4
z22?#{T!)W&?rLEiK!&eMCCfP7WC&rW7{&@8^W^Sav~>}{CoM~#ao~<DtlCYP;&o%h
z@g|s6J=uCyxj3<Xu7DVgoot8^7&DQo3mGu$=0ZEdk7}0)h-SHON!G~20iq?J)T3?8
z`Cs~(n&NFJ>?Xb&c^<}##`IO5TeNjsOBEl1+so~bb_A5@1+Fa=Txu$xgr2`-QDGf~
zigxs{;Nz;67(T-5r}|dck8&bt!>NN+0c_8WxGHm|h@pltd7U0}fI^(Dw}`+Re9tLA
z;oV64ldQ7z>1B;Om)iSJLdXJer(ai~qUhqpHfm6n0eEsh17Y1Up1LH)UhkQcMq_^l
z&|^7V?14JLE2pLLPMs2pF0xO7UAz*Hwe7h3mxhQD<XyVb$gYC-b?UgA{^FNQPY@m@
z?-Fe0vR8W6qu0H(tpS6NKrhLfz|aMGve7O}zF17!MFu~kQ~eC+e6^VS*MtEIRBw=0
zMKw~CXs~5W*=p5_T;)q$m9ob^3$v|v*Mumx9S)rKTMA9w2Z_@4<L6E@d}FIh2vxni
z=NE;&)JPSkr0!M<rh(Isy+<cn4MkMlVxtX;H0-2YRvdoz_sKIv8h9!;S}Yh$9$UAu
z-~feC{Sb;iM4Qx?!n;T6z^}?FAaRo)ai028Y44X$uKzFEcm+aP44y^}Mn$Pwp1b`h
z(K?HN{t?=QC6Xq|md-<7viN!Lgc#oh#;S>RhbMk^OYNOidK+V`ZC3GRGS%eIRwW0y
z_-ngov}gHe9m8&D#G7nl-*i4GF4QUMwAOt`AV#*l1D4K}!OXW#bcGz2j6J{EwA043
zv!=7lum(7LaSKEYM;UsGPP)ARC~#Fu+jE=SQuAO%mnx-`zOH>vj7+OWkCrb=JQ^U3
zl*}59Hl3L*(qY@ig+F`9MvUxo+Ve-I%XU25fKxx6km~>jV&!2fXHI}DoyJ$&#1Jd$
zUPkGUg2Fb6XQyD?vQr!*wb9urOO?+cws?R=gE*g?eMj)dWr4G|K)ZR_7tYg~vn1zm
zyD+7P=0PNXW4!E%7h@QbGJN7Uzl1RVAaR_3bE@_48w!=6AA4|a@aZj}lD(|n)|xB!
z2t;k8O7J`#)wv1G;Y>WX(h?F!P}Z6ctt2+E$T81we?tDe{mbvhk`%<sKp06r6DPvh
zr(^*z8ZDH*6nO|trN6Ba+_Dxf5|!Yr;jA05u0MkW)q}AU>vTFoA&h7?!V`I8KfKhX
zHgV<&`~}w{eL9czT=)8cOKaPxn%w%`8mkXx)}bo9eV>q`?&YPD5^7IIFN?=Mx14i1
z#l*)I9K85!7tHXvC6yd&Lv6=o4F4-#bW)-3D0?t0dai)#&@*B~_ku|^9a)E29+U=Q
zwAD;GPlYAea^es>Wgq870~qyga-A4lLu}@ic}JxBuelElC=F;toi-0|LVgwxlXVB|
z$#?73FuYmm&~+Lpk5f&BLAU+OEl&9DJsTX!;=2NbrCRXe@8-M?(-M%i(fHFd_9s5m
z`)%v)-wi#djN{yJ%?)9CLNRea@n?I^z4mX3|D^ltE@Is{%R{W+S8SUvA*py$lGzxi
zpY1FMU1JiM(8Jbdt39f3jtDOHzBcEwVmu!Va4&Cqk@El*vpvKqd=^aO+=1|m3kW*P
z?-zIQic%b!r#3}Lbktdhhvg~s|Ct>+tMIlXRjJ{4zCjydv9p1TAN$ZxUEF_mC?SHu
zGw%IVT`X7P4Pvk!ZB?m!+l>FxeaxL{U=?g??>Oh>gU;)Jd&p@emIKuhHt*iX{=n+f
z4HI8-%yxIZmVea}5<-VpuP>&*F7%3Naaa^9lC*oyQfF^7N}k}Rcf)ri#Jt^{^5A#@
zm&ob>;7!5T0&ffAy&7!T!{3x)#j|T|JC-t5oco*n4+9m?CUk2{certS`Cs=7wzEk_
zy&yPo;^c@h^R`vua$GKcd$$Jb+^bC2mNCDv-qfp_vDWj<!$9fr3tDzktkMoY#a_=~
zW7+a^<UZP{lQP%nH4%1$@Aeh<S*t`=B+>E&!ElV}n?kP)5{@srL$6~A-#J}-uEzKF
zdTuLUf$HBoH*kD$EbBQATkjkSi*b8_hUd%|hn{!UOVOaW{;ylH#rf4py~b)3LgZT<
z>*eJD$FjcHnfb#r!z*H329vLig#W@X?ukarlSC!O?6t?ZweJ}BWRnP`Tgd{v6T%0+
z4N$J?Na*VyojuiPc_LRi?AAUIquhk93Zir?U4X~x{e^T5lv}Ot-e%kAMX&F%_mJPv
z;1`7xCp;~0%U|$&UfjsdZxPg1AyiLI{L`SFF83;s_jkke9?@6!-psU?NOS-p@xm|a
zM15&r*W-H^V`$M&LD=auY;Z<6Q@hTE0f<O~wa2~kxR(I+UH7LqiRo5Rfcn10y`U2c
zqF1{+wKRQ9<>%6Uv}iwae`_6+6TF(A%{ITqbEprQ82>kZ?deYP6iyufnVdeNeOWRO
zzs2N{l}Z?-Iwpgg*Riw_;9<4=>PkceW0P>y?Y_uxI^;HcB$+GnK=>C3d6w#6c$hl3
z+IEOC(fLclf2W{gq+1LbM?EyvU4R+B=g&T4?UoDkoslOWb|jv<QcECxEk%Ma$9+GP
z8xa1tc5#Y76MknmXe<%7b$ayz9nbrApDo<19=_5;ApK-^d7EOy1qFCpBNuI(Tfkx|
zF^J)+i$1zngmb(_DuNSm%8ryh(X0=?G7Y$yOW>4cBnc9au4F0NVGwo~DE((ekW+%Q
zbyxVgb(pnjn?b?Zm#b%N()i8qc<h!{KShai<qjVm#@jCXm_zhW-;O9rUR_sO+1HTv
zSw7eeuG@(YIJ6)kM)HKa91CiWbl-GrDt^_Y8%lK(XmVmyW#Zi~ey~F}Q7bPYcE`lP
z3&yaQuviidVSLg}AM3ovmFD`(z7I~EG(;5*cykagRGFkpqV}#g!tP1YdaUGNErnqE
zN#)Il1rMKYKx&=Rr+ig|m`u+7cEMpC7b+pN?V7RlGLb~sH7tq1zn&K5n@8e6F6mNB
z>|Bue6~lMaqkZ*h+<BYdP6%Xt!(DD;f0=_I0EVaCgE^3PJ7~Z5hZeZi&_mCWe<e{!
zLzjx=f936{4FHsLy)tkkfs`}jY|eF5r2#xV&fSJkTmYL8iMQxMx<3E-zw5A22+eMW
z98$_?jSK*94&sI?6LH)U0&fliVJv*1H6N{==g-v>_iIH?2Fmpwx!U}zaEikD_T}SF
z%BVi{t#L1J>}ep~jZ@BE|9*i}{0bwN9gX9wnCnF_2M|c}Kc3B~^}DdIrHxzGzj5;+
zAw;sFA!Xb+meK)&KKygu>0oyDwvQLAHLAS`RU~pI*km4xuxl?|uj28QipG9wgw+@R
zI<6jQ2U+#*=eqC<q>)48NW1vRATj9neU)W<DI`>$U`Rf3b+MW4*n)EZpqh6Pz>p60
zq2jOrYHk=Gn-+tOgZ=RGUi(h(P<w>}{epqy8u#J?x4!52*o=R6L4Q$A!uVlHD;gWd
z2rI;K<S#YU07ai`zdsG<(19ltw|_e9EpiIWzXez)g5ydV<+$mKw^^l<KAA##>^IhT
zd-YO5FKOfEmxGn4Zi2eS6@Q)1@|DTczVL@v;l@9Eq^F>sw)pRRe}q+{FJ8~8V@+TX
z7!nC3$(C^AV1Q+xZ}KMtGEXZbCDhhFW=oaw-?!I>-ri1x0{ielaqn`iQbc3l877Ed
zNtN+D_5i{k_q_F%_phXlS2n(*LMY#c({^1vUH{I0FmwLtFH*0C&9_POH(#u#d;q<g
zqGwPlNaP&iq+!1|=mD5<`*a1G?LlDq6>e7FzO1*rv(uwzxi-W`4}h8M0p4W--W)vZ
zqKiUMohe-b`}k_>(c9l>@`BDjczI){lO|25nRW<)TKK|o<alCif!Wh^-^Vbc?jL##
z3B=qI)c)H-P17nDEFVz5#ai>O#5T$@VQoYzT45`tYDjk%`}nd__<NSV&yK@1DiV(O
zXO(<FjJ8uhBy!jaihZp^dS3L-QJ7b-b0kxs={2~8>iLpP`$1c%`mRe!PdbKD2yQ`r
z$uLNK(0_|!Bqv!W((H{O{P4b0Ln__Jjcg4|Ni5)Apwrmt`nE)Eh@Gn2H>6)$UZ*Z`
zQSkdl2ahjC5h^D;-p@n}E}fj`>N_UAW)9{OQkVNIRdKhSW3sXlV{eQF+6{UcCn8mZ
z%+JiaweqMUO{{*#XJwg=ejXT|zNcE}q}?33#cNf}5RNH*&@~Nee;xVjPpEm41r0mW
zi(lC<fCaCXJp+}lE%j^mlm*uHp(aC;^w~6$RDy<-D8ZXX(~^k^%DOvV%y^n?BX~+0
z+*;wH1oQ6CT)}E&ks&#=vwO#WO!RA6bPRI%XH+ubPo<H^sNlrH-Xk}P=K5lCV5)xG
zcTH3H<4=)@S*BK+R49oau5Hk@p;wMd61R|xcuydCDr8|ugP@cu%77N}3`KeH3|}x8
zS3O8njBWlPbuV}y^&~cOYyNY~UW{TK+3440lULVd-S$I1PBo@PyV>F@zx~$Z!X|jd
zv5RP5CyE_@NUV_{Ws)wRU~=j08<gl)n}E{|=`ZzSvF2bdTz8xv4C!bK>-a98Z!uWW
zw(QsQwf=rGmQ!*Djlr-6GcI-mr{{W(sZ-a??B$P_qA4`qXo7?2R5^;ZW-hni6yidW
zTMu=Dw-mhR4LH9ldOVL&6c4L)h!VyT%fxGlazFXkT_S-lHO(-fPRx<k%q4xsa+&yt
z_$NtujQ?929-enktd%E=1eni0B9p)BDInL!Wa<gfdPYZwfbdq+f*uFwOaoZjY2zuB
zD8q33FrQiobo}icOVLe6-lu`-&PzIwl=sWYHlr!}jv#h<+qoBV`p<<Hf2r~Bj8@tw
zT)gLqDg5@*VfP=H@K_UXDb8o=8aFQcIL6->ShRfUXef|!>jFMpdN08?WpAaVs*8v}
zpmN!8(rAu$A2n?Kf*yO&?ez=t=>gNVHq1OF9QkUxhZY0N2;wlRh`S$CmNKI`E14Ze
zhQ<-s=ret6-ecME7VMwx?h>?wtLI(2M&Fg$Mw4ltYhCjU(A76dNOocuOCr#dP)Ev_
zj7~7OD+s9486xN3r+<L?<N*_b+50hUT?ysYq?KyIs~)YUvbrb6=m^Sd5i>L>uh1r6
zwLX8<_{PwQAWTad<6B(&ozYNXPM}0Q?%$WKgBk2>U!%@ekige+ld8r{%?=~PN)?Ys
zsy_r%cZVci&i(tTX*jpqWqHlO#lpz+g1@v*2o6E3h#AFVoTk)xjg+`-66cG?%zk+z
zz<gUJuJ7eBD{WI1#!)}kU+naqIw<khPfDh3Vhrb%TE}eC#2<4MyuGpm+qXRPu)R%+
z`SY(BYkTrHtSUU3JHT^Olqz<kAW{3e>WrVU)^ycJ$PrGBeB!rMl#iIXk3OAiaC=;w
zz~R66o1qrMs&S;TCSnE?_7{#c)|Ky#R~cnEYOGZYDUj?VwHU}r4>oLnoc0vFndv8d
zDFugsw8KmhEHYdu!Wh4UJFtOTx%m4d>fCgtozQ1uS1GU3v4d}4?s0p5_?}*(!uiLm
z;E;zY?rKocoek=X3B~G4cYix%)8ZSfdbT#4!;fk%81w>%;`QQiQUVJNQ-tjJ;!yl&
z71{z{8iD7yQ_t%7pVM)5Q*UZ%lfpHdztNV!M=Yu4;>f1XD7kmONcP-o{eVte(Ii#=
zJx#lftT<j02Y4Z_LMa0+vnN+dNC583*avfyhu^A7(m7L9Nt`m*Dww{O(g%cbYGGN8
zFI0aTF!|<JnG2Uh&G3G08+ceKuIk{MBgMI#eJ4OVu#z`E;XA%48^c*+#gI5Kc}*5y
zW1Pv;N6O7|*A%%JDj@2!JQz<!$V{8Sq|iGU2v7yi%RF84B2&?3<3iu5l=8==hWB%~
z!pyn%=WsJ<2fW%iW`2y_*oxH-ryrJJH`z7blOxYyP_1rB?Y_%yIYn^&T!y~sfX*iU
zE;^2YLXCDb#c6k&?hm^0C+>(-{RPcBc5L;WA*0oA?PfS)T0KQ(nn6eQSKIgNyiS_4
z(K0rh5ueO7_gB_WtV|L=f~=vc6{J%pihm7USVylPh*J#>d09?b2!GeHn^lFx$n1Q<
z_|U{;-Iup{laOkrNwl)gc0Zqj2%S`$VICc>=IZRr`)I%F1xod-``_5qFv%U+Tlk(x
zN;NUztYMmOb;|c{Vop%r@ooR`UVO8*DtsdP*K*G;?M)v0&>niDFr#w*L!Z8@{3&0u
zm(1UHxlab%R)5QRTM+mfneh}ygoXaI%3ja@J-LzQ+Hd|j+uO!tNw^lR=0#rbQOt5|
zY2!Z8$YOnj>{n8m9`J?msImTT%Za%r3F-RrIUEiuU-Vp@x(qX_zI0zTTP?9~(mCH7
z0whA&$~9*iC+To-j&~Fg>I*r;34*VwNXQ2(M`d3YDKahMON6ksN_~w2-Zw2cLQ*tq
zjae3o681)j!Jt0QHF?GnPKh<RaTTsQNhha3C$lUkoiA?xN%-o+MX3z%mT8v4)(CO+
zR|0BYtic>{<7ma)2ElCW%*JDUj&Me-!Hd|8k41_Og4v}Ol{*L=;e=R&*E5WV%DEfg
z_)m+iw}$uR2R>2hV3x;z8`aF~rONC<7gLcceux)!u+!Oj%gCuRCWOS^7_4?smJ^8A
z<m8-?xKJ8kX;!zNhb+aO{n?C(Uvhe;Znj|lCD&(@)*9m$-jRjkm#Dqr`1mpv<F6UY
zZVqP$opAm(){Sb{-+3l~e*g8fIi$QBg<~<)sK}h5?P-S@j_V(1S>I$*58FSaxqsuu
z`IFyi@X(*;Bjgx;&`yp1Hf;Cdr^)J*1@Zh0bwnSKCMl14?->$ZZ4A&n0PUS4K}Vlb
z%Ai%3NPm6w1mBUy<$Q91mnMPxWwS>(Sq|@;4>{BE<|Y0Equ*xNT*pL`rergdFPfZe
z)(NCwb+q}lpNzn*=$IkLjU;$_=q>12>gRoM_?&t&g?O#a?Or)>aC1>muEniiIZ!@d
z(K0wlA7CDky36q<*vdC?%uV$uot<;p#sS_fB8#-Z!so|_VM*O2e&#D(FZt?88|^&T
zj0JY`3d`byY|U|&&-hH(w>PDljKGx4JM6}^r;2}fjr-0%e~97a(?PuQp#@L<&qzm0
zDYpdvv~W8Iyxi-h*`}M!1f4Rri*1y&85~<P8+x8k?2TvPdk)5XRmE~9JuEaVW8c4b
zSepWWdn@=V)!W~_ikZmXdZC0VcJXodUaK(&r-fRxtclO<t70Z5J@en*Ty_%Pd(F2m
z*Kz6ywNo2;l6`P{hGpR^WN}Z4uruT-FU4kA;wDh4kFryr-T2BhhT^H3JiqGT`jx#J
z&U^?f)vJa`>?L_hNNhq=Q}QfNm{Go>f^!k>%8Gygywp6y9)7tgHd(qn!zC-NloDRq
zYp3D)fT*s?M{xwh&pWS#1=7<NJx5A3Y8y5iVPzz#=62;!vKw0VlkUll8Yx=6*w&}p
z22g!y3e@YW^^oOkrR{T5l}o=4;T*<cmk{@9z}L^1*BD{jN7kxO_{amF*`6*4)K$wB
zt9iCKdjx+tZ@4Qi0f|;$)}mODu)+Lg0$Y7+xhlG(Hf>SX>PrEBP>bNHqwNoV`0H^r
zG=m9!`0Haxy9GVVJoR>khd#u0uyp1GKE$;_O-E8B1CLFoGZjkeSNP8C2}i?AIS03b
zUj<vWA2eyIy?ZEAZz=8Iv_;FS00_@M>_!{lqvUOtQ~5(WWAO9jJ^gb6kfj;p_54{S
z_~o*ITD@C1U<DseI(?fdNA>L>+unrC%j$iNPA<T<V%~&=NYKc%Y1%w0@M+1vsylD!
z)8OnIIX&o0V&YWFV;aCeL&AG`PWIe1p}U9OjpIMeTe2T(Hh#Zt5S6aEdCF}=e{H&S
zozwP;?WaLmp~ZQdef+@ky93$q<kQTCe=a^Hj2ZnQ5}Bhhc*~`O|C|wiKgBrx9^LdK
zIjv8)0=}DX1YK`gd_=_CDLSn{Y6)ep$el^2i_T)pfaSA7TBB>?W!I+Yn&@2W#u9OB
zI7xniN{8E<B#H#l()%%`m)|Ceyn4Qc$vE7^^P;lvG}R`KxoccR`d}n&^VZE1tEux3
zwdkU7Glq1OE2?)3sM22#W9KCfCA^@z$>Zd`bma3&^$PLuoYctuID3BiF}#*Xm@?js
zFKTW_AhR&*vqKQN@e}x$MRP27W^8^rJ_?FLvdQMOul=g+2H;;zX8n<3rOOJ^VCN`3
zh`fBBWx&pHaurYk5iYv|um}pT(vX`~ZYkjth;d}Y;80qPp1|i89R#+LyzvVdQ`yF<
z=LLn&vmJjuL8g0wBkTP_4gcp8WN~Fyv9_mhba=9@nuNcSVXz|e(MUtJBw$Qq#FP<R
zI@MnR$0vV~++9G#@zQ)5cu(S%?lmra0vwL)9S_ldKX^~hjutnbV2Al2{YMdW&>pRq
z<qSeFo1tRL5BrfvfOok?rraXlpp0c)sWJ&DGykvkiWixVmMLw%snnYRw4+Q*aUBLC
zth67vL1N0hiIx*S;SG+gs%B+RFleLjRtC#3sI^vr=-3Rrx=-YTGWDpn2K#x-nNhJ}
zFBb5yLP<>#wLc%w<H70na%!>%Wa_?rdzs}o7%iquJX&@Dnf^DN)uIQyt?YW#0=kwK
z_drV=W-~xcd0+&s%n(!{!mKu801~-hIY&N##7o_9*Bn2Go}41eJ>*)*3Sh^P!3P}N
z{jNKg2?ABie_8bexsXVMz1CthwHjhEQ&6XXPPjBKmk)qypE<$~Dhf6lj;SoWwo!xU
zr5Ct9z5oHD*xDQ(g-o-WN)dxed>N5H|E}mqEO?$kfRQ5_B+}%IxKcsFfs|P-19p%&
zBHv+)RU-~$d9?(70YjI7tC&v$q8at~yAc|^3JX)3G*+oT<ZZl~jXq?^1ke6*JE%=P
z{)8pZZ!k(sIhkZLy$@t<TXD%kZf}JB_zVU5zHf&OOToR;e9*n8TN+9)W7Bk2P|33e
zbQUPPUT#k_io$IAiz%-!s}Bu<7rj}kV;%tsWkL?--Y3XA*7@(R$dKvenbLOc^R!Gs
zw|6<d=`n-E=OoK{KhTd0FBaEC*g=$te3v>p`%I8k$HL+j4iazkw|F5(-e7)^rpr1p
z8k<ZnM%e@{;;6dbxqyhx)oxpmP+dLP5W!Nosx)UPJemCsv0BI193jGee?J~1oO}O1
zQ9U{9%_%zNl~X`{1LjZ@kxR6t;M-uJ9yn%7RFrX*0Y^uC=<(!XHUq_!-|Xf^L-|4f
zW(my%%#UyC^2T5=EwxkkG69Xp!($bTtPs9?<rxl8h01oZG`t2YwDRFk9F_unrFpT}
zZJZEf%$tiX6%d2sG%pKS5Y?V~=9yI3Vlo`r^9MbS1kiN^))Gdjv{uW$(1FSZ9SszV
zt*C<m_h#~7RdDUzXB)6@;_L`Hmvw{bKZn??q}%=)@Iqx&>@ZD9@XBZ`;oH^BTTtax
z(Pk?FM4S)RV1T+kj{i<EAQyH5b@hEDml}L_o;?*q{5;Fg!;b0hJCtJ{yqDh?M$fu(
zigsk#iiOocV9x)%kX6mJKn8HY>%;pW(|v<qW~w_I2}ibZC`P%q`4wPB!d}~*N|X?2
zX5xr3p(+YCcs#LfJZbm(ivW&nBH?)AZcY|G;A}W*iG=gr2<Qg&5PMz|ojG{DH@W^#
z1wm|}40Ycu6G17O`zGC%4QyN;$v;@Y1~@s`>Rx2aiUXKf8`q{%k1GqPt9`BhWGYGn
zRA)0sEb2@-4c@%G7GGE_6mC2=xm}YBQ17$-roDR*6jkw3g<;BWu6vX~3W%!3Lu(^l
z7Hp;Y?$<SmQ!t2=EtpnfAVjrCozwdup}ICOhm55_4TM#rY&{Pwn_`_PUS}{;#b@6b
zr$El`<b;sQKn)d+Y(^?yxMd0$oXOxcDHXVC&}$ZfOd$?uh)KI_dPkoHTV=khJKTbY
zpdk2e<US)GN~CR{mlWWw3~T0%xmXH$fJRQmb9OLo!fvpZpkiFTlG%rnMV~fFiNl5!
zC~u44Ev4FePB0G2{>&<@uuw=OYd-BJJ_D1U$Bms;^|XymgWWmdD9_RnLOgy6Mg^5z
zHrvl5jTkM*G6Rb84(ywv^2CIm9Qt50iYa&^5Y_>?$owWXBQQ#p!huCBD=8pwdN(Az
z^jQIw=9a7Ie_+5YOS>rPv4n`)>Mk0P&?35uF5amm!jT<WzKJa6n*c+@c!^YmtO<pV
zZ$`cNvp%S!4E1|1!zdFlt_XoQJQ++lK=hLQ8;b_tK$5vZ=&Ix;Q2MZzcm%-~!{W$d
zU+LLGed?-?xhe{*qmv4{7NDv8((5#cNy1XVt}>U#(#V1X;mb>^tLOsz)v~e<Aylh^
zqeHdySqz3_2@hKv3{ae1)^l+nV(^ce2<U)Efu;1+5<gx<KL4hb%sIsqWx6ar=R!tR
zPfyV5JbLQ?fvu7_=&w@2Q4%SpjNONu?E#Yx+8S_hqtH4%jD@_TCp@*N!s_=1a7$&5
zQcr{~tJq*n1zt6K4Ah66<ub|U2TO3{wTKB#R{y{ies~pCrnIyP=5qwle&)m7`y|ju
zoC;STpx=rse-TLfCY?D21mNcOM5QYdROrH4B+fzh1&q(~jmQ7G+tqoS<hfSOt_Hj6
zQTq?b3RsVrz!}5hnKYmpTKj|=zwE-><tqrbmewcadn_oU0*VQ=!gg)s^8pYDCQ6=6
z5q5*M%|Y&|Sj-s;Rt|%2-O47G0!NiOLq)?dw7W2j*R0}zurYjZoYwk3uHHH-s_*+B
z21U9%1*8;^?i7%2l<rOm>5u{G4yC0el}03mp^*mZmTr*lndi=Zf4*z|*7M(4`<|U=
z$DKQOUV~UD?cXPT_ceXVo=J#4Q94hZ2{0<v_2zu1FGQI8MWjjV=LjF-tWQMzfyA2x
zdUe-C{r`H~B#g`vAcE<p-fI27HmF_RrSRm*TN?IE))QV$a0Z2;d}u*5h|eqEgUzw?
zO8Kn?XOT8@F^ZT!V~WSTWe1*E7!)nX!`7KF<5Iheoy6<cubqe#oOGdH>E{uu|L<!K
zQC-9$t?&N#p2ImwIQhv|@>AXn2CaP@?zJ0hoN#XWLLFL*?!gMfSnGK7?>+LyG4JwU
z5x;*Gb2Uw7G)PVGHl~3_ER9zlWoqr>NSKsMzK&~p04Gu+BT^~ssSM&XS3lovD2@EH
ztlJw$^W(=f3RY!0J=P|CCG}TRDhd|XgxN;L>icVwU9W*(Sp(0XyY>^*a=BMqLalsW
z>8CB7V=wRv^0L|&0AMnD@CXs#Upg$fF-ghnZIw+|Hz8E2ilmaPQw?xE4^khiK)vt^
zbj3y$vs_qq&|fFvdVL#$J`OpYN4$Q2^#^O*GzciOsYClt=Jumfed}Ih<BvLR_gk|&
zvgi~~1^*?+c-XX}kY}z5Vj#C`?@znIApCH<%Qikb)lC^CZ6CXqeF*#hnN~(HQGGT#
zFo~k5o_ZI`n5yKF3`f;(h?UF}56m~qglwfHQxIJQg?+RiXky9E;MPpgc%E*<_zT0j
z_q8}<zL`PB7jJZ4X8-Ao>E7FTo8FCfkvCzoxehk{jNNC8DG#Tt=@dkFqsHG-69#xJ
zE#OU9dhgkSKvJtsj&VA74SaFRAidxvFEiHY66WJK%PP!a;Tln%|2?F%FY`_c`7yXm
zmcl@fvp0VpH$IK(OQrPOm3gu@cC#phgk`}=T)iP6izEx5*Kpu7VRHHG0oM;-wPq1M
zHUR>g`sU1C<%-Fyutf*ag~j1cN}atp&w2_+i(loFRQpaeYrRZ{-vp=U28<h<<Kve@
z$#cR6QplzY3IwU0a$5acCdR37>yNwkbqf)c?h!ZB3V?64Gi{nv5@5V^S6KMCgdjQj
zZ!wAg)N&!6CB$)Riu1O<@It4sCz@`#&&KseRf}ad|5k=d0oCc^){^Po+ejso6QIy$
zMs?zI{H&_JiT6P_gWtj2-tv>C{>3llA<CcCUN!xtRu&^oHgN`eUuLc9wk=ES5$g}Y
z+Az*E$|g>v)~;@%kh5Tj((~)`)-M+>gXa@=9<gsJIe|Aa&T0SXGEd`&#$&tc=j5>o
zUlU>c?O43c!0FF^!r>66^<q4d$qlpO6*(SCjfdl(B6j+<Ai8Mmhec84NE9XXJ2PH<
zgKRk<hYQybKUptQp;pE({9v1l`Y!&7&hc_;fNE3mT1<*5nn>gVO+!V^>HaIU@h+%Y
zWQu7-`vOuD3z4+!jujLVYSonQ(&~PUYp0m{LwqlBE<Mg5;3anWA`i~4#WMvmp;N5B
z3v4e3Y8eUEH<Q{Ebtmm+U4sgLQSI5H6p~-k?#^YZ%iJZqpd3>d*Ip7d%w0!?rFa|M
z*)2HznhSG>={WpWbKo-Jn-C%>Nn|DblVE1)0jKH86wVtl-QGNyf)Dv9NoRNqnQq-t
zYA!`f4K+S*{wKW^OIrDi&gP4nP=e)%-73c;i{82AqfZ&U294w)={3f!e=~_=r<Y=-
zhGre)GR(GOtNolVzw7CP3nQo*lDiz1-xsrR?z8!LwR{ype4=7_8ce-YA@*S~xAot@
z3Cz<kma5wia^L3d?91iHUUV`kJsh(#pv0Sps>#0&sl8YtG)>3NQjpg$Wv)r!bGIr;
zDJ?Xh$>(|egX45oc>5pUsV7pE>C@6jVIOVZ?Z>kvp~yE5A-$QkYh<aL_i;m2OP9-s
zYrZLcWG%fQ97_<Elt&oBawJW{_}NH}WQsEpW$-96!$plDibS4J>DzUcuXFJCHh(WC
z@~c=B-oi{xP12ug4pik$R5bjoDbeY6$te!P$?j7$ipyp5qIH2ZemW>KI69|POOQ`&
z9{MJYY-3wa4Z@PsNuzwZ+jHp(qj@`N85moTZ~R&XaL?qI{r9_vOX{deEf{gxioBs;
zlTi%|TV4}BnC_>^6n>h2^bIHNK+E)<stK<6Td%w(vvgY<NYdEO_ArlIBWzA5d69MJ
zK%?|c7xQudHj<|Z6<NNp^?jy*WuIPQU7cfG5M9MIQjzZ?di;*DTPCs$mg>jP8dF`&
zSk6$M(S77JPW8&03=V5bJw)M;PF+y@_IMg&?`kKjr@;*Eb>fxo4g2TkUuEdhowt+<
zGb4u^->SSWW6C_oVqnB>f@9vT$y|PNH|{U$jj>;UL>eXcT|+UJGumpAngnz49Imy`
zQtmeZ$2B^;zhaqB=gO8NtSoRt5C0u3&(SA3?)CRd`;GI7E+@^KWEk1MJ67%n>d5oi
zO*J@{0@P^mB`kv8rK<KE1xdW~n25CI45j@a#Kq^IfU-JL?Bl^Ud2icojG$F0ZT6bY
zJ`r8_4Z6#4QB>^-M*DzimC`>g!(60tTx^xIr{?QKK`AR$UFntV;>cVHt}E>iVROEZ
z%&yVM0&c^LSde;yn{x=J01`WK_YCikg_D&ir%)9VHIvBKbKmw#-_R!gZWV>>sk?XC
zwPk4ap2zJE4fn7Mm|-1#IN6Fzlk|Oj*-=9ABk9oht1OYKf_=Qr9q+KpPy6!Mp8}nq
zW|=^X5%`5}n44@wzWb{S5gW?vB&g~F25kTLy_Btx9hXR4Je4hSh(Wm>7b61;M_rKA
z2f`54g6-k)AM9otwDox%b`tfvrdZ^YY0YD1d~FM1)xefvWnv5FB>Sn%bXVS}^0CQ5
z-lwBAcM1}9juXYC!>@HFVh6RNU~ho0P$jHOQ~bP=TeH5~N1tZrCLYASZ-dP4AdM&z
zzW5<#DP`HLn3N~PTl^B+6EYGe78fsOr6hfEHU6=x)anFlP`sP5tR%<OJHLrDu)}O%
z#=}(Xi$<8El}Lu3<Zq?^C&z7S3j?EA%5Kjn#CLc$pAWn6&&O)U+^jUb3j4foZCsxe
ztM>0hxvT(Re%Gl^xnI;)o}!J}DR1D`Iy=qlJAsNfY`~k+nvCCppG(KU2(gvg`45>3
zpvWPFu9^`j=QE}nk2oHLi6558J_m`%RK0?nJYh1MfnklU_(@^Ro^)cL>zZghs%J|I
zy>E-jOKzf1LI)7)lJ!#hcld5fg%%vlNluHZ#l%_vP!k$vP+Y_7dZQ2^KBwaztKlUA
zP!};j>YMLU%j*$4b3|=??#4RG-OqanZvQ1>FHxK3RY9cflk){F1vdpVN2AVpu?Ner
z7gPdE>&kwwFuyE+?!<d@bD5tE$*QaNs~+BH7%v%kc=xAMsYBqC_p$ozMS~(%*`oy&
z32MoO6PHhuY)Dk95*5FM`c{~~4T?GO-K-t4CO}oS$b4t*PNgp-@L&SFL&g1rc<Z_F
zcRW;C%vDUdzE=(X2Tqy4v^`b!R+x=v`FwreFRVkdJgg@+PBM*0@89vDWihLZry9W)
z3IUc;mA8xc3s!1-O#`_!uM1kd$8T5O?lRgOd0Y$M^Onz4Zrvz)v8evO==sgDPNjp6
zU%9B@Z#PK7hJrq`(Px_>pXc3&i7fr_<W75wV8^&tI%v$<cZX8xrC$01!>fNHb@abe
z9RW5QybC+)L2-ahM&7|o%c0{@r@wnqWVl}uyO+!TMsP@3%6-zSM^QPX%8pmz)7Cy#
zZy!zr7ZoA~PWi8!Y~s!8#!>P=#oTo(@HL0BH+^mm&8=#gVR8GZ)>t7;^0M3R5HsE+
zn9=I1r0U~ntH5wAf)_JIoapP2s#xvaGMS>+$_8|Iy8>TUQbhc@G0LvTMu&GRaGq=q
zzZE1hzrCoFmY(0cQhvVz6{r^Q#c4h`7%=9W`DKai^@#nBMMwGVMv1T1pkoA!fWa$?
zkZ33@YRk(tC_^+eL-erN^!)2nocr(UbXPF}rn??kR+M!#wx@NU6%{;e1$$L4f3p|$
zKmVX0c}GwG(zk|TL*czMp%zSL373N27cRkt$@2DlEDkvca0quUwXb^imd7?YVJ`Rg
zPNLEc1BI$G{EpzvEAWco;ekk6Dt<*WpSh0DIVlfIz9Gd~*asgMi{WXl>(J*uvi}F*
za6hqN<^~_{`G?P+Og*Ll58&_@m4OEyUMF%9uAsfy3%}L8Kw_9FYTA#-x67L#HW%aa
zDsQvTJuNopRgdUCh>?{6ec8s-$r66`c&Ng+DB>SI0Fb3eqx+R|7&&bK0dXiNtaz0P
z0vE<Hxi8Rx0EcV5^%vA2G$2WdkE!fc<G(=H@otv8GX%O~y7<mn;O`2$uE#yvz8<;S
zrhOoa*Qjc4aGpN`%<xL4p9MtTbE?qWV%YEkum(@Z?@VYwfzoka^gDq7Nvpx}gbaia
zYr{(Ai&(;6Ykqy{110&#@Jxg9#;fF?(3m)Yd1&SB;9+cn0s!c(D;1A~FOmX?acWIf
zfgp5PL8s+~+Smtr00ph9s+ASo_9qp_hgUr2gabe=_B=z+WJv>1`HB+K=t;(3KI~G9
zS%t=yo$4)o;A*a*zXW0#zporI72e7Zpc?ull!=9d5RivYg^i`E5U7SvWN<yV5YU9<
z40oF}d0El`9^!$w<!cZS@e=KW5M~QQw_7l_vw>hR2#pu|*A}<B0ReufQxW0~A{buZ
z);b7+2!`@gSe&URAV#H=rU<47Z{+&vb9#nWuc#jgyt(&R&V1XJk(CI=QO%otCHs0^
z$O84hC}N!}5;l~a0j$GA*AZcgB@_G@V1M5wtd=icn;1ab+jc$f1%s*d)*)|IM-u=P
ze0>`*H;6czE*G7d*Rv0F@mPg3W;2f9HX~NgeEl9gT^#`Zuf&j}NWU*Z6o~tY_HQd{
z5a_T)M)2kzfXe5s2{(?bHi(9Isa&X9gl=lx(^~glt0FJ6tT(>O)P`dH((H8$>#o$$
zL0O_)Ykc+n>Fmj8yb~nD{?GS<iIybc>AE~ek1c%=NQ``vyJ<r|31xl}y0unO4j@qH
z7=8ZU946k$d`bJgoe}mKv`ww2<#5X&1Hb`{%~~`bMr^bCyJ~1{?j0$_ncP~&+<V5z
zsKNSz^hoiC272WrfOS}?sy<fE)I~$^JdRJlaX7(p3II<`ewSv934-x?CiNRP>No?w
zRvF-!bRr}cb`6Dx2<x~3v^S{5ut5-M(@oO0xh3kAY=qB~_v*C~N6x&{K>TFtOAk=u
z5uk<&C&mxbpet5X7n?XBq~XToS5)QyYE^%Q2d|G6fH~Z_h|*^P_lY@ZI&;h@;hiWI
z+J&L1UlRZpHjd`_6L~~L?i1RJ7pfwG778#NEw1YzKQjs5FwpQ50U;6--rbJ`9pM6b
zOu}Y*xrG2fd=HzO*<56m2JkJf+#Q#}?9wxQzt29_N<Ua7qL4t&;aj@5@N*53u>|?P
zPX}rUUzeZiO?xgYf#pXvQ@_+%feFxjM5kb6h-MOhL58NXp?3qo;Qd<GK0*a`!+K&S
z4kU1N{Sg3$dv^BqEPd3#2|oWL!B9T42}gP}z=mS}lLIcFemd^i`@ZZHzf5fMaK#iX
z74CvfYLACf7+!c92Z8z+f8nhpxpD9Cm*s3j?Fay2(PI6v_tVhFN;EItD36JCJYf^=
zX2lx~rQ#cPIq3yZUA?b{WM)2Kj1L=?KhpQO5pKRTazX_<fGC#oM<L)CwdpXXrX@B2
z5WmYl*2TG@p9V6&_R~m<Ho^1}QKiz3cMl8KW8$fRTm;@nqJNfKR{El$!+r)y$8h+C
zWvwX+@5^ZKOOSF&0)or=galmBiaN)RjQpgODSveHzEn;g=q3lPo(#!dLOK?J%H@F$
zN8p&N)ntm~#{&{@XC0rq4alUGpbpQl0~nICFY_NgMsqFy1q6bx1Fi$YFRm^LlGmwI
z^liF{+dsEU<EboLm(Ql8W_yXiAv9TE2B8ug*BS5oe>O{(KYDTP;P?h?VliHR69E&1
zAhO}2v1{g5R^vZJWWrFr4ZAD8OP8NE@;b`0fI;M!^T}P;Q>0&hvsk)u5B8<c4O2Ib
z+L{2OVp+m%1kkl7_o^ENLksL|ge;icc)sb8mcY>;pj{Y04T=fm9nJ%jKfW)WcvBMk
z+qp1r@~SOc-&5&9)($&W*~Wkwd~a~M^gn>ORc?`x4-Z#Fay$?l|M}(UceqJIxeKO4
zjXV4<TP*v+9{;~zcKi$4EBin-j!X=^_{VRI_Sm>>Xp|0O&6u9GpLrxAlE;D33opIL
z8Rm5S)nO2&;^-j#ZERq|@?`tuhLaT%wzgb3_u|v>5wm^+CwCrd?Q!&zwhcC{B84_q
zDdopsbhm8nJa2bD3bD%_XGVvfzVpghU&qR(_cl+Sk$6Cpef~T9#L?oXT(K&=dE!%!
z!e0PRS-12VfF;h%z>EF|ZcbLd(KaAo@u*-#sXm0{>Uqm3E0<_$NAx*I+Y&1m!Jrxc
zl1#3_6Pr;Uy{SmGtMW(gW)uheQC2PvT=Y35rx9E4&CA+n16f!0FPrtA^j^NXX&M_}
z)CsP6c-!{;*H(nKnUiEnmHNA%4VbaF-|BK5kl1oCipL>&%e6+5{R8Q_w%oB~7y<Z#
zXM4?>jAN<BS1z*r!>`nJ&(|aF6qqS4IZ*5Fi-~UFTP5b)N<8XM=F(HA%KSe0$oa`a
z1a1vvl|FcpU>Z%nE>}4-tqp6p+Z(g{j1i9ixHpM5@S?Q9+}tw^mBBy%1^>4Kb9%RJ
zZnH)z@k0k`5=DbCl5ewgrtLosTNLV{p1D48Ta;4oY;c|RlJrbCNbCs${M*)Eq4(cT
zMbTo>8!}Y4Z@bqUvM2ZHTG=wwM<{;nLYJnde-rizT3SU_wZX(pLZ9!!G46}m%Bj>i
zXI5rb{E{R;YI?#Z7Wo!W)2^<U`GF=^u|;51)kLzn?&PIa;oui;hYIP;w%^g(6vfsx
zJYjN5T<H&VA?^k_f}HL`duSLGMn^?bMHyY1qaPDHnm%AX@1>6SV-CeW`dJ--gDFI>
zGu&!u{4!LSI&n+FvwY?=Vxa}$f7eAFZ{U8(JKPQ+=*cBrs3k)8d(9Ou)Hdikv^gpN
zQO*$)l1z@v<~~Zq7Vng`@#?l_-G!K%^?sQq{#FWacckB}T4JGppwu=K`Yx1Tu&48|
zrOS8c<A|*wmrI{!SIDD%8>;pqilyeW1Era+*)rDY`=cgz@ys9J)KM*;#4@8`sx}(I
zcY&X^Xs759C>oTIyri+7xl-6pVT>86l%R@x%B~xw#)6Ud#)UE(B?ov7j9Glvk7xr*
zg!u*b!)5i$69OnBPj5UuG*S6}pcZ~)^V_A538s4{=Fhc3<`yL>?{UBret&7S=B+5M
zpFt0OoOTT*tM!&ihlGyZKf&@!q#u&}dr$9c<0X|2X}@u7QCmvjf(M<&e5?(lLtHW^
zvNZ;Fx8Izh(X@T!g3n5wtz@O~5Shb}w`q5;zLR&}KOU)y`!^qsV1p>^ynSpA3!YIQ
zJIO*n!xMt{39Lvy8<Kox2fHe}4U|Vnx)Ue&K}YaQ-mEL?hTfp%m>O-cBIM-O=DE=T
zgfEiaZHLyOH+@et;q7^sVfb6Lu7NXh?{YwsJ|x&=MIy8b`twMGi*0Q7B^-prt3v_(
z5H7gTt1~oge;<4VDVO43$5T+7sM{(rLO6gs*pZJg4q863gN#@}BFdf=07~TTVD!$i
zl%SS~?Eosk-=MRrYyt=kD2ZoRjuABT$JtYFge189NscPO$6^O-9Bczc!P{JNof#03
zE5S2`1tSF9IiO*Kj&H&a&p_D;w8z3xfSEF9f(NY&Xb9m6ZB*SJ57H?>e4r*NJjRk*
zo3yU5t9+OAO4HI)Adn;T%PKPoZxQxi;m)j~pQ#Jj!JhsIpOi+#R9xJKX9-#~0O%dh
z#p79$EI};Y*;LG%A<77$SIaNDJ>Xwh0ei}n?$Cf^pUc1LgIx#Wg4zcdteXS#5j<hK
z@?8JZu3qHDZ4A{w7}Bq4@_*Xb>Q71twrI)hU`pZv9KhNBy??6yCF5uXwAkY1*Yu;@
zHwd1l*8Bfa1N*o|itn}&#zTVK2MmCdCCP-g7kK3Yf?Q!);`bTToS+^i`C9G@TF?*|
z8;ta6&ijOxGbBfcxp`N*phz6H%jKT%=vLqlIvU86k&+U-85J~ZbPs^P@CYZNy8MXa
zf7}`qjpKhM*NT2etzff0l$qh41NS|8I40OOq;;8I&S;$xOufZxgu!~qVzOy#CL!$?
zwqJI)LTlhwLDQyo4heJQcfjQ_Tjib+7lS>?zqjhkl}uiN(^_!k8Oep>kFz(b$`5Ep
zaQu`Xvp4#{G6&8_MrC#&Nznm?yc42`uYm{cU)fKY9^8K{f<3N;Z`Gw)Y|FD>(7HZE
zlk9hoaOxqXI(ja@@CxikNQHU=Pc3?3pD+v{C$hb?p#CAv!S4U*w;a776_s@S28bOs
zsQB_f{ZL&fAlCLJLacm@uYXcMyypD@3iAV&VVaXHGaOA0GFL2ofe;orvnsEX*bfgL
zhd4}1eHmTpxDbSjYaGBNEns-DFiJ1Oo@Kb<o}|FotxFSU=M9X$5k{YD$WH$W{<r`x
zU(>?Ob0f)hyKlR~AFP7lc*aJn$_QSR<J~^7I)#{>lTmYDN@U#Al0T?A==9y((-^^f
zQ~SEx;Nj_j5Xf0wPZifCU~0sBY<y8jD1r#pno_8_b4k5TAU1#(KSrDWgfJ1ho^FT=
z>XR{MjTs(&Jp>SsXLqy+K%%X47P9~piyQC{%C~aw1}G0Yg11snf>z{y9wxfG$3<L)
zOzs)a^l!l1chotB*}UMiAklGqK`0j*vVVLyZYKzuo3O2YppFO^d^2`%0gRHQ@1}dr
z4MrrwY5CNOx@6GlwdNRSP>F5Au_3-C+%0GtdUe>N2+|TF9iCl22zKAo=H2Bc*8ZoX
zvDwN5F#6S%q^F1YZ-gmTDINMwu#h6yCsYH-1zDTL%E~K*fAGVj0WDCFdZWG%17KL*
z9sGzy4UCBC_vw!e;6-_bKjDCd$juPDk{(|eZX@h{E^71x>?0V?c@wgl6<UHbNKlR`
z$~58K!xMzd@V>7s-GLA=jL`S6<v>u<_JYqTKj=SATOEE2BnFi5%U!PKZX5KwYTF_9
z>|V<Cfu8m*dP!1#2#&l~l5~U&^2pP^-a;hDIjnjgwPwW>{|v~0!Qw5_y9WYLXQ~{o
z1r$oR1-LA^a8x>boB#^NIooRjBMcu|@y7<e%>C5jnj?u`2~Tp!ntgEpFMz#i-A60W
zK<-~Yx&M*LA3QP1PQa{#_F<smf!VNqv)?nq3F?71IHb+q5C8(mANB?72}PknfKTW5
z+%haRXAGcvLma=^DBvvd;bja4U}zx+0c162S>RQcKx#IxKvKZ|orkj7JBw{WAe3h3
z{-NiczA(B*SZWyN2T=WrkYnWRJ!tB7i3u7|(4YaMRKH#y+@pgf^>sY=|LmgGFl6xx
zL;=Hc_xJ22m<I_<1g#lhR@JXA0d)@eiqr}vXu#aQ3Hf`wunh%Rh!8B0sIg3-%0Wxm
zB>G0x6`{kXoACAxGUEds_MZD(;&TQ>oZv?GR{}}5;6Bq?efK(r2f(RUH;4P;I#H7e
zh|`7lU9w0$y8yRKURwG@-!**OLDYO#9}dYN9%%O;dE26E*eg~<gFMi_PqR1xI@Nx-
z7_t9@G$KzW_XfTwgZ=5NWdR;=wSMf@e<<gZ1xy{};g35d?wv)n)cvv-KuZnUhb~vb
zq+@}838~8WbhbpuJF8#HUOP*BdrteJ4i;z~9<_;v2s*53wLJ-x-4$O<yzQ+u4#=UM
zUobwnK$QCqtm0uO7;I-Pclr_L2a;Z6x8f3YirjD(5=1{9|4Q^3WY0L11Dr4c4Z^ha
z?*&@(-`lRexRD5iK?yk*xAeU*OS}q6IRcJUT13X3F=RrWKZ1Q*@-1u6l_03Qsy|Kf
zKizVWR;MCK(0KW+)6u9J;09x#wvLyv=LX@1>jS5xN@WOwAFfe9M~`q9s*@!PQcP#p
zmzco-=$#xq=DN(~`@2G$RZsT6h~HpsFZUoK)~CW#ECl@&4NMHlOJ|yz8BQ>jdAH<?
z(jhq@xmi6R`lbjtwD_@Gs!OBQ1cb)4V_5Rqoh3m1d)x9YZ4m6T*0pg%pg*I+L(T-f
zh$*BIKH3CmulxIO)<a)&52P&865NLx0vcJRzuu#ZFcRKuzHCut3Km2HnF^f75|~er
zqH^Y*n+L#C7P|+5?Z*>9@PRDlmo#~dxD2;;TTllhKQZz3DHx@yFD;3vAS=6RY6tn9
zx`^EaE7aTKMhfh9-wlpTKnC+WCsB~$gQPam|8gw1OuP3hc(pH~dAMU1@<(RBYF5}(
z6tu4nGus<f-$ix#9n7#5aq&SB@LF2<6(x9$X%4H<2d2w<tBz{-KvQ?va~cBng3cmE
zWN_!_@f%h!Ew*tRUtHdXA+A1H%QpLidf!XA&jYzlk$-W;@rMZs;fJa9t2k=#;x{JK
zp)SOMmGEw)gR?%jY$SK><_UNLoTkgm$d>SalnRLE;K={{UCC=5^g`%`3|GAg;YN%>
z`OK!s)<Akh>EbolNCM*oxDB{I`on_g&ZjY**r<kx$+69{b;QDin6!}IFz%mV?{Fc$
zyrco!@c8!9ATaiUvXt1~y#hFcMmTqL_1PuC<6A!x7m@)6+s^&kFDBDu#6Hf9P3Hf+
zEr5?LPg|U+1D!kQ6z`%~1;Kq9A=o?e4A3?S8TfL_01o)IfA1{Ls=x-nU3tq94>qlP
zcj=xZ$^Y8!+{`x?L?=IcQ~Q<xOzN=*_o@P+6-ksC7kF*ACfKOujrHmO)9eAWzo3i&
z2eXSS-xee2iPrYNdvGp^7MGDJf;TTSZQI%4u9@9zUa(oO6fNAigS+sS^vJgFA};^V
ztZcpe?{GZ=Lu=z_Z(e{!lcl@j^a>#bn(MFrUnK!!d9=Z`4FXJ>yu!kdfE!~s6=d-V
zbO<k@ixsGrpt6-|A?)olZ`TJ$(WmoDpom3i8y+~S8k%z~R!o0RLjD9nAnY!jVDBJ*
zs69;R0uBag33AEVmWmMku)VGEfAvcycN_4(`>0PvcZhu_$MAYS&}*zTxoN~iIls4?
z&2j=gD}%lz5`}})7{0gYWw8xG%=1gQGM@zEo~{&Pf=&FtAgd>QApm*M$PCy8pp-z5
zv;*#RZT?TQ8t(Wom@wY`I_+8Dxjl^H%7LMjY_dQfIrDD6IGz_)Ke*=vn}2MFL(SP8
zm^-$TY|jNGk--U6+EUH~nyV~Y`Je7s7|!9Zo-ILeLa#JDQ*wf_fD&r;<^IcRq*l0w
zeJ&zd#%?ZHCf3CuEaG*rndUZJ(BfQoH^MB_2*gx^>Q<##oUMQf2EmbF6o4Y`Aa-Cs
zyoJAP9|!HP=&D(QX9RIz@dw*h`_8eE`TP?wtwyi23H$>wLFGBTN-_T{DRohE7kxzi
z9GhO)^QVEnKl+*43>JY)vSiwS`IH|xd<ohkc<lG~;AR&wF(2I1kF7x2wmqUkAOoaC
z%iw>S8_u*HfILAGhc~aFgR{ENkG01HiYTLHxY%DvkP0lp`au8}<MxbcPcRePp>_F}
zk13?0L5^u+=hu@bjSb&5|M_@`uOc1xSD!*KT|XC2l<`wGNipNSrD770;-YkxY`&tC
z#R=x3^n2$_`sHi5Sq$aDGeW*bMu)M|)(<MRE09vZKT|P^amkTy7}BtGuEu6};N{M~
zH6%KuWvN3JY$!1m13nD`YZikQ>^l4zJ<mb~XO-2O={f3$1}u*H*)J1ZLMR>v7&z)D
z2Q0Lc^_^18xDO}BzDCBptf|%8v?4Wpspqtx34H1%Gjy`9QR-)}m#fyxX{$*C2v*kI
z4ZsdIy`hKwLVJLvu2!!HAh75in0L=6+r`Wo)z<2TS&_yNkMw>ysrXo*zM)PwnA4c9
zcErXza6x(Y^Hud^_an0T#cES_y}flVsF)&$jQz&)_gr1NL5lZ~*1gN7g;B;I-&5FJ
zYC^S@nJT}}*iZJFrm4mmtvd4U*0E-2Z6Dh^FU!R(zRBB&7V&5uZzz1#A1}=|&$zp+
z7-(%n!~9dak{e#$tGxF28*he3;J-&73Xas|2%huro|8@~Rxy>b{Zr>?#W|(RP_*Xy
zO|r$hsmM<<YP_L6*L(a2i?0WFm+IrSxzOk8QupMt^4t+!Yy9#*4VvRhj`y~hI>H34
zaw&zUj17jEO;X>cGuhOCJ+2kpyH}Oyu6u1lV~VREV;nSK_l$Y7v-q*<*t_vPY?OC%
zHLXg19)@q<v(+o;vbd{n*^fQ3v)*DFg2!lWRU}cxJu-eALR;Ygd<?HPY!DtN#L=*C
z31#}h$nj!^Ra@?-B9oqN(vKH|Nj+33`_C7Ig&8U*gv_&@qV|0<T9aOQpf)k@Dlyf1
ztB7{~eC61oH0O6XALpZ3t*H0n%^xa5_Z0$mtxj?Y3vCUZj%PBgHm_TC(N&5w((}hN
z0*1(tD^9(0?`%WZ2z>HJ&n|lUFi9UsTN@cFabq>7LygpP|L(R-5%F0+Y?Jju0$QJQ
z`^rdKW+}~u3402%SSfDKltYbt=R5pbwQe@|ICV#0u)Wo{fknv&ih9DjYXcHnHs>ww
zzt2x00l1fG^8$6YFr<!K{WH?&*Y|o*WgFp7(6qFni97*#22zvU^_+xGL15A|mk5jk
zjRmKyq{2lbNyzU-(z^MTxHmSKf6A<&nI+lNLsbQg-nEc5@3Mw#`9M=fI9xv2bbIFK
z{!DIllGXJE%ehEF|E)MZDT_$iVV3*f(9OHI>}q1L+L6#<4F7_J8%f`=uifG|CQr+e
z@+_`#@pJ=n@jl(GoM86A!dxB;xjqVt3VZOAkaq9nxq}A}_8nG^koZ<V3c?iBP4l`g
z|9ki7v^eQcFcv3LqpJhYIZkf^`e<6>`Uf@He`ZgRNTv!5hU9-`8nB*8x?*5_xqHAs
zQ$yl9$^REoGy4T#uC37N5)sowe$~^2<LrL&LBgjkKt)ub@g-v0_~Ezj)Ekwmoh*@3
z&uy}YDY`>QklwP3S9>$=)Z=vNl{yz!b%c>28J*wOx#4e&03_nyr(JPqY)GZg$4k1%
z#ww`7Yka8dT*b*ukX&olZQA0h{ROc@PIlWfTmsUOUxjaV?r`TV0Hhi}+qg3$A7r<c
zn`$4l-!#<WH5wlTMNSb;d=d#wLtW}LCy#l<KY#7M`UHuLpDpF_QV&4+Yve7}a7kYL
zRqrl^NNPpq_K-A0<9XTDuYq79B$Y<5s`^Kl{ERmFKF-v0pFqQS=nR>Ezohoc_u*<C
zmBRgkWcKyqU%Fa#6+JhWY_YF?whs{A=-Ewc@!%C{3(}ai_2cr*PAnu2oqD{<kfWvQ
zn4a}LYcJ3;fx{67=L-uzyeR$Wmv^ME10KDa!a!n<P9={Pp$XYVDAuqlj}_sOox((7
z9Z@P~kU;A=e@gg6!z%jS$7|xy?|_k$xjwpG)6`4HqvTJXhu^BN3?RZh`TTPUt7VAC
zWc9UH*Bu2SfaV9)L|%9?#_X(jMZrtm7HQFycQHm*PU-QKq)nCkeQt=zJgGXC53s-#
zRF%iUo(qI@+ZNXiBhgtdEaRD1F9;rdJTbrd-U0-=J?ulq+2~y6w}Nn4m4c5kU{Woh
z<`VR|bcFAfny+g5y<B@MU=1V|IdPL1iU(PQF}qiorzmLM_0z!?s`pfAtDAfddX3Av
zRE_^0t-U+GQ#Ci0wV;T-lZUpqeeLC;z#0%7=$&<?;pcL;hCg5L#EP_KxZqr|c-I`i
zJdvc8Uv$m&I4G8OH7T;|E@<6zax60bHadOp)e;VpKxc1>X0?F1JWd?Ppvcxn7d8?P
z2Pb4Yw}xKS!E7VF+KiUW<W+#>#k**7ISfH-`D3>I$lXZ#B80!|mYP2~EknE}+h<Mu
zm8Cd-A^nwpIJg$8w>c~|*X*UY^+y!kv)lQP?0H!t*p?@jrgtWYsK_!k^oq`AHWY-1
z(Qp5^>#JqGdL#=<5YD1zm&INhf21vn#^s}+7<H{FrD^7)(%>3~<KAUNI`_6L>B~@1
zH5Z`vrYe8f1J0w{J=s=ZVlK0#;Og_n;?@G9)MSxMSR=QigK(BLyVlf_%z-s1j~P!I
zKR4mkFhK4+S#awvVeqH`n!@q7ti1kz=oB}S!(Wklu1fp!I{tn00Qv&(6iBY~Xq5}A
zM`Yo>62hNOS;EDziVjf&4WoWfA#pUdSA|?QOE>W~-vE*r>waT28XH|svNl!FwHS)?
zMm#Ag!IJ@c3B3FRAaP8oZ6s`*)&SyEZbK<p>YrJkdVHz~Mle@U@uoaxq4WA>+KOf4
zG#^h&oWdzjz19Jw_2mv#NLy4l2l0vs<k1JoIAdnNS*zdevxPJ-pPz0W)#oD0Zg%;4
z^XYW&ft~qD%|UV<80r%*s#IP9Yk4dzZGLMpJRKwrf^_FG{AoF0SIwqp*g9fYkN-ER
z;l%)&mt6H*OIf*iyhy*(z3K2zU{ub(;z`L{U8tq+b>!x-BB?8SrZRa1jODRn!Y$W|
zPY|7BRMe5@hk$|nVQ{mvAvTaMi>8b0Y}QV-@$*YPcX{u?&bLSHsquq6f8?wHC9F8$
zxdSnSDhpD2>2>qzliuPzJE?r=X(JNCy8OvDk&bB%z^zmdgS}2fgZaXyb^gSX$g?i*
z_m@j0&!^=<zlWQ7&<jWcOkaInPq4TT{rBNXjlF0Ky5)pNUG;2LpidYg974^f0dDo-
zyLM8mLcVV$5nV`nzVZRJml+_rRUbd%1Vl9k{-VaXLv#yjS246ZXG#p_gIEkTD|HX)
zV;3%X?oerxKc-RRyh{o*``=1e^k?1^y^2PziuZ;?j+v8~O}+O&C^@4-N=B^y+$53k
zE^ou^iMh2tsku-jhW9@|;rl&h@Z$`%2|s?HP<O_<hZ5^^EUT{h5-n3|Oy%e5x3KP_
zSmqFeD%}^>a;+Vv=CF%B52cPwb=rh40w031%v2|OKPj5#tCr|G^1TmHd0Hx<<n%G<
zwNs|}hDP+WN5QY(3MaJ$L_hoZ624{p>1H?!vT1N^>WCG1#*{U%I5QBxjb9%YCn{0!
zu=VbYnO$1~<47cKe#f$M<_&}HHKpnnRU}-Hsc2;7O~LI9TE1197w#K8P8y~!PKWCg
zNHZnLc|+sK;{Fylzvhco$I>}Zjy1?91LfR9R20W2olhNuYaJfR63NUj_t{W$XbM-2
zJdNxtR>6pV&kUnMP0{4U8yna#2)pThO=qL+3B?e%OzG6D`lY{pPr#63MFwkBS!EFP
zDPxp`(^tH<RuIIIjoM_R!)5aOkc3XmRNtLqXK~6dt@(_pvasbu6+N0zbns9}C}T8H
z?(onu*_UcVO7b{_7&S$aDbamn1eVuW8vaQ5h$Tz(S^Z`ThVqtz(VvApt&FON_Z3<U
zM*9~mQ)dPY4Vcs4DNJ7ICjXhZhjABd2*yx4dY3>r&E{_Ya3+(PJ!bf;dY%`w@np6W
zy)>y`KI0eCi`bwl%@B2ct9B*bTSsKP`jzj_NyvX537Cp+IUp8~R<@(+eg}~t8-Hq|
z!AV5Rbn$x|yyc?11%JCU)KL6UM{mG>Z+9;~qZcF8!@W$DsNzcDE8#SIa@|Shap3Sg
zWW~D3bzOt??%r`haw~vQ&qrtf<2%=-VYAdNsP(WF`xT$pCZUJ5@~O7!JB{o6{TAtO
zzXUDowGVzN(E&g9WyyMTSFy{Pmh+SZ#_)3`1@?ZIy{m{<>jtOa*}e0RJ`Crh*{a|0
zvzT&@BgTW6KQc7<l2~Pg)BTx^@d-DX@cjgI(s`DJ#3E%ledk@m)+b$-n{&|@+I}HQ
z<}gSgY>Lngx&!@ux+GzEOI$P?r1Wj&I7&?RMSY%Ds+EJGi0lh3jTgSef_Hg8EN(vC
zq-i<y&>Vdn!PI>5N8^fmryM`!{Z;EEZ8phQEgM~@e^0YX1}n}viw<T@E`>$dUKhnK
ze(*y_ES@WeugKZ<4E(GN;Asi|@bGgv6LS1I^+;s%{({<Y8Ke6%&CHpC!!ZZU>z%6P
zcKNr~*6W3zxzoE)o|G%H`X$0?j_c98BcznYjRGD<|7~LfGDGv3?P1x_H)jhgYH}?L
z)%zLM4pH6OQwE$V<LB<eAx5irXQV7{1ryKp7WL@<I>iyDpv2t0occ!4K>d}7l=EgZ
z*)!OoNaVT%1u_9IgU#T0?UIn0kQ)GBdFr*gH`<8RXRAEAb>4!zkq(j}DW+OEhk3p?
z&5&a{t|EkGKI3`K_tcbEkIriB+qDZMbXI|955i#ut8j!!D%2$j-R!4qL2Mst)>c@*
zoi&cgy=6*;w!kWq>F1(J)byip@>u*OOiyIAEjBf6KUqD!W%ey*IZJkY@}5I*iMa7y
zOTnv=xRaNDj7^PJ4`-ivist{_1(#2?y0A+hHG2Q6<LDm1?Mp?WZ~7#bhn~!GP@N9%
z(yboW>K*&m^zLpur_(#4-YYO^Lol?uDcoAW??!D3UQ?bjLu<m!o+X&Etq0A4!Oxl?
z6mVzZG_^eend*OyF#ZB^<+z6%me*~_!TqtMpL)+X+p)=c-p5zP9(y>dbf}(>?N~(i
zc(?IO37XB4KmUd++SI{ADf(1Af@aw)Bld%LCPR)M5*dRs9**LWVD}I9oo3{&Ubh?V
z?uI1fA6B~^+<~v$x@RU|EFjDD?b0TflS{IFF@0OS;p7{N28gt~sy3tPO}5_6=f1hV
zsi96smXV9)mR$Q5;(AhhK1MFSOm;FW)$EMqiBq!9PobPq6d{-Tm7_|C>v1@C3vPkI
z4^n<*yf{?;@1t8CIOGC;hrcyqn||s0xo$|V98!{bwU3!&yND+IoCQd4<1=S+5L*Ae
z6cfaApZjtC*R_JeKO9TcYzI9#SESDb>7}?>JwHuq0-mJV^-eX1yW-Y+yWLf8&s!-5
zGA|_Y61<hO@Sj2k(Rh0eg)x5-8Vy`_#=kVF82GuWq^G!{A~c?icc_jU@VyilTFez+
z><^)OwPItqGc9#=PgmGBCSzG(xT+3#dTxB#bZ9<p;jo*pIh{ZJ>gi&Tx#j6~Mp9yn
zgi67<^W0-5G@JHBH%B=C-?K@5Im?bX!gl%ZKZbg5f75iO4^|YR^$l`CKN-y;pHCis
zapT$X!kcgnb>R%m21EN*GW>Q3hqWj5DP{b+kp^wkIN#&&*f2w{eB6T|*||S5>z86Q
zd+cP|Kt$5Xg^<^ua&MD;{#5HnP78d0FFv>HDlWbwmoTNf8VI~>o_Df))6F5)h}<PN
zT3hk2DR>*lAk%fjQ4DQGKCF<2%j0~iuj43y8%I9FZOW{nE#0QzqZ9SNWwHs^ZZs3r
z<$H_F_;`t7g51tdoV)REOM`uv$We3qJLIm2wD+GyEzbh^PV}a~-fD0h1mzc)&8QL0
zQr;9`^eqL(?4SKb)liFZ7wA?rug;LnboB^?pt!|;sRgvMFE_DB8d^f$iuSDqIv_&G
zFhNmb5<C1b9=bmCi9^4!`f+&tNW!M6KGl6eRA21GT-Lu;G;G>;1v9!fPL~PHPe18A
zM|C$x8#CP2Rt~UzcMXuV&x~DqBWSq-h&7jopR~Zcgy`_32XfZB@$(ovv}g;<aghF?
zSm}kJE?ob69G)P~*%rYq@K}K;!G%n4akCSbT;zSBE*-N=Cl2zT?)CRI7m-cnbq_(S
z>+|1R@?(bqqUBM?`wP&v1)|hx8%N?qW@@Z7sNZl16_=CKlE7$OjsB}l*I%Y%UigTd
z%5To=B1;S3lr_wBWna=qF-?7nD9O?**FfdoEoA#n?(5er89*w?^hx1CVnsvmP4(ow
zRwCTcGT>~3Q6$?sAxH4)xW3R2Pi|e!(XeUc9S)^FP@?gXDiFo<$=>Em#1`zKVp9=t
zJ|Y-3M$W=2#E@U%i@+Z>&UXTKv#c-U+B)(j?pX%-CpaLoAiV1amM46J9)Ws)9)n96
z=k@tfT)%n|1(y|jDNhBCWk@jb_|C*_JPn?6d$lI~bsJLs)}t3+=|9ZQq&(&|`(0Xp
z_R@lnZB~O$mQTX?{MFE5(LSL6Y`M<~W%<~gBA!Yxq|FUDmfgfTe<2<Ld<BAdY*St@
zu;`R72SRSq3HM&T_Olb)Jr23`$t(sm4=swg;#zhE5sx?WLGNY2f(kr`+11-1zxe9r
zE(`Yn8;stM>YuSVkF;JF#B6_1N9-yX>cF2Q^6Dr?deJ%V?I}CCp0+!WEF(V?l1;@c
zfC8w_D4S4Q?ZC<N-D}w=trb89NEGrLZa~04!_V25^tO88&(}2nv^mm9+y|{PxVj3h
z;fO4r)5?l{AN7m9-i$*eEB21tDz{}9gm`sU6QaTdYCiCs!6{dTX@;)%EYNXs93UyV
z)$D78)^tclyIPGj{KZ7X&-~OwN;NxF1V8C1r8eqwO&J#ZOk@w88+ubBOBo39czQE4
z+yr#DZZyf(Y4~3AHAC@m`**<I*K(6_QL#Ap<F6S4{%C`H^oBB>%T@0*Lkl_%)hU{Q
z0>Q=W=|YXg0Z3h58a)Z%`R<qVmX0n4**rY|x+>};w8tQr33Q_x$78QqY_8&Qa*ruw
z0pwVF0RjF|j7)eBA0=}bCf`F0Iz_!C;gG8$U)P(X?QawPLn+^I<bv@Am!X&yT4#yv
zXjk{19I%rPx#WIRm$z)%JVhL@?)KB@Q-sh;CsB*kir-QNI;P&=M^u;Z$y2W2bH+3p
zZpNpGvYVv7wAXiLzIwA}t*AJ-$8)p5j#caQyk=^3yyeB3HGyr}yNd1g?!jjxI)mTv
zB4X04GhVhl#i)&D8qjiV9eOvm*!|!kXPKy<bEBrRWv{^&5cX`wE6~GxezxvWlIb#E
z4V>Z6+8@G(&>~(Yj(2}3h$TMCsvYkCI8vT(`zTwl`#bAgR3Y9}lIbj&ZPMVFv8Uu@
z=GI~OC^6Y>_fPW!I?q9%@mqBJ9kH5Y5@H-EM_wr3hJS#S&_~p}l{7o)XNy=WG4cc_
zcg#VFk%D9#1(AuF9)5#MYib`uzeEw<-={z&!{E(T@84Z@A5AqV`-hnaWkX5K*tuWb
z6Kn{@KCg7~3VzH`ZZyqB?sndJ)>HoE$(U59+ji%+n2=OX)R74<b}SRhn3RQAS#gUn
z*GDmeb&1evi<jg<xP<a9QxwA?L>n22mByYyO=3tQ8q~2j_`kzQHoocMPj53jN+EgV
z?GQD2vEr#E+IE)pCI`ndApyel^G6~;VGnx}GGa<t&i`_837wa|(?9(xJA-kmQm&`<
zjMkC}?veO!&RVQ5m|!DHqct<wM+|u}Pm+c))x<g4hX>i1<u@;PPyXLWTU&R#ug2Sg
zOyxPs>D0qk$Qn+|aV{r<zXsGNqJe(ko-R|QXKj}}maYG*eb-d|QH*3$>D@^GGPxuT
z`~8<zk^mp6oEY6D_hw!}sQNCU*73ClLYC~bOtDTm&e25hT4%+FdQg_XwU?*0vq>&4
zaaiq6s;l`EU)C)j<Gs=OJPDfTmGzV@321;}H9oI08e&y<CZyIX@4bw1W9ihpPfq2{
zCSGL7S_J$!sIDm*;yL+u^C-4N$UMU{KcpKo!j^pW@|g{a@3Y#_FuJFt7=n@NXi;ZL
zeFS&}Mf)he%mN!_vE1b;`^tT6_UyfRI+ay4C*g^j<v7cLuhI?Cw!W?(#fT0`E=yO{
zHHfY}5`T+Si#srrt1|p18sBg~5-rD>pOCVc%zk6-gV;&iVijfX)R}`zsO{KiwbhP(
z`kHv@SP0kSQ}3Rm?KfdBstBU!$ZRrDY<<D8n7I=(@ZbTBG$nf!amYeKMY^8#y=!(-
z-0!Cb$iV10%q-KXrG^amjDK94SZI#?vH7_Ih~q?GeB|7vYlvH2HTeezmbDtRx>lrg
zxV|asNty7h6ZK2>>4+ui#mamqAe??mnf<er2?bAN+l<WTKvTE9a!f{M1E^m<=iz)x
z3TmGf`PyewFSlVQb+RnDj`#En-RSEZ-ec|&By(Sx6jI`<oasIxl-FaJr*BK|`h;r)
z7=b4fktS!NC#z3<IX<rIde}Ot0Z&^Nsys}45$@P=JJu%uloB@3i=|qmOUC2;?M@&l
zQjpZ7C~RO>u0LDA$YPVoV%a|v$2uLpX&0P70AmoOHA&q5s;jqN6gxaP-uW!xZ%LYw
zo>Wfs4^BsCi+5&#{0Zv5>wgH9lqy*t{jhNPd4UHmE&L4{(Dd=2Kq9t`RxJ-q&jPMV
z=X{v__ZK*5W~+Ih(3&P;0}X1(aY_mn8xnJGrG%7f5(;HD5S5l4-_riCZ?lnna=mTt
z-}KsSm$r^k)s|zD=_HnXwOnrz)u+lS2$Q{(*gOXl+uoA(npZ#)@IO8VHD#+42+2_P
zdWhYVNp#?0N+r&4$n{MgBE#hH0%2h_6e0#1eA&j9;$%8VV(QRF@#qR}fHWDfJC=sX
z?eS6=^`yIG(AEy{XZHNK404|x!u*cVz%<kN$rV{cFQTL{8zIKohv*Lfma6NC4S792
zC%TGX?vkR(C9*s#tc-5rz1*SGY}l9E8Zj>H3N_!_W^4E7FPE;Nw=yO`)Lu_9mS+2n
zZn^Y{UkRQojHFCuGIhxMFi~7YAz<_({ih|_F8*pjJL$;~UL!)*xQ#XOS`@8EHr;6V
z^?GGB!1~NBpo?bqo=qppb&2FUxF%m%NkI(iV~2z2N7A&=J2pom_s@Bezy4HVAYv!&
zs~>#w?zI?;(O9rWe-1VIiU!j*5SD{^#rM?$FXb_!QMCp8!S><Hijy<ASW3;r?p!A}
zo{C788u!&$i*nTg%}$HImn}1mh%N)m2=}sa(ugM{&RW(r=|;q(RI_H@bGmrrxztI~
z&F_9hwqROL<3+yNHj{b(Ij_{Ho_=je7}4Bn7UfYhAz}Dd>S!3p`DIcQRa*8ycj#2@
z+2#_UlgEhKU#gPW=)edfs@RMpDCum+oht}=eaD<jVB1+rDU}oH>n-iaBS0<h7_sKs
zLju<4vLM;Bt<UYMy_z4twgYc^aWf(6GfaJ7YmR~{wg5%;g$vvg+!=+e-8GjPQxMwS
zZ=!AqwrjSpPAgmj#PS#zxo_S*0}In+q)FpbM6k`;b9&9MpUE7k`BfR%iOk)_J0cIF
z<gU|2brKI|XbBs+et7?|(Or~4H`;NIG(PQn5~Dn4tk~-gsnD`U=Yp3@+5E{wDSOFI
z(&S_ivD?YO*zCIj|B)HTn9ZtDHU2_-8nP-xI%;%PArjV85pdwZ#Gb?E=2j$CA(%O&
z#$tJ%n)V|zq6M3%eEBrf7CUo1xea5`TE(amdIQCn7P_d`U1}a)!JOXFbU!_pbW~u{
zhrkk5z6spt^10{B^^Zb+moHlnq+?9$HaL0i=^o>YT7ABldWTW5T<`VQY`;tyqoT46
z8rXU<b%<VZq%Cey1gtPBj)d)3E%wVq@eNw9y7b*Es&c}|_I|F<U)HrXGvrS>`tTiE
zeYmI#)$z{Nuljj0l?^ao{xTriFDqfF^Bc6keFdyo>ii~HBp%AEa)QV9;`T0g9Y0*e
zhU#3Uk87KMxKK&eT}iI?Tkf91VJ#YZKEn!G(IV%6KU!!oKsnFhFJ$hc985agoWPL0
z*xt<eLe`q=8_D~)8(V%8LNxX4{=&1z<CDj8W$Mo}3z@T*ztY*mtd5$9C0Ik~6>NBZ
zUnpgd&}k6aC4ayb5!cJxQZgGBRSYz=hu?o?ggU>b_Vk;oTFJP9+Mdo(O>JdK0XJ5T
z4_?GE%{)w4WD1JeIG&#7cx}Jb6tiD?dItBn*aEB1%_3>boP&kQqJs^6dXwU3V<rkr
z-bi~KPZP?sm5z`mwX1ZQnNt>#OZSD!on(oRoJs>&d485pQH6<$>{T|*X`mn$x4*Ez
zM|9HAc+PF3iYoyEa-*l6IdzMZMUgyLB~~f{`AD8v98KW>h0WigDOq#-TM}Eqo5qD-
zJgw`cDri=ZJb&`Y*}E<wTN1o2Y(I+DbA~Wc5KUSs-i!Y7q%2ag#Sc(^u`M#eAd_9~
z@rWWseZx(D(eeIAl8KO8HeHHb0al`~<3`7p3lcLg_xrH9S50Qd(2`ni2_k2V=@0W|
z{eKwig#7zS94Z=A#&D4~#pd67=a2~NcrnxrH09Piqyy`E7GV97O|n0ln(Zz{Z!@6w
zD!%?%-vBDJj_|SH?|Q=|OKbTvV;*&zz@LO+(0=yUd1g8h*LyvMo1vyfv_5o!k?%}c
z*i#BuQGVn2x%d0U8SOg~v)6YO-APR)egD|wk(}yCAS#z1+Vh2oY@!UJ!>nh0^$K2@
z{GC6HY3jcE^!T>Rl-=3y+VWw=GX$z<L_;Ndbu4iQscBsKoE8H=`UE43@mFgRTRoPT
z0f@SX3ls3YH|!}ug)#IS2d{3wj9=SEQ~5Vp13Z7^mo>66Av7U!Ule>6SbLv57jg$@
z=rv9FISh%Ir@Lm?O>eSN(oOi;Ic>earSqcSeFXA>mg^2bPmAia2sf>m%KU-LWGTH#
zR>~+7^E-R_sVn@d;ekHVPxaU&nSvz1x`gsm{bPZb?s{W3GM^e+jVWyit8l^_EVKPc
zNf3+lDVnpW8Ji5jmJy73OeWtrX(rtPu?KN+e%1_WTP}#y?aV$gi9m1MwE^Fu&gxM6
zP)d#6yD2Y49zly`RNus=5XThCj)rg1Ubl+FAGYf7**ASI=PMY=lK7yIp=*B^neR2X
zm48+$kEg%O{@9plK-M>fh^Y1ft0(%9+vd^b{wmHV`q2LRs3LY4tm44q{_xi2mrY>9
z^&QKvK&#34C!`Q~=*+Q4p`u9)6vB3ArvIra><%uGo~BfWkLhafF50#<@7ziCJ>>u6
z>MFyk=(@JFbV(y2NH<7>gmf$2-O?Z}AxMXWbVy4#NH-GFjdV+cq`)^byw9KS-&}k4
zs(Y<<ugy8k9B~86i<HklZC_mftX)FX`>4jT+`};NOZr0M`NIp%va9o1{E!b39}gAJ
zs96f8FEmJ|Uf&iK$XZ=Vv6dFPvn$<ow*?!Ds;!TWS)$6uc^!?%tnvH_>-hYS{G;ck
zZiV*0Y}E2G^=g6GA$!H5X`)G*skWt)68Cx4*43f(mQT??dXLhO`9E3<sT^%*VqI4K
zSzf4cYc!F=u&wyVcke|)rY;!ZnZc|%`Wl@yY>U*-vzuLwT>31gY0<}9e9rxp+iGQ$
z*^96>)YgeRCVy4oa)4$w_8qsQLoq?qS0rHPXxl*?S^Gr3Ev!myc@rmrWDJe5bRc4g
z%4>&?doI7@9X=xVozG>MxgJTidvC=@`2gVtL9=~o3|k5X@lr(=vx>R)lg+hMb;r-3
zzLm=BEws_=x7>~uLTW$wkN~Sjo?mU<VszN(R^7QAcnxkHNXWb?hQ%X;2agZr*JMX?
zVY<KSm!BLceBlb<!iGC6Z$)cF?_$8JZS^G`2?Q)(v3Yb!kNOa*`_I;$dZDvKP$;}f
z%s*)-VJ~?xR`&1hN(-NQvL*}qZ@3=>T?{yw8Pf`bLD;#WJ1YVN>z9hYtR!=ig1uKg
zam&S$pG(*A0}lHtP`W3tYu6jt0E<oGOw34)F9C}N=|A94R^Y7281Sv5-D`w2WdT^v
zqb_pzD*U<7sZ46|M0rdJd$L1K`>3E8P~UI*#@w<;ti|}AkFJr<iliW3zV}K(-74_!
z`s}=$B=FrI5%V|Mk{wDDZWkR^wW54_FXR~x9x?2#8&;~wr=S_W0WioU(wRww^S>0_
zj+XX3ckmE!`(N)C43{yCaX(XC-pF|z`*UGh)MunTz463K<>ehA_e_8zk)CkS`duTe
z6KLJ`T6>gt!}81w7E?H8i;`nFw<$v5`xuOv!LcMEnApzp%P=up^x`p?Z@TTNa)MVP
zDW6YRIaJMTwIeaGN+(>rAm{q)hUzeE)~#J)cCd(FC1TP_bH>(MV|UZ08RFWw#8_q?
z;jD2g4uF+X@Oz6UYk@rimYuC_gAp{_;Vu_#Pad!x-rFlKaeVOR*n3#hEjJ6%MJ`x{
zf~-WKEdi_&hmxTTt_X#)F_;%Mu@fv%Mz0A5PY%?LJ+tF6aOT5*A0KGoxCU_H_Mw{q
zpR%<`A|V&p)hap}!CSp(jVy$_&Bv;ip4=nBygekWmZuwF#Htp1vOTjSqEcf;ZLIs$
zl~MX#Z0ptrT1jNZnE#q-AIa^t1E9|2pN-)^{DG66b%*F}!nR;1?*mJ<;ts{>-q{_B
z*vbi0A#%kSbL0DU^CqHHQ{b>hp2`LXg16QkV2wb*V^z|oEQu6?ydbH&(t$KC$VIZP
z>tAWb%`Xx$Mo!ocCO4#oEX?ySJh5dC+?$g-SLLIE!W)r)&qMLvRk3l8N$x%m4Mq2I
z1OrK7X;z1Kvk6wC9zUe>4FZu~P3yvN)FHS19*KctF<39|Jt{u;bo|Xm$#!&u2GXlp
zz&6WES<1tu@xMSd1THgFb8yc|B0Y^p`xET|>Qu!4kkU8pK=Pb|X8K?}14LVS#KKo)
zREX$L?D6aLfL<eqR5yO8edooM2-vyjB@sTG)EB#Lf$`Wz3xwNm;g0xYb2$(iW|A*=
z)AEso6lC$7M48%_M516U+}Nt0uE3pqu#04GFGpoZ`Bdk{cFbrRfuquWc;MYDIbZmM
zGFs>46KMH((rgSC=v;0`O}$kKDbQ%waG(z@C-*PFXmjzI-Zp5|l3^jhJd-o5Yj05{
zYiv7WJm&5_I+00^t*S#qnvn}P*lS(g0VV)n7<=Z#qhQfaOm^4v$czKXs0s)_Iq~9|
zB_zS4faOjUU;Lc?2kwL@z2t*qMt#rG%be?NBHodOwab)~!<229EyUSEipos|Qwk{0
zD}E}=nyCgk0dEd=w|SuILKKSZy=sYD9_%fvmW(hEyl%0cg>PQ&p5G_NqqtDATIm9l
zJo_%^W$z`@b&Dz5Asg!YZSFsP_OS1IS^`l~h!~ik5h~qyDba}&pO*&m&!V^yKSw7e
zd()ev$o~#Z+jU+LmVHS_R8Ee+_y{clR-2_tEkH1}^M@j7PKYF0IcMX#YRqes0(#^j
zM>5Q<uy;-XRoKp{J-cyb=ME*rO2j_-fy`Ydi4dY4D};5FvvUKqGSX)`Rx=xIAV(6@
zOWr^I(Q~aVPdjUAOmeJM9i&rfj`1*sv0it%`mOQl!~skFd_H%^z#tJ5{|ZlnLR~2e
zjOpe{!~_qbKwYZazkP8xtBD@Nv7`vHx5)o^^(gB4$X_$D?!{MF-giqt->GTlag`U%
z6r*t{eT*zH96r`|7P>$<!Y-lr@S;B9C3nsvJ}dt%`9-lDRhek$V}dJ61^rLo8?TMm
z@w1~UZ!d5BDieh&1K_z|e$A*+*1qVj!m-*k70&T>vQL<%{)({U5-?J@P&&W-dLwg(
zQCZo;s4mn}Ue@kqiQ2}p4RG*#ZNpQ9hS(@(!SNFTb$MCa_Nq4DD=3bR07>9ZOOwIz
z0{qC%K6(6K_RZg-gn$2#l%s8upA_K<C4MAG`m4(PioO6(s4m8n0i7&;E{u#mH$%+K
ztF7W&AI4jy*41>A(w)lsMYWrkJ3mtk3o_dl4N(&5UGFo9&&(952rlAzMi_m*)bPH<
z8t4AX^6^V?ncSLzx&C~vdJ?OKuv6sM?v4rFufH(gyjvG=g!%7uzp#%SAPaoI?wKz6
z{``85^_5dl`IzZFG36Oo;qdFzk%f5KAY+WrW|n(Q5xoaa&Fm(D8*3xVG)58P=`r-A
zgeHy5aco;D%@>H%=EHL$=61)ttYm5a7F$I&yBHDZxz+wddy+6wq=axv^8TOanku-f
ze<5;wX!Xk9?jUkEM^rpWNo}lj<Ib8RidXCjdUZVcFGl^(ulaoelF><DocahPi<RV`
ztve^uy@(rgB3t9X7+&$RA!a1qiPl|ZB;OaXC~#NNc}J@}ywk`>Gr+_!wH?hsH`QLk
z<Q?*7Kkoi?W4{N}XccsNFF@5V|AqH#1x=9i%egrAh}{#?84I`+etQP0j4hElVs~pA
zd8SZ)PXz9X5kxLp`5BdhvqFBjk%)s8N~C0xTMIa1%<_Tch6==t6rKDb!VdutIs}CX
zxSl49sQ31I*>*neJaLUzPq-_zk{W&GSW5g0Xne1hmP*XfDqs|XT7we=dErLnd+!*R
z*$Kqk5xEM=+YF$H;}bpVjhT!6&@I<sc@|DV56f&Y)Qy-%{m@M_`gmV&wiCJ=3r|Lg
zE4+aj6f}e*y8MQ!%;^kyH{3aFL5M182$$@c<8$g@h!!MZczbG~HK+(IB|2WF9)tR9
zMkKpA3CaPh^94tV&PM2huTblLfA7~ugd-U}=hL{s#{AXJ>74i1tovO?djRpQNN?T%
zZ?{QiAu*iN&^3?v>x#t9c0>-&@l5TmK+fYKZx(fLRug|rTZ-!HsIhK;_Ge{s<b&;p
zTUtJm?5`|R;~dNtx1P)%G^+v-4rSx(OmlLZ44`ni+3m6FYQiZEQ;FB!+eRi=!75ai
zIo`TEAZ8?IO`QSX%=r%ki^FwA2Uz64-_`+OPq0p~8owWn$Ft4nb^9~)ndf-XW!CYQ
z#iTmF#4zq4z=n`uy8YdR@6vUKZDcAS8;_l%4n!T~lX6Hd$Hr|Bm=#b!w|4-e4(6*>
zR`Nn5<}*V`kxlLWmhm7z1=OLZ!k0<^#U3&D=vX|<&O4sS%}$^onvs4V^v;jcGtS1R
zX|Yg|FSR?be|%{I*Sn>t)zK@|dJBAh>|e0e`BN}Nh1emmpu~`KJr;N@3gx~1N+bJ$
zeYE3;tJiMH^EKmS>-WbW_xY#VWHo)JgO#*kXc_FQk-gpFMidN3Tx^I^Uz;JM?%nGN
zHG<{ES&c{$^`i?tt13Vtzhe^%7st{|oDyke(<;JZ@vea7EglPcm;2%Gk9)*;ZeBC)
zb-l`3{#(Woha6xQIs09nEUVLH@O;<u&;Rwt!kc7=x)gA8JolTUZR9rqprH_7R1b$>
zvGKdV_w_`n5&#xE^+@?pSq%FaP-fVm@<a@vaGNZ!N(kO2)d7e%7yd4QH90FRF??5N
zISm7)@a9&HJ%jAd;K!T4xBRf{{^JjMjFW}JM<|@!aRBC@Q{G%Tf|!#qUeXOuYcep7
zc5naO83D^j)lt|hwzP55U};Qh%V+oBIxkyr=fV~`N3*#tT>`f0_pkFBsYn)d-s`?^
zi|KVZiy|mEFU|+8Kpq*2#Kk0I<Bl14%HhF1%mC@zct4@}Yo3dNYIN~DIWZ8`W~GRp
zqgtT%`tV`AXSd@9kFcQWK~AG!yvOO#$Oa#<FuALk3-uNME7ZG=SqcWK{*B}2s$`IF
zJSsjC*nIA+@*k=qvC<NdOhPv%{*~hWxsp;<GKNUF!H5W?ICFcyE|qB-Wg>s`{tXOD
z2$Ev~6=p&b5i|Id;LP_g1$o6OvHxfd!j>pxa=<FM-D(j)^wB7EXt;<BkVaP7RA!VT
z>s6a;kdwg2JUW}Wf(XM2d#S=GFaj%FE@Lv2z=8;ob-};3UXV?j$-U4Lg>(+s;oIXS
z4X9d16KJ{%7!AdNea^N{$lbI~F6n@GX7fh{vnhOL@X50pB+ib8XoBn}iLWw-XWQwi
z`neW3OJ9M-Qr&c&ziK<2$`K$R^7d^coC%#^k)Zw;;KzypGM|IPb>4nj-7$n!&c-uM
zqX0x|Uu+)OP!ZfYF~Ii+Edo6SaO5)k^fyRtL#vjzskXz(905Z~#RmmWpvBZch6Q$R
zQy^9Lrj_r(E+@L&(*r&xWH*B+dI;Dx=40zcVUNa*aFpTdRVw?-y>pXFFx@YNAS{2S
z>@qf1qwxu;tj6;#dnl&NJ=xj!|Nme5xtohOUwog1krv4m)E7!Paf-^VcDIRJu!XDq
zY<_iW$jM8S&_SV*H24M8^dLg8<@fu2<W-T=GokwX{x7m=EgLAc(>ma{eGkMhUqATA
ztxp>cnlU;t1qNy;zK?!4Qqo_E5dY4{d`O(pDc8@5_*cW<xiC@z5x&1`EG?BU`j)<t
zTDb?L;e<MQZy-9;a__*_aGWjM-e)Gf&LfKCXwfZ}{a)nMTC>|6JiSB@Pq!z!R`e-R
zN8XTwxp${vBH7zC!zoAC1cyoeaF4_!Zoco6{VShoArT$<Z*rPUHfzQ(TjZRUlPMG(
zV*bP5BNRXMiC2sUxSk#5FjN1I`I1LmTOWNbmUW_m?1RVTYw~_%qA4*EkIC-5%EnJ~
zv)`0S?YaofX?P^O_&ORHKO8+;Gxku%*=TfpLi43@-Y?|vP1)1iGoHOEl-gg*besdV
zvK>y#x>V6K%Z*YMX?+!8EpadQt&SgDX|s5Cn$a0@R8ET@@=n-4iVa!n*bQmIqn~(G
z;ONC{PDe;6ufI6tR)?SS<B!juu3+8?ctSexT+8kgo@iYbhHI+hCD#v%C!c9DNRQr2
z#5|kK=8i7gk{~dhqiixk4nU!4RGT7-6x~X7R#J-GyCewv=$laZrOm_z!K#T1R<DU;
zhMfa{;Pgx><Tfg3B1SY%T+YexDJf-@3zD4?C;S8#rQVyZ77V(cKq`j_-plaz%MJ38
zD+;|g^DYPeM=!CRg4?mb@g2p-)kfg`2q{@=)#(6t4*3ZFB*~<D2$fS{O(pSYtbmXD
z;x{gyEcZ1VRi+lPAW1GEd$51$AXbAARUtdP|1v1-1t}q{R6m{BJWh#O?x;lW&n!hA
zcL(^W*z9l~%KT;jpl`t9Jqxn&)^j!Sm8X2W6aBHZXwQCx<l5g=!eK_Wvwz|HhTkfp
ztqbSnLdjQe&(wNs{3WqnW!%=Do8E?q)`imX$G8OvxbxKG;z#z7M9OH8>2@#cp{^#Z
z)X$=19X7<}e>^O_L}E9_Lozq^x{i|s0ehSTT4DroA?anf4L}q)w=R)_nuBye81iHE
zM;@SqN(jZ2WDzKYGGZQbOOzNVgn9#jSq_$lU}hU4YQUHIZ4X8=Qh$?NsilFC?Wci3
zQKJ&3Q3od7U4cc!uu{@><`Vu&@Fve=!!tZrCe}4AOpU5P6#C#XsD5I3;UwWRDaWb+
zgxuIF)C#jxhkX_Tyo&EG7D;M_F!pO%kr4~WCl+edbOYPXP8?p@MQz{_bBCb8r+|xX
z48_=IzPtReebV*W<;s}{qCo+p64aNA+J(^<mZ0grdlEgZ!6!fpYV^N90iC4QFpXr2
z2=WEc{u8m?!pjC96N8~rSiTJt$#Q?cqVgs;7;}##P4&6I$(vVM%38hV1Xkj2y?-nV
zu`v1P<VyekSy+l^=^e{Wjrn8gP0P(&R{)})jprdhVGPg0YbdR@>qyuI{Hk6$#P9p^
z{w1}6i>P70_Wb53EG+21PJLOi9<se3Fw8dIo15y%wg%G_&+MN=U0`kevaXlVO5Ewy
z#=HsW=Z04?<JF6#2NHs``2_Kk9@ht+GM@C;(K`LpbX4!9%@<3b_kpGOjBa#Oc;gVe
z^VXw=vhm&fT_(uSjv_c6k@{%fc2iANKXmepcE>8-i({wWEg~xur%P1_K>{#`e*(O?
zY~Uhm*c+SIt@uF)bMNNEScVk1#t~oI3}xY_CBaI`l0RTuX^~jxqRVE7T3j5jA{+j)
z-#?*@7=AV0YkFT4vknv(@Gv*R$Y7R^45{JUW~~i(DA+cW<eZ3M?(yCYx9oN-7ABa*
zp!Z(*C%?$7n*sb-e9kC+A9DUYC8bKJCd4|kZQmlX5;wk5C1w8=4B{uxyzri0hbpRu
zk}s9{P7XpvRAHB@*PIkcN$%)$7+^T*-4|iTHIHTo@u(VhE0q$=wcX(wApmL54|v^F
z`t4h!Rwf+h<80j~esnspQlXSDF!$cQ&Qg(@kFia1NBNsgt_BpE%%zntO|SWLAOReM
z6M<02+~avPRlYiuCi${DwihAD3)|P9!ui~1Hs!;=O(LN;Yjyc^-Tst*XT01d*cM9d
z!O!WbaK7BWSo?&dC-r1m^=zpwu~bWHAcQV>-U}cd!*9cp;m$-PF1ZoXhnGRXi5&>M
zi>8q>U#v@k?`^PY=7V^*swLE0hH|L0@17=oHkG>iFf0Bv$)ek=+y=AGoRpr*X;U_a
z6A7RtoSUguDigS<cx*m5`vq7K9n)JI=ACP}A*$08Ys%4eq$Ju6udfV+xE0D>k@47b
z#pJ>KFBPV+c_q^>he*5TO{vVJ=b3DLGf?GL=se!GxhVD`lF*C4t=dpP0BPi#9#(x)
zZIR?aOv&?C4}4(7R53X{S!;svql%1YKjC*GJlT9Q57gFa-d2!qi2~Q#UQ>;NfC7L?
z9O`R3<R+1{l!5B{pd-gB=`$?@T1F&K_eiO=0(4F`T^hoJI>()5lZzwJIo}3TFMn?j
zg@DdqOi!$MH7HGl{VuOZkB<#L3hPoVp@opdG&dsTW6CT#xGQAXW#O0YF#C8b338M+
zkPC-TTn2mov+5neg!EJ#Zi_nIjI4S<c8PGk9cgTEBjPEoxLX|LfI^i2*P@NU%^2w+
zeb`Kfk{aJDNR_$&9AFTbVb-^jxz>wrlTuz>=>AmHZW_7-y}<-PZXJuXJ)s)3E^EoU
zwj843D0u5R>caKnlXN~U;oBEuSmX)KA7ie|RlRPLRArNwvN(wE&>52TO<2@c<d)A~
zS;&-sLN?H`%@AVW(O~##s!ac}$y(LRW|J8BX3+2DfoCdfo0-fCi^K@4`cM_Mj-?Dz
zYNBf`lMD*;?(rXn1SYwvz(g0pW;gV~FZ;lc5!x;GcU4g%S;}nd*IHX^y(PAk`MTv|
zZKCysswUS4-OII(iJrM8H<eYjg-OmSAkpPRV&-^NuFL2bvgymqS|)m-n%uq-L?R}+
zfhWwnTC@EWgI_qr<UG~vJF$Q(t$1p^WD5F^->6&KM9bM9@Ms#ZKfWDke&v*-l4Uxv
zRYH|l8ipF*z40UcDkH7u)%#+alHD&2`CAru+Q9k9e3Tv`{P{iBy8Q&BSjB9N|AIC(
z{lc7F+0}K9Z0+i$Lhe*52O6>DvuHbeiNMV!HsCswZ+timaj;&Gkn0m-=B^2_e#?YL
ze5047wgjy6s1tHseP(j0|JE^(KKad*3wWTiO_F6Isp*sK6{R3!<?v<BtnDh}u!_gt
z{g@%u&%%es#IfA*`+F8ED#z0q#^HxwH#~A^#sitBzTphL1D6SH1ZTf!y}bvFZ4J|l
z7W0SARM`{LV-*##-tnqL6iC|L&jegBPYl*}7XQ5SbDJPPY@xNa%50l?^Jn$T=qFca
z+A<rf!HyQ&Z36VR!+n}&&!T795kYWw|8UnX439N|e>3nA!YHXY<?At)a45pKTH<Nv
z;*&!SKlp`lrT>az2LYZS<tl}b5EbTIP|w~V>jtSNjHpCMq4Ji~M@u70)bcJ}hG)zy
z>h@v4k9xzf?R~~4Oo^+-jy}!;UO!0mb;9k9_bJlXBXQIStsnwQ;q#n7fW|&VTSTFc
z(MC+;o}PgjO?_;5WA9Nq6iwJ8dX&kT_X+X4bkSy+#RYv}nVLW2<JYp3iVC_0e8<C5
zWzxKq@6^`EWM;A()*KB$Vx?#ZA(}5jbH)~`X(tr27<<k#<VVqUIqn{jY~h}-Zsosv
zbIQ<L!|9|i;&Ae9bpBvS;$#$-s;bw5nZR5mM&-vU;z}iD;+XPR71)u4${|S+-{{sM
ziNjGblkndQbf7j9<-3_Y&B3{B1j+OaSG$uHAcAm7;x-O~QXnjW6dZ*HHn@O@8y`f(
z>cj%^_uJJn*W!ZiFdaRmcew24e~gKE@`5B<6UYd~T|>2CM0-YM@)9c(Q^irkZ?Ny0
z&Om)f8N{j)L7StU#>Fo7b{HjoS;h)Sf~{F3z(ZlH1S{`iz)0P_^V)T0f0G7x&{b}G
z>w&(l|3mKKopy4t^p7=r7Zna#l}M(+Yh%Or1=L&kh)p{iBEaLpbzRO^CVl{x(!0>#
zyC1^_gnvUt**9d`2*$?`i`_optAGs%!}FqfA*>%v+<JS*p5xz>V@4Ko^nCO$u(>ib
zCENE+R{qhB|JaK`w8?3i8MK&!qM+g&VazAQ?Kw!2=_xtNnYb$8=3t?bCr38yXu&=Y
z-t8nhXmKahQYsO*1kDEWvfeEbj!1!*#WH_+49GaSgQPGc+ihYKAOMf`Z%->;g-BsW
z=)(~GItF363rJb<;`w|T{?l{L!kcyb*q7PkU&SPMUGNFrk{M|m{bmR1Qx-R0R=*^4
zSnfzbRFs9ddz5ehNbQNyC)~ZpP{Vci^HGPRCX&Cp3Ilc`73>A>{F7sLg`t9;mbwaU
zNUj^1WkeKKw%7!QBi<&&kyCM!T^X0XTqJ+L3nYC0{o9BbBlRMk+`$+L{<#^s?qT1&
zCYcbgzBj9O8YU0LY|M=G#51Sp&sJRc_>1h3sGJo24&g*@skLK({^mv>;Ju`P(J^Bw
zN0Q$Bvz_eN`(`6lu=0Q}AepIj;5^UUHFZAN%8)htt$Zu1Iuz-pIp6We9{=~(2+VIz
zvPOrtE&A>loQeG4S&j#ox&G0m0>aesoU6R4n3n{gF7}e{)zXs4-7)bTe<^Ns&|-Fm
z1!qvDjF6{g{L=Ujc5v5fZRK-IM7%*mrquVCDGI$D1V08@C)l`40oYJZUVU&h0y_54
zi50Uy@_Ay%6;|_!5GL3)Y;}zprJ*ebc4O_|c7ECmK(%uE+Lz1NRyUd$|D;jddkaiM
zBKeY^eLmiZ(es*$<JL3u<u{Ccj1+|plq8?8^0{UU$zCySA?S;F2WFHJVCjBhNea12
zgSS(RCMN8Y^q>%?%?23*Vd)J8w^9YWkhS4?>oo33itG%ank>>fIiZwZ$Xc^RlkLw_
zBy|yG$J4Yy_g=~KLZevUg~~yw-v+`kl;%=KbAo$JzCKsut$;OEcf56&BrwSCJu5U~
zKVBr7<oQ<Q3DXgDSse1SWOz#j&g6QNY^IS7&UB6L9b2!zzTmbqKo1)}S`l$e8$eDv
z<JV(wZJa%TCpfQ|D{w&^v5y4r;GD%h&PVB7KR{r!m%d4ND;eHU5zjGcQAUCi_jjkR
zP^v*Bas#jtpdRK~g{cO#@Kf7tqoWlOZ9`QJJCh@68Ew--ME=0m+8z$V9*c8$ADeJ9
zmZ;1f#FV}utTrXo@Dt3hf%%Sk<0wxV=7%x@Z`65bfBM%{B=P3H+S6H8ZSh+%o=$mj
zHkZ;31ie}GHNydHcX4z67c^@Dk*mOyqDNVJAu>N*TAs)V@lL|<ehfEan_kj>lGfV8
zMif2Z6K!D&AHDR4PeF%i8%!c%^CA1EQe;7E&HaXy6J8MMla?ECB9rwG=ZCEP4QA`$
zt{Wapq4?5W0c%aw1HPGbIK~p?6AmKAf3>m+l<m5Sz<)6T|KbbF=tk$PN4j^VV%T$s
zRjw~n(tq-&z*OHUNc#`-yYJ|239{o?Ha@jKo-q4;i!?C_enD4tyGi1~$A_*FN$2Fd
zDyILd<#Z_zdt>&&Jg%8+{VIP%`TXBKMa)cfRagy202%c0NUxi5K#Fmwbv#4DQX%`p
zFo#m${6C}w{*TV<vB?j#O8ymBOrBr+&Eya|Q8I2_ghScBcDGHHbmXe{zuL;2a+e_$
zbft;=g{huqaXyYqw^lN5uE8Oywbb3#RmgM2s7jCG`I^_=q(easJ^<sdt7Y&Yvu?_C
zMCrF4<1bu#907uxz8U=KLrNC$#dr@ms;|N)R!GrV^>Lo=#a!+Q>C&u@KbzTH_YtI-
zlE;dtLSA<|d%@pWE}wITFKx9nxG`?kA?+W}JTl%U^WtT?e(6|0I)_KrJY6O7i)QyM
zpZbtz1eny#S53}iu5Wb(XPs=WV=CNRyL&cKoFC#-XC^!!Y;z=Q>(#T2lrq!|2LCd?
z^u}Tvc<FeyAo)e#j^ihuFvDiKmtax%wE?r%>De#Vrg~9}!|S$0ta||xnUsfe`)dqr
z9hlc-HI^@{o{;3D(EZrH=Z-~~<xp#n?mZoQff~c1Ceo9#RQv|tuul~xkHicGN6Sy>
z9YQln{WzQnK@|+^io*q-F?Q8t&<g6#q@xm9gx=FuzaL}Hz-zO_juFmXWoa+O%!^Pv
z2r5LeeUMEE0$8&Y>ZFj^-6(aAVI}b*Tcaz1n-04XQbv#{|4}}E=PaPDqHVPr3*2ug
z@45LNy4O2%RNg)tl)Hj3^c#l~pHdFA^|pW@x*HS-$>gSm2L)Et&M1vpO%s1$dBg0b
z+8{xm#LuXc2Unub`4eOjZI$<e0`9ntGNGXLilg2XGQuWcyHFK+cn73RxRsl{mj&KH
zM0YF=6Y$pS3Ux00?thW?d(&IsLM{cpU+{*kH#}33*bf?d3kG-;P?rgaT*1Eh`fC`l
zz~@JRHRir+1xYM+)lEVs=xP)`JcR<BF0dws?wM42a2tWRy|FLkdtyQ$3#TvAc;^2<
ztGwFg%X-khtHo*|$Uv24{C|;-<&~B9L1Ent<-P7@*?6k&$9<6tT)`W(UzrE#LyFNp
zdWiurbP$YMb?h-gF{5+D>wf~5j-A{(bP1c3wXY&evv@0?YV84@kn&+aAc9_s;Kdy<
zLdvGlaJ%*UnOuPYmrC7kqd-~1ruWwR5qkZ|%}-{Q&VZL=0itLPga$y70D!p9-Dk3a
zfCz85-4jCE=KnZ9#$1m*g=n%bw%d-HbWR_w`3chNL|!<93Sskp@Jl)rYNzBmz87UR
zSZJ0Gc}^-25G8krBLJA=U2Xf0^`ZjM+HV1*L#Tp6_=K8qAdlB!r=}s7o(ZhaLYQZr
zcS<&~yJe%TAfVkmqx)YiwS?cH7=o_v4~%EQLg|+$E}BJ6&I3Uds1Lh@qWCc<QQtEg
z#L+o2T0-*74}!BVTL}X)ua{aq+y&;L@U(Q=1zHlfC((yeQ}MSM_*XoF0eJoPlR>zi
z7p7oitbC}xa0B-}DIZ%1fMV4*C}jSxZ6<FWDWD)^hAU}-?0m7r8LSMyTAID#9!!*P
z#Zra|GvmxNJq^n8g{yJ}UXO(egO|mccKbZpn=%V_&GV8;ipJn+p&zr{QVZaOZ98hk
z!@M4oSje@Q2*SoFe>zl*PqoHwUP2NB&vqFu#DbGp;Z@s<w`eNo7@(c<R~)ps(1w)B
zpKRff;ko+ezf^I+MnCFx=1L+RXd{<k3~dy2dpPVpRuiK?s7WN{1D@xXp9HWBEA!1{
z#@J#*;N|Z6SKejqPpnyD4#hb@1b!&9S-kZBGcMBIAq>1C3ykLAYM=Viw_m?AGa=n}
zM*6Xk1mVSD94B<s{G;QDJQQj+rf@psS9{7lLz+GFd?11Hz46D&r<7ZOI)}r&x4_>S
z#vpX{#j+$Zpj(Dptwum6K@pUYnteVimAHb{|5OLOG8DKg!W>R63aPfU{;SCWBDW~e
zgt{H)c?HX|9JL?|-8;b{CkO5+^EmhQhWMOJy#@Q%Z#jzNfAJdX=0q5QiMj}~)h>Gp
z0@r>WO9J!~))^4{)vDkLDin!qx<Fkt5az4}#fL}ISl?s?-jW3ZnG?}i1(mWq`IOGS
zAUhO>TMu0KFI*}xx(eT%t!Ix~E|XdDDZ9Zc=oS8s>kpP`h08E@Wyc&8<`BKF!hR4M
zJ6Ie8@5o+3MSH9{+Mfy`JOY;iyeA8UrmrlIR|z(Nm7?whrt+*C5>~Cxq~?D11QHH}
ziR|g+pa897)!LhyLHMNo@X`KXk?FRvi`r^ZL!OQ-mW2<KNPy|j8f;d3gk1SZc0Y6~
z7BrUSqrsC#3zG-@&2zN<6L?b=2+WU$fY~fTC=$un!pz(j7?53@3rFLw7uX<n?&rBw
zzvBFWA+R7kB?4tb@54Zd#8YS^r9iy_1qAnY^idDldH_(8Q<A84cwUs^Lj(cy1OwL<
zOaNwuJauak&OptH4v&%wZ#`!9dZc;)DnquN+-4yNS@}zYFrlsIfbQ>+=1CmM5MD@#
zKlq^vZ?{tN_+P0hAKvjYLn4V*K8_h-PYv4hx7Ytmc*C;iAq-eB@8miEyq7L|lG-*v
z0E;4x;v>Y<qZ#}RMFeneK!2I6?VTwMg!%@P7H5zD4s-{=YOl{@@D08n*kFFQ$6pU$
zpn?)8zx1{Esd`yVf#DGsVu%NlhoAX<Mj6ER!ki!W0q$BsrEALZ_JQaL+2cYVTC%KJ
z|7ix0IDWI=`OCI^!oip@koRtCwZfs28wxM4MF3fuqV2Bz*|NTp1i?4I(Wq@6fE7{N
z{7HhAfKmJQ81_^RS;;Y&1`iz1oAY_M5T`9g4UeLO!YjiQ`5F+9+RENeL54@=Q5r&^
z;f%HYEZ&$&oB^EOhZeVe(ClWi))DTZ<to|%nE8rCeF36q)oAPG=b*l<xvuy0t*r53
zET+KUEVuHC^ik{i-@s!3_>SdqB#d|%=R*<fjIbO<f{nnod-y{X0wfR*-5YQa=@?dh
z#BLrsajZy$28csW<KyW&Ku#Mf38y}@pno?861(q_ewfu)$es9Ewr2WXmUzTwzn4D5
z3Bc(DI9G5mj4(sUVwSdfLv3Yw;Ug1vEe46m>k-7`K`1)6dC^OLE%=7Y7eJ8Z^?`>6
z;(4ZJMdP+nsGXEm*%kLSWTDDG6&_}}Kt+eT=rVd5?=}GkDsCe5#V}xgT6Lfj>bXcf
z9+ZBdUWEK!1iCE1I!D~3$F3Zr2CQnYrrBXVNE_MZdpb8Su!K>vONR#l1&S*OZz7rF
z*Rlg3FNcy|EAA5zLz}f5q6z*p2di@!awirDjfb+!+HT*xH&8Rz_x0ie(~18I*7#34
zH0%m(=xE)X2_PrAzZQi2)|Ubt`auw8L-XHq*xc6RGQcuDHRX?B0KK0TD$LeHRR*E$
z5b~bJ?FlTT=H2^&@aLkUph1ccV{67p6cBT2HmrusVm||XE&S{q)Wi>@ny4MsGTDB|
z7D@v%OkX!f;0utTjw{OxW*v2*urMNynA`}TL7LUd7ki@Cfi0r%i{<aWti`$kC=hj^
z#!PwQLI)hSzp@RpFi#;tQdCm{fdG(2RNLRwqyFc{@eePJ{ii688A9Po1j;lSaATYQ
z7702^lzR5{{LhV;yqTw!>kUv-PYRE!?6c89VsUL|1OidvfaX^}>wN<VK<@C%HPO(i
ze*y4ULW^%}R0hB{sxU+bC6A0&Fr?%tT=bc>z3s@jas&y&Ls{_${l%?c9!LRx>#beT
zkTv|<?<)tK4n&`qG*U)}LY$QnbV&mZxGdL%b6kk!RvbEf1R=`OHVtc5f~eG&og+<Y
zZxyw{@j7Al!xm(tA^oAB5n}pg-5TlrXSk66Ef)sQnm8?rP-Qw$8>Vi4dO|w{_a|S$
z0Xhq*4)8w^kj#Vv@g;bAZ`lB^vj#@#zI}zBtu!H|z>Eqb3LM>keJGaH6d>!EN|+%&
z{huMUpI>?b@3RK-xI%U#x_<@(r31F>0D{192zmK8G%@<MtK>dHx@U)k$AY0)1&U4a
zNCqLY6xpb=V}#U<UYrr|KpQ7XcpE98xHB;BIY4+OEwVB)AH&T$3>tT9zs@CV_3Jn+
zJp*VSsAGQq93)7f*}O4)IH6)PXxxt=3oYfvg&8K~m#nqoS1@g=?cAC9B!E3pA9DBE
zYc5ELpH$f86Xe*o*x={KGsy4AU1-o|Erj&^M*&%u`Z|vkP>4kOR;kj!5`v$O^jiBr
zW?+f;oCS{y$}kExZ61%H#i-nM+Z}@STszj7@E-#hwy6f5slK^_RmaF=`mg;tImsaN
zE2W3VWDpiEOP*T)^?vVWG3^E8OCULuz0*V*|JlECTF;v;kAFN!Fz#-OL8%J(f@}ho
z*l$$Vmd}u(G=twbO)XJC@?2S6E{gx7AN{Y9c#q4fek1ed8IMP~sh+7oC=MxVqyL(!
zUwJd*vA45e%VxO4p8J6_&hy%9`bi}f9bjJ>^Ljl0&l|x09_Nbh_g4_QOMl6z|7-1o
zE~>}YhQTwmk!O5dw#H&Pa7Zh7(Md4+Q6VlGvY%vN+Bm!K3goV^ujE9j8$$#l;nD8<
z!v8#&uVJG5kBrQu%tQW1Mp-d;1^ADZH@-7w4uOb9$FBKbTW{ZHc6czn@P>iY;0t?>
z_;~#B!DxJBB1QyVSvm?0V;KIRXwjEv96QagtnJC;M7;O?CKQ%6qOlL<EmAK2MY~JM
z@V98^#FChviqxtY<G%5|TY7oKr094ja{6a^7duV3=Wif$8LLl9h3|CtUxj;p{VL!^
zf>fH<Iyw0xfxz<(C8R%oReF9&aK8ITnJiW?bx$J-y-1Luam-ZzO@SJptP|}mZ4H0m
z&%RS~_Pu|&57MW9;0tl4EB||w;4W=PB4^qCcwpjZf!39FxWUY>w)2&UN_8DuvRM+J
zp@*O3Pm_PNqzwilzme(p+?c@g&O`*?CWs_<+g~fed+bMt<k;l%C&$Au*`<sXJ@4yQ
zW;?i-u&TQPEfcv}pH$H8;NVvf>Km;XI<n~AEB}?V(+Yd#1Z}}2k@!!rd{r|d&63&-
zF@FZd%gd!ComOB}Fs2U$wMkNu0O1;f>b9*8_;1v@?iJiP%LV=;a$OPjnF*xsBJqJ8
zndZa(i%K$A&1?vr83N2?r-ra9IOhBBo1VLf2gy9+H%Knn>_qs+<TB{h4(Fr<EIBn<
zc#c5+)vc@PjVj>Ls8~8=PwTMgQVev?Mb@`=9e!s+4m{g08osLVr$axhc`2Vo!YJSA
zkh5OfqT3)6AM_hR3Q6R!lr2<D`Y&o36b0G#*Ucxtb&YU>_ym3oG&=b2pM6F+^AbBO
z2X_5dIZ!_a9V^586?!FzF`*;S=3|WVNjItwJ9FsmUjRX&v$W$NAFI!zSf^?~)nbrv
z`-MYO-io8#Ok)I6SZYMh_xdBf;hR-!qU>dzNYf`qbj^rxGzprp>AGKlyL{4C-9>@I
z&5k$jv<j<&KkZ7-M&_asB=Ia`M)*TA5^l&Bw%z_#`Yihcwx?nXUPL6$AjalVdq)UA
zaynl;{rXS#{R)V&?amj1i_+(aqV8(9T>A?;Ximr0cBm26th`Ix|L#Iz5wib{k`sP5
z=uZ}LyV<P9cGn1%cs6YwiMXV09E+eJawBW25U3)Oy}wZw?ZM_xhkPlEWb%(@_z!}y
zOdw%I6GO8;rJ@U+P)w}{8wy))vF{lhIX6~bhn5D3;}dvW>Ihi0_xwFnzhG6|{OM3%
zC;p!An^q-6c=qiwaTiJ&FI(#xLT_&;U6!GZyQUv1K}glHtHYK})-5B`H|2M(g@l+i
zSTBuSl{G1QCA;XdvXVWIa0pni%(CZ*+R93XgH`;DhNc7Lpw#Nz;*oUDx)UN0E`4Zp
zN&}Uxuq4-n)m{V6B^m!|Tkk^r#x>N6I~vvq!;Zr1^58O>h)W)FI@<hBQ*GM3+j3vn
z`bY@cwNb)j&%R-fn#$%vKX$<fnxu63GDtbS)lJtv${|KH^cnq))#&!UUsCN8ZU#x1
z;IIS|3Ug*<FwjVT^wz=Y8X!>88rn{G5I8;AxisJ-`3P7PqvUT+j$m4i>qhi{O?Lyk
z_6h1Dw!wTwEExakn(YUcqJpK~uYr{gkJSA0Nz+ItHQK9!$=@TO)sSWKauZuy09+FL
zN%{e>6B`!y7ESAD`slJ^a!&jIKsEd>GsO+|w=qz|KefzxA(P|M+C5^26>OoMvAWKk
zP)3u#J|pa#zM5rCH7qFZ%V_Ec3zIOjoTinFOwit^GjMdkhpUyBEC9$u$EE56nQdfL
zN8k#vS9>xXW{4A8p(WayFXQYYq2N>3JyX#|&jK5uGqlTFK8Dw3v%5c|k<Zi$15?4q
z)mhD9!fA3$_eN<zI0<Np*5ZnsY;+welVb{1!Pg$BNMu->E9W)E?Tzwi0Ws|Ef(|UW
zfz+hYtwC3ww6j*$D-^t?Nnuy{tZJD38LxhrJ=;l@dwOKw5$Lde?lH>q^(|=m)b>L3
z_j@FgXMs}Lw~K;>O8PrLL@tE0<1%SYoQ<Cy;#%YBLfkj&{KG+iI=Fj9<qF?*EEOs}
zyA;}9G-5keY@O+nE<)+<gIC5X(T5>L`3`W#$87E?>J(cGZ{7U&cLN5CqYZ6^(a3^G
z)-%%qKC9Y(TRvbiGVeerh?0)!ezXGSt{cNwJ)m-q&HdR6bB(4Bkfp9#^Lk&@Np`J>
z&U$&eSYQZJ42T9rEsU^n6Ch#+l;s<ck;zlYiWS?wcdmMckBBL@Lr@d|0&Qqutd8Dm
z-nk-bnN-;$4eUzontZuJVgqONEaUYKrric;QE+#LkUJ1)V)e*Wl+^a_7s%1K26iLU
zyg+(hdPb)9f!XcXIsNw9q}uS9VzI=afeY*~%6-vE{W{5x715p3-_zaxNQrzg-ZIA&
za^H~nm2w6Q?_+cERR_1H?!E|qEocvr5>@!~vXbJ%n!)Nzjl$X`@U2}sdEJUdsH5}J
z<GZdf41uy%clBo<2DI&jxnNY1OWVj4H4dVN^{`#%9$vsH&L0|CB<9H8N>HcOa0~D+
zOKk3M)50if-T$&F$Y!{mLtTl-i}OKNxC34pHq-CGAa^(E%Pq4<thuh!Zs5%=BYXRu
zjO>9RQ{l^a+6XJM9I!99YT?I-!n=pLnr|g$0aa<CA4{)kBWcdkTZVEu>Ac}@Q1UTT
zXUmKW9Ww3*+jA$X`F!u<_YLNuuQ|3b=^TY#N7<4FXKl~e$2KH&h}TprcmMm*@q*dh
z*Yg4Ksj=?|gf;6!benn@iQ%IK$#HAzi<?j1B(2AHnQc5`vhp0h;pb?Z+`}Z-OOn~%
ztEQ+T2I^*WCU3y1;YpSk(oW5ysw&KpKI}#_fFJjJ`rgCQT1Xy^;4nIsoRgF|_5N)n
zv5<&j&PoeaRMOXpr9z136ug^DRo|F}86c|N+=F9u+Gif943*w`clbWWW{T$QgIt{M
zdp49eljJ;h;boF!{vmSQ3VZ*sPhKDX637b8vsp)mK@e5$E}I2@aOiTWBbc4q|BV<<
z97WF($%THU9%C4=Dp7g4<aN{v6Jh#lE`2Uth-B#~`e^BLiE;Z9&0^%&uQU%yrc;y&
zk|~rtF2}VbuGm-3L5x#~K^W`UR2{Cr+7$7;S#B&M;b$Th@0m{;cgXp1bT!m#tv-!N
zJe<d_?5(-n5Tk$9Ec~}e=5@j%Oz?0$HF30s>&<e1CP(RcMVuKf+(wO!Usgh|>siZ9
z?T9CDr<@Z1ti+l1*Q;@T{Wl#9+5AMeNa5T`6Bcq6g7h8FIL?&Deu@pj)O3XQ%oJiw
zYa^A`?RD>Z1hx8Rx0<b^VpI{MVkS4v5304b{W}<vq5d}1fvA_H9{Vid=BWEyP22j!
zwvZ_D5y~Q8Aie0mA<nn0p8SsZl?_9jl!(Jyn0Eo)9n|u+`dfVY@D@mMqsv__2>I{?
zz*SC10vtT!7tJTgu{JzbPt~a@si_5jv;-JR;D~j0q*c@4mPm_9J1k7Kpm&5(fBIC&
z92t%SE;Ym{d!TiMZBYAtVjll%9e^kE6#2)8VH0FfMMH>o)Jx6SPcftVL{mwSuIe*p
zZfsD{a^YB;9@zfE?-Mbt?{gYx+kqt&E2QH4T%Q`?4;GH15B>EgP*SYD@A?4Jn(HA@
z^b#=1<oBt1jr<aF_Uc05HXhp6LuvmD^6X0GyM;cate&`TQLN$xGG%tgcWF{U60rIC
z9T^h^X!H2|eSsrn>fhEgdIfOX>R8%SJ}6Axu8cHVaF_BQpWr-r#<#>U)LhFv-|?Wk
zA9U93AzWf=nNLC?>tmKyj*v|)0{!$ipfV$`d!ON_>bW(r(*0K#_p;DkDcLAG5$LXr
zDKa^<RAr}F0EJ@u-gylO4*>Z}WKJaj@26Tw=~?AM7Zm&XJ|8(x><$Bf3=8H%z%B2D
z8h~@WwH|hT;W&7S*53$oIVGt9`aDUy%n8UVJVDmtwo8?T5ZJz%YKVLP15}^H?Awqj
z=mKU;301B8?l`v?$ctv<KGNa#YdtXW3%e7`0G7M(F%>SCS#A(Y@e^)qEYgszbKa6J
zJ^Xx7sv(axyopx{G+S}}3u}=X2Qo3_ddClB`w&)|*VA!=7z$KEV6)?QO&%!4=6cch
zo4)|OoZWoDtM~UW1K}6zS6bwLR6w=<h6V^h{0Z{vtFlH2Y|X?v9y=2f&_S`B00f5x
z)Ljscr5zlHR6*#nxt`EL=RI_(A58ieNZ>ds#p+(quV@HERqvJXg@2H*4z|Yji&TUV
z2J0*?okCB=A>^*?cn=+^p%5nY^!fn18L-l`ZghHtP-5Vus@KV4Ah-z68{iJv)u643
z<pir_k9ZI|(+eHOKH_Yna28Lc8QTmWqdeDE$OCEUYP4HRksbvzmW$39VY4X;+QnKn
zAuP*AfkJECVQi@5hCJ)zHsJ4wevQ-efG>(nVv|5736;(Q8~vdh<+s;3N$@igQjWK(
z*mtq*)M@ly<tUJi`5^vqsG>HI=}1BOq)(-sstqJ+A@|aTIQgM+e^>g*k>vxri#E}r
z%=EFAIcxz-hf~}~;j!c&so9V{>V+EHA<>W!gVujnRQ@uW&YMVf_GF;lPhE2sQ&5Am
z6`9d53ah;VWhz<CFV;ZKV!dP%hd}+{z)-&_U5<Iw*mx+<-w$at3%s?5Jm`c!>c56`
zCwb-k7KD6>EaOUh^!X=W>IgO1gIE;g`k|0l<Xh8Zk2h0<lf|x1q+sJJC=Bt-x;P;;
z3OZ;IUV|~BNDOxirF`CrhUb}cGf>Th7^tR0gX$U*@m|lih0N~YbFgAU5;uB6$H9gY
zvQ&QXm&F8WkZNUNb4_I5e*m@{8d574Ta-5d3QxH`*SYJU%ZBEhr*@eP5Fo9uCLT7R
z*cTW%9Tudqz?4K-yBu;r>JMe?WdYj(jNkLQ#UF`FjZ8BV3QB*N!vcb>bMj$4@llC<
z+(kp^C%}IiBXxO`#Xh1jFk$&?REyujz}0NU9)pH*ZU}ZISu00{??Bb3KEdH19$S1&
zK`X9-Bkcl|al2n1y6!ea&q1`lUl=Z8Dgkm0eIEb#7e_uqDmHI;%6ov^EN(yKy=zE6
zgTxZgC)Qb{U))f2)Xp!>hc+=qfR;OEj>rzz1fihY%Pk!0A4ApMui||Ug*txt)@Kze
zru?ZDyLmv~UuIUB_W9v7A0!0RlDfjpMgcA#TeXqZN5X@#i4m^{3qd(4oG<Fvhfo)E
z*TSl=L<erO#9Hq<E}%kn9{-obe_<mO^o5erm&dM{8B*J@nk)omEym}o6apZ>GLQN(
zc!m3c3J4&*2Aws;3my)#^yh2117;`WfHE0llou&7w0!eJpzL@(8vaArM*i!vZ7@RJ
z%)OMj1|(|8?j!+gyHGxazR`Z3V#DVkXt~DyH{NAGH?VtAlu)Z*9P<3r)DQf}?ukv1
zTS<|Ij9D%oFq9=Afjeauj;kAj86cR?do6W!NWhFNHIt1YUr>keT~qmM2?{m2t_kJC
zL;1Oz(Gv=$hXMRNJnWo*-fAo>0%cPxvA3+N`Z+SBXgb)NB<OLIB%z9>AixFqA_13&
z^k1QZ3;B%CDi87pWzEd|B1GvlXhrWY@zL<XNuZE&rz-)`%R$-)x7%1vRccxo>gGtH
zBN=eD<N93-2PDKLWnTuheno@2pWbH+NcwOjx*VF9Y>YLk7(gQflh&X*vkaiWPcaVO
z#{+SYY^T)K{BM2>6=0FAMZu)0-msz&m;wDf+G)wq7@b^0Y6HBr04y)7ey4}%Odk12
z0~!E3t1c@qprskRw@r22Od$R5oe!(TLj7GB>AD4w4hyWbCDD1OT|HYkIP4x^7v>Mr
zAd?O!t@XdD2q7`^n?6z~3WpED^o)?wilPE@U}jkX4?t|nWcfq>v^pOVW0gn;{KLN~
zJ&*!{Se48xa<l)RLhpnhuRvM&yPQCBWN6kGa=*;{J%|dxM@e0iI9<08-Te&^%U=6#
z*o1)w*{+KgdPs!S$AvAqp%ZF>d%2=~{zV!}IN^zig-ZT*{Q6j3Lv5;f9~{ZR0`2Uq
z#yilb>;ScOFpCgD-WV-J<GW#YLMRs2WEJTxc;iEZf8gNAq5c<Cq4J(z$m{*V;*sy<
zOZTFJXtsbn-Rd#1D?+|>Q2a|C7>qy+F0j&1ZM~n@w_rgMKgvG<<MpxB<<5o<)pDU2
zf=%zHBET2|m=^Z7pyYBFk<Zl*14u6-#5iy=5nnz<ggUdbv1*;{6F@%!UII#1PC$@=
z)L`7S95j?`8f&%?Ap3D&fgdQ=j1`2B!TS2}>adCpk{+~hX$XHLB>Y$9rk5zlP{9Qi
zn+ZV&sciQ=!lo@T$SD@nr1=<t#96ydy>31>=xhUh;b0+%TH5p85NeoXhPp{HDE<RX
z1dJEZG4P*9S`?IwWo+MDp!SqtsB`J}KP~8o02E_kP|<*B7e@=YqTA){o)7><TBSCk
z9|p>F`Vrd)JkmLu@P=H)3lC(94lWb=Lu@ptZ{IDQ_Xs@=1QcB!{JWFVhD<X?rSt+d
zB_@5$K<^4Q$SBi46lnZcaj3#nyEFK@8$O44WKvkg^a;SK4j%~cW#ybM4W1&esyuff
zFoMQQvvnKd%pn?>Cb2`QYo}9yy|&$acip%kBHsIMe-2J{d9mH><&hKMCe3QiUgU2b
zwuWn}j>hyso%6?GbEM$vAg~P#khmu}0}4cQLC{$G%o))%0?vfL;f`?*sSi*I(EU@N
zb#>p`0!NUC*aJDl*bR%T+&?j7LZ9GV*p&n{L35X;LtzT;f4ulyjh&JKibuEbyyuXa
za1orTi+YoLypW^T`wVT5X9T>h#f(nqjBv)fhXBU&A*eg<*c&pV`StbmVdNPgyu#8E
zpHBREn4qd&76vEYVL*ZC)EOv3v+B!<T!#5rd_=Ev^Pr*cP~`Sm{!ve}8|z__GnAl&
znT_^Ws@cV0*N@T*pRs_0gJxmmk2iE4s;Br$4$d<9&VSP%97q-b*jI!fXtz6S1;l}R
zZko7oc_Rcx<{de;Ru>ELJmJia0xGDdY*VPgkpT*^l~8hZDZn2ng!-9j*)T6IOekyf
zT?r25F<HgZWw6paY8-I?D|-0dKdb*0y`8;B#KJK&dRN^u|DrrvYrS-4f)vYBwf<g*
zlDvB6`d`O)XEypRwEKZ0(rAG0;};%j6iUjwT}n=1Kn5&q(mR$udNrUi_~z6N?08L0
zYgjw4$1`P)lGP#&ctl`B#?>F{6XJ~q6=jPy;x}9%K$FJU_itJ+l%~t~7WEMN^=$Vj
zk5%7rgi!FV0SPS8m8D;m?`WZ%WE(XT&g2q9Q3uZ~<Adc`pMP`H>k0+b?4lF#zXOKR
z^m_V#!5_x^1lY8LjYzYq;)PI#P6KiRyldITJ(SA+^P->dAk;Jqj`okyuW)}C+-N{Y
zdmM>mVW$u}ow>6^w2$Y--c5lrS~Q4TQrN?9!I4js9ot8<cp(PGTqz*6%IyIiTj+3)
zpUp5r4c3`}A-niT73#bFfj0Qdx8TTTLw>G`Z4E`Bs(p*`ALBWHmHQv#2~?%$%_%|~
z1fv)O{xE}ythZXQoU#KJcV31FYg3yl#bT9=1*JaZvW!~Zr^TzRvJTs@3m+?bp#1Cl
zWAe^i>U=d!v(rotnZR;1$R;n_NHRgR0JSzsz2)rktFY_0ZIy4X_UTPr+FU<n<hYjO
zEl;JB)fr~2HWBk==%@a4;>p6jG>?{J?HSHg%I;n~shzW}N%}RGm~>t0Bu4*EI&i3s
z+}SWto(lb|71ub$UcdTLT;<BGjm`AiHMc0@^iv{wY>$@@j<PC9xx0j~uh50ieX3&f
ztTcE}>4hS3DHMu*TaLyiq<1nS`tVb{KLS6<Oso~(h?5kL7${%HNq~qlG;Txn{R91I
z8f<l&NYM**Hf~xt2d>YGY7E07UCO!A<D{tNYN7tY!uBEKX#+EbG;rvKOWm24Q-1!v
zL{VGbngv^ETrB5G?usNw+YVZvh{Ve#{v;q4{iK*+bm8AaUFkfnd8l>u5;bZhs4@G7
z7f!ONf)lRm>Y2xVqWAvZtDLRnx}_+d0Y{DYo{Fy5TSB~fpFQmPC&%+`weWp*e!izU
zpPkPQy&`asjE0uK&%8>!?mv#A>2t4NN(^K=!;U!FDJ5go+@c~}FIv=Ks2-AH>wSsa
zd6>14quFk;bum~tL3d3@y<VWHh7|Ap>`SGAcVZQ|lH+uJzY8eXPyXqg?c$br{j|5?
z?<kE1bYXH<*~)YlYvj{6(z_PIB37y_b=OgoU(7C4U?sCk;6?9}x|H@doB27fTHU9!
zO6@XfGPHD2na~<aqx%h;fuHfxgLd1jK@DuDqrnxgQ8hdx<w=ZlKP}u+1}?Oe?-m|b
z$I{-7c7_%#XnsakCHX&|zA`MX-gz4+EyaqvyHnh)(Be*UhvM$;#frOIad+3^6nBT>
z?(Xl|eSZJ<6S*dnnS1U`CRz4m&o*uGS~eSQ&q&ttZZ_qw-qdO9nU~}tD|U+AEA5+0
zH6J6qc(`1NLS@Qw-yyc}_4;jb9T-kJX*uC6&28~D6HC=!nLl4W67h!$3AAaa;wF5C
zW62&0;%Bp|a^4~-#4d-Ww6g#WyhQxa>4vq@eTgZEn7kOVhI}ds_^<Yq->*Y5doe=D
zNlK5T+)+7+W5b?UJhQ1JV7}V3lP|ltqq-2srlnj->`U<Zik}|SBt~YE^CJ(vb7~I1
zCeIWimt#>L7M0ulCRfud9LpWpOP%!o{Q(<XJx4MWlh^6(YR57Z4TKWW2YHpX5g)Xo
zxgwdEAzeHjpV!9k6^egFuy?7o%o_M%ag3rw5o8_s%HQBT*ku2)v1iP8){Bur7Misc
z+HrcYjs0UIOE2N56WfB4%`IAe_2*Az`^R<yBW1mmD*-P%eK7wk0Q)9rL+U5p=$`93
zbhvvD>*zw8l)K&xUZ&aa%=fe1MVx%odF^}@??l@-Qg;7snV>NpB95~KJ{$Ifl_=la
z&;%*iVBe0zsGHiWO%B#2s>ezcaLCVjn7e(_rIz)nW4~b*ycvExKM|B_MO6s0&0or%
z*to_)CV3)^ab^_2=}m4A^<+oQ3eS1-{kRwmmDRr$$9zqSOmehtDrSPqQf=#o$!#LS
z>&X(r2k%i^!YzRFH4`V5-r84AG|NPGnc)X_c`7ENWWEY5=apIfZs$*V0X&O{eFf{8
zv`<&XL{%DZq$;MUh|{m=IZaYxj2*A4T95cKu8RwF%%Ha`3RH`H$HXm~mWX?GkUXZD
zZPDVd$dU>5Qeicl&044+bpd^8jFVUMv0i~Z^5^elzGq{(R&*43bQ~VGXVWCoU$2Yu
zYSi}m^4KE~iHs_EA7ROKr3F)&68x)3q&vqC+0V-1;8iqU5bB2pwU$2SSPr4t#iIn~
zB%%n1j?O#0BZCvUApMEzB3z$=61Y(={?TZtxZ#cYH&fjnim*E28h0W}pto)S`ro#}
z7FKM9eNGPX9D4c*M*%Xpm$45t@%JJYolL(cY^<V%xht0`4Zh~AFB1pam)-fBgi~Lq
z;pNH8?r6P&jJN<sURTg;K-xBdw&RaoFH!Wz7eqzs<tRj+o)F>AKVRUC8trDj0b+tr
zdxF$+RQd=kZXq~SZURK6^25d2MD=tl+Rf5z8ghPiS)ZjYDt~7&WL4SC4NxOZ|4c3%
zqD-NjGX4G4g2TStIdGrO>CSVptwu%32<u92K9EIv3if9?e}~n&PdCemSGrZ%{h*Vd
zAFk2Vy`q7$X=P@!p}3Xg$iG^R8ABNv%WK$T#}8JQDHxJ@Xv^_;EMsZkPS%eStRM{X
z1UMdlk|y9rFg}l?&`LJpF<Pyu;L5!~wRL#S>i62NT1DtjxiO@Csmyy`J4DCK>bzv<
zi$^V~Yq4OilmG43pwaq+WEW|g>8euNd}a`eX2Up)r_=thHUX7UJJ`^nOn|ti;F;V(
zD^3HrgZNfPDIQNLZ^DvtmFSXPPUg=36*4y2(f#pexSnIo4!E4g6DKLz2rX|S)~{)8
zVO^Nd=+7`(8)*#dJKIg7(1m0bW=YZREslO}=26*~mxK}u)p4KcL~$_t^|x<?4d<b_
zyFv`LUcldajg5CuyLuV>k`WT0nNi=D*)@JA@DvKdPd78HFIG+FSkQ_&;Vhn6WHlS4
z=z%;e(bY-f(B!JGh!vqh-s?;w3?!)>%t1dO<?k(aOTd?el{lAhN3YVNY1c>+it3)|
zko=V2=5wzs`%=0sPa6iamLsNbsz(v5Xf-=Hkj|qvlrwY4wt-QIsbWv<<TH9N4vgsm
z#%%mbCc36ZkSW`iPjyy19Vre2jE50fta8^^$BLNMT9$Ga3IJmWmQF@xfiZ)UpZd<0
zC)=*6uaEd-dEg~=N(1<ZbfYhs;&x1D1&QJ~U*0_>pfKds)E!>`oSA2ks6ddBjHJ4Z
zp=;LPisO|>E2uM6l;<1>*m`e>d6R8z<P3M{*R&lyipm%l@!}|%Z6{!M=ftoQ+47>q
zc*NNo*l5MkP#h<NeQc>TukCPN+WKltDcO}MOERW%W%l#Lj>T?(@4_meo}Y2eDp%nP
zWzx`W&5yUlPJ-ma1p13+z4G78@l}U?a&l_??)RBAKbV9y+xZ8E=mQagUZ>~j(zO%^
z^^!5US9gCz34h2vYTU9*_f#0vyS_hLF_sOY{!N1!PD+D~>s0lZoZSaE?d|vXiMHxP
zD{DKi&3!0#YUwSQ6OEpo+C-Q<W-LyItxLDzcT;s&h0gX5BRi00_7@^)O`fNhzHF8I
z5nEaU9&SRZ?EktU8M8Y1h#3y<Hd&I!^$4Re(>-hxhxeF}#7j4Q__i<AN8U|cb`x3K
zJ@5f9+YrgQK5O=*yz)h#pWk_(G;Tx~-5~bJWA|VQbY7*5tT%ZIT=~|WeLq0Z63BHE
zTGGz0!b=)Ao20=bz}MIK_QPQQC#^J^!K*Ri%r|+iNG~K>0h4*F!>|+EQ0!it#^=P4
zW+l=?C)|4GAp{k&xZvljX0@};5}c=XPw{Nbw2O{+D4kOEiP38`BqC%xk`X-NoBbN=
zRi<w+N`ZFqT#z=XlB6xZ^fkRhdN*##GgVTdm!|h0WFid~sTCfzW+JK{DW&P)RVYvB
zT7I!STR+TF8-3Z;wTPd3&W(Ll&Fby*qwjnxe?T%9&ZA7wApFg45<R&1+^Df;>JXgZ
zLLzY#d)?T!(cekq4T&+|gPnTcOnQ7Tz%}DUrmvS7-1K$E_js@uH|5WBWgx+(vijU8
zIl{;lvI!3*gMNV8aWX}B`NQ2axtSZ`ibuTzk!YV&2r9GpWw_{1KR3e7jTpBEGBjS{
z&;=dyOStZ?k0SJ`h9qOL!YjPe#!TN{mSr{H3}1m?=BD~ay+Q(0ZmrkH3)RQ(I)oRM
ze*B?O@S&IARV(NVZUamv?!rgwO8&wxyT{8*713FRiP8MB${|EVyV5t}85JBCxjpH{
znMRk^Kjr$Weh#J_?o{A2gc9NGO4mDvT72Fd2;^2`c%+R*6QmtUF~8ZfM7jU&xi|ZF
z4##~<X>u=NyD+ds4NkeH-Ly&3Sdj*8Tz^p6JXg_h`fu%@9S0Gr&L#6a-?es{62IGW
zI(2iy4dMmjFlk)0a_%2hqQ-d$GCjr3N0tIHW=s^Dl%3tPC}e9j)jjc^9E-Qs&bc*#
zSyqdTxjG`#<gNxXy@9`CIAr6g<0adf?TjcN*oFk39wHdaR}VWMsAhLNRYSKj%GV@U
z9uYzmW*=Dgk>M~L=w7m<N6a%qKX^?IrF9ZTi)PJ>o?&x_y8Dy<(4fTpOcS(feya9o
zd_}!&634l+*$^iaUGE~*U}1DOGQTt~u8%iE-zANAZup?KGRE5rwaZ=8Wm0?UOb$wo
zD6_&-`0>3Y#L@7~O=W0f2T`q4B;)stdl?*h_8}<t_;36DtC|)XY<wO`?thi(k%T-l
zxWcU1Le$%f<DPm(Y~&A1e72BQcb{aNnxjzbohoDeOclNbGAOi{sV?6<iXRcn)KLX9
z95hC`f4c0wHLyWhAF;8jOG)YW_djlnOdVTL>QsDyU8dQn;mDLL!-@Jhk#Y3rN6UHo
z4o87x4o@!g)ajp@g1u7rx)KE&==Y}Od)L|_ozW~DV{(*o3EfUSe;<a7n-Tbz+0&W>
zQ4em8Z>mFL+?SGp%fN=O0+YZMc;lVQ8k0)}L+*sppnK>S?ozYaz!J`)h#Zyx4GWvo
zY0JIBE}2o>odOQvg&p%036{{+<O63Xq_OtDTR6s2QhjdVuFiJO@L*E=3P-CHJlJC0
z{Z*U-Hme@zPf#;M1;3`MQ6+Sq89f|DCiZG1hWEHqeK48xyU0CSFvQ@+wph7s=RdCI
z;l{SeQX%-XXqdo-Z84r`##=qC%FI<-d6!dhe2I}+f8F7Rx3ELUcQh<j-dHoN>N-bY
zMM;TVT8R*5uBCn?(0rb$=CzY@vm?9(XK<5XGDrIb{&&c%YNq-X4Q~ONimsdS$t%UC
zAh=IeHLC>NCw1Z+3)tYRP0X+aZo^i-t<8RXVEmZjaZlmi0XNLEC%ee9|3FKBgc(Ik
z2x?fgZYFsFIG$JfCK^@VIX}RSKmPOG<ZAT{G<i96-^T_uylTzQ6ahzjE?<r(ip+Zt
z>DC>RDql{~K%Tr^pJuW^P@N3=t3g^Ob8t#xK9nGY3{5PW#$XY_Lpuy8IPYDb#OLxk
z+Z*#ZEu&YQ(8egm`97b-X}&YnXm?!iC2Kb(rvdof4z!Rn7c(oy)O&=^(j*Rd_U#t=
zc1G#a=)Z`PDWQ+>7N?q9lGT1kt%^iHOQ}2-y-XoDlNdbYt?#}-hv?>B-+XLE!V-F>
z?HRjkc<P$4DIcq;rZSkp>)v(@A{kxx4pFQ1I>CVZ>h2O1p@Mv0VX!T~@?)&D8NZb>
zWV7bsNzolWh{4UCT9)w4a9^Rzo?<U3_ChOC747TLuF5$!KU_d5Ha9wvS;dQ1q!J*k
z8Zv=NGMs@{(6JI+j2gZ$^QRtX#Yfn(w@fAeyOo`x!8ni)`+H@*nK_v-@Q-ph{@?Mg
zJ=OySY^}b*9M4sEAJinnNoWNDHyt98sP2EXqMvp$HlO7g2eLD!mQAr)-dwL7)iV~9
zpYAr|c8Q$)q{Mc4B~SRXUIcKfEec{Ov?z}bnmM+!ZqqRXa&d2BrJtm&s46E<Ni>Kj
ziMBXOF&hN~uA<5?!#X)XZ)G+!JGHud9<%kDYFdr(#GUbeQZyg!oc-77oy5R_&nUky
z)fqgabnBthJndQ1T3SC8B<yn*3Yk57U8WYlJFF#MXH}AxU@FiX_*H48Nhfo+Ra3l<
zMAiJ*D8>ST$mi?C?=?Y|nn8BtI+DID;P1z}J{YQNlNbwR(^+%Z_^%`E%;$#0c1{BR
z$rcl)9);Qh;h@H(Aa0__2)k)rh^I%l`ZjK_p)Hect2ezpBGid$=YBY-QSOu&iUjn%
z)4;$h?e#GZ-q=M3eo0a1@tu@s(Oq@h$XXNUOK%#<YBO0I_XLkWq2HZ?t7}nBI-#F_
zb0TlIlJ<$t^+$w(_-3+|L+vIseyD(E5|^JI+)^%kHHV@Q8}_I4GEHR-C_+uny^ZWi
z${bK1PY+S(_EE4$V4KNYjc_{?hf8oFq4!3-b|=V~l9BAi#9K|eNEu5_p^-bz;Bg0x
zZo(n_slW0j442?Q{zS_0es=&2e%DOqIkaR5%@5T>5VmYd{CsO7;jEEE+}5V5w|!^?
zUla_NAX6^KwV^hR974#im+F_#iRibVc_gXZh?lXJ-Y;Pun)zl^3uE+C$3&V>=y5L=
z(jq#s=gP)MvwRG%1jhfYA)bcIYpPju)4iZ~cJNW&6H`N!XurdyOW=?nNs2MO&iV3o
zqR1n-7(+2o(MFMZ98Nu0TWwPhUq&q`h4`qdy03yL4|bU8$&kSLq3f#E6!;8suNJ&I
z@%F%-T7^){H>baadYY9DsMG=~Pm5=bW`N2rprW|_f&r+oa?R<BeTpI!LQB-2>*qP1
zu;}Rqsm!Pa6ZjZevjL74agM4ChouQ*0Tod|<yx`27NpXx7M#K7ID`(e@_9~w4{@zI
zosz!CGR$c~J&A)6z*U9xFo`<%7ysezn-pyd2iIis=2;k<#@Ko1+qqc-G2FMF0wl#X
z1cR91ksq-`aR`ZV5o(sJFQh0&pE$_bLnwlxU+ayNZ(Tft@a)B5&s$Nvag}@*a-jJR
zpGfhQeB(r57oNyls0$!MMPQpeodba0S`k>aW~JD7O1@ztu+#};<Cgx);s}hyB-FY#
z{>mS9gf1w?3sK92&!IleSkL?GVfbSq%WFC&gBn$52h|$TrO0i*TBq-Lk;{M^Fi^5(
zj4d(XPOs4*XK*LQx3fknwZMPx@1<Kkf<S%eEiwVFAnU&RPU8*GrP0t@zPAg}IAHao
zV4_MAkb1lvs~OrKTIkPuvah4KAoZ@YSwC2i5=5iBM=e^J@Yp{n<3}ADxhgo|@{Z=z
zbOsn-Q~rn>*m^<tz6#hTNrH(FImjlL-0D=Y9)>+6R+W43JR8{PaE~DoVCx(T?k1%z
z5M)9A%Y_~V*mG}tU+qT~5?9DftItS)g(+Y7B5uJ9I#B1onF0-cuz6n+99=L+Yq&mZ
zWFS8yi9a%>K&S>O=(57}FeKqS#pXVH!GatLT~V&K!GerJ?p?`}g4CN@__Tz;K|DDR
zd<J8`8Y)KuJgeG59tivJgTd$BT>M$h$teY(>gZb8rh%Z^)*b7uXiK($@SM+S%YyM3
zt5+ZZ6t4W^<Z}NRNeS{0u6d5_5*$<kK;l|Bl!63DK3$Mz=R$K(0?Z)EQnMsjHp@8w
z2*h&G_1^N64uK2^6xZY~r1c)7HsCJW!Mmpr?Bh<*`JZ#;v@#Gzgzm!_7$CldG8x_<
z+U-w_#8WQwbl_mqGIs2EUBEsDQX(V4?0jcvBWU!<0D(DwYj^^NK!5Hk6|Qv$QURvP
z7i-i7ADl2NKAM>S1O4%45d%zUlS&_fOHwRoEH%2|KoW?As<!LI2k26H_xm}+M(rFh
zzRI4Ojnjz<5Wb8o%NsDw_e69-tx^)I03Tm<shgufV<#LICX4{TRL`7tDU2TAdEuWs
z={i}-2NB(Uw=E$8A|bi?k;nRu2SmcT{8A|i2(wVVMei4X<w1C@uJNENa<E_FyP8es
z(<zW&lU1HFVi5VBHcRjS7jKg~SJOvuycAV!etH-+HIzAx`(%`QOMg(CU^b9n0)3(B
zvsBv2!5OCNNk9f_=*_XBoYuho?nI9Er3&MSTPY64%0|f`Tdb%4fW_pL-M}RHDl7yw
zV`yl7vGp06Trc^}69p{V#au}SuScdC?ki32XTbalwJYi!Hl{X)Jrq{7^<VatQ>U*!
zB*c(jQNL`Hl)(sAu2Pw!h(JQD&A$j+1G*o@g;FH5fG_1h##d*g9e~t?eYW{`nv(c@
z4-W}D*z7)r1-9Nc>`;pZ249kfJC6=A2^u@!W0!k>fdz$X+m;4XVZ{pg{(xmWMA0G$
z(#$r>t!PT~3;~6JIo6sK4ECI_q0`GB6u1xasCzosB;x~Cz`Z^RTs9X{4b<v-Z#wQ`
zGZxi}Ji}VmA`3hw0R+dFZVP`$j1OW8LL@AO2<&xY`{`&7JUguIaLU_2IOgg`3yfM@
zmf*m*<f3T6W;QDh<=MezEV1XI0FJ<f56eXYU&?{PXrx5)f4BhdyOO2Ny`NWw0>##~
zKa~jy=HT25Whog9JtAw|y&u38?W;mq(Znf4{0LCQbv+TdEhAL%4=UAZMLrU&C?+*z
z>tYH}o_z~*>)m~mB61B}%|T-0jcAn$1x4OPAsV&p9R(&~J8EAE>}a2`qn!ghyRwn#
z0j(kd;BHsj++lDxwTkHfhSxXoUcwG(qHMe$Va8+_1|vc$_t5z-nz|M~U{wPl&Invo
zjVFMas^TuC1F{?>^!V4UuBG__%uoe}&R-yKC{+1&^A-xg%a?N5&+Z}1&0%2I--<_W
zz}?810_cq%1mHQp9XYl5Pq=Q6d#Wtzs66;iOK8ZxWdw{;?Qo6ACHMoF!V;TDIgnAS
z%leb>|3xlTozGsOO$D9-u@n#f4bTj9wLu+RUV)M@TcZ-KiI)wW687Thc2+px#FdU}
zjr`9*z1S@a>Yd^jF#d<#K9@bfz+oDfl)IJ#HdyE;+XSps(nt6&45iO5pYGt`!D8)5
z^u7}vv1?GYMRupK|DkQj<Ec;})W*1k!m6VBH>3h&Np=D7M!GGq1xVQBbe}Is;MAF+
zjwAd(4x}>>=K&7<A4ypWDy-#vljDG-_!9d(`Gr#&5{z91W7Me8V>J>2>^n{@ar`F@
zc+L0@M94D~fW*{=od!|I-ik{oz5v@!eNKADT9A&QUHab&RVOjH${q!I)qr=Pl9S{(
zpsWCux<gv9wKbj|DDDtuqbW^FuwV~agkGLNQRnu9FKS#769ZMYq80AmQ-!aXpbhrt
z$scEJM78fg^;%mq<OQ2Fpd0c0PZ8T5TNOeZBi0ul`@DZK09<-sBggT;5b7^ZwZYYM
zZ@i;S7-V>&kDxC@5=j0ps|b&}`Sd`QWo`1MP-1BZSH<nWw>=f#Fv38El%7Tl*p`86
ztgn{g0A8uih^IE-%|h#7FM`gu0<PH?e!+2VxuO#pG(zu%YLXVbVJ*=}ot#co6#>Qi
zbWmr3-@p4e;M){A71M>*50swSYV*##uqruh|DZl)xpT&Y{2&V)ZM%bEUq6M=fgD13
z^@t6F@rSK?9=B-MfDB5`ltzJk=fB7L*X(4a4R+Y{7qwMP9?Vff>*q>oP^e5Jzxcm^
z8fwX%5U1b4l|jf$8?zOL7*GT@aR;5iEk;nX0jc8bLUMWuT4T|^p;)r>U^38$P}sqz
ztLP5<+6{myh;d&Id=T6A@35k&_SsHFIl&{wYUef@aKRPj<C4Jtrz4uQ0vo(jc<c=P
zH`hg2>Rl>e|2dBTpi1gG{g<zUL45oh+Hz^KO8PJT2)%BIK;wv$1X{IyNI*#-G)o}a
zdKXg-BH*?o%^ysD0DQ8B8}TXRM{pJ?sQzdYlmBnC!e(9g-<)*SD^Ruue^LKV0tt<d
z8^D_&1XMGgKQT6C+CASf!OK4@=u1;rE7&z$xn*E$TO@dfj>A4Vf0ox%0QO4!x0<fg
z`bbdT`YsHW@Pd=!*FfPGTz0AO!JqfnS~?$Ga`C`*BZ42zP7@If<CyQ|PlcBtI5mPQ
z^uTl56-5R4KQ01n%f)DbJxdOl3GMCw+e>5#fAv_keg!Rc;HBe8%wPh)<R@o>og%T{
zv4Ibw*PQKL7{HFx*7d##{UFo>;=jTlsc&Hyl?|SWrpEKy|FP$5_idmLJYGt@WmA>{
zj1K)2Q^LM*?QbgdUlZAMeNJ%k&UDYj83fnlPw*e`cfdPLSb&?I95V^9WVm10i}puB
zn;XWw*E_rSz)6O=$v2#Hbq>74chTv+Nr3CkS9<eR;Mq%HuP#g@<R1YWe0Z-BeXQ{l
zOa9?na;0Cjg?1a7vCAy0j2P^=`|y73zb#<-XT%PuKB1oHJ0pPmgf#`a_&<X3#Hsk-
zxpWiMehF|o@2Zf}d<GYDy=Pj@zaUgvgLP>?=1JRp&BjXvLA6!9EA`;Twh$FOxl<8d
z^x$KIFH6H7DX3UhaJ<xW_<?agIpC~;in!7G`jIy9=m4;7yTZixu#bs?W`fBh6&;-S
zkXYy5PdR4b`paZw8rUiq4o+X?@AIVp73G=6B_;51go7%A|E+c*<#7rIa44bzC7KC<
z!=j_M4~Wlyz{JcQAVq+|3TcHdHdPD&VC9n}cFx=~!N|s2BL_e;J>?H?ia|yM+A(KD
zfFF*u14WQHkLQT@AHQ%%od{qCyR7D={;#wK@DjlPH;cYUUsn3G!7F7i%BffTzujcw
zRQZ$E*?(uPFPn-cAmYv0O<6O5Q^7gZvnV0C8{KcbCSStx4_nrbWS~+p*zrnbT?z?a
z_-~jEj9uU$++R9ZL5CReuA~)*|6_cNZAKitg`cY{eQZ2H0`I|-tWtK%j3}T(<<FIJ
ziAzdiSIE_8*&q=6%7J5*VIVHd-B!0SD<FU*0nY6tE^aIDkU_LG=5=aEctF1gue9<t
zi~(@o{Zos|L<Aw{f!I*M`yc23qAgA)!BbL%T1Dt$hXsr=4={}V=;8)G3v?~B!Q20r
zwkOWPGJxin8`;VwwhYkhtQ~mV*#haEbNvs>pntt@bstCre;#PZhY$Z3x=mVQ7I^;`
z+EaLZ`Ogtf7UX~4ZxFthpbUU!iZJC&W2Hb4%=>Az-~X?1jy4S`AWw3CwNC69N`Mua
ztugkz()r&(;`ZJgoaI<ezCoEOwn+b-*7iBiU`|oc!L}a6$~FE=pI=W{&b#1+x=VCm
z2hR0tsC0M@==;2nAHfeLD3HPD*$#Z-_p}#1Ii9h37?x2C*U|o_uH+rUohQMNWH#cX
zf<`WhR>Yd(nA28cSsBMf5ctht>cH$vFBLs;CXJv-?sT9cva`-fhfDLorxKZ&MGqRO
z71S8K{QXPxD~)v%vg5wIx1HK3x6+ALyITXE3-qhg6dR?JzW50$6)~w1J{o2W$rNF8
zIQZ|9J3Im0?6I#779lE#>8Igo9K=ZP4a_DzA$^EV1AdV*d|}OpR;Cmvqs&l|fJMLW
zkX(!!eN=+7GG|&LVu;=jq>%TE7XrNqM!JlspemcVSQrb_v_jlR@LRdcn$PWMp)@vy
z?ZH-#KwhS4x9Qchbvf~sZ)dHok;DUzeE`o)5$n7{#+cBTMcW6FJ&J%vCHYMgFH_)u
zm{?(aXg(p|jTk%s_QF}eQdRJ@D?UA)wRc~;=aX=6#lE79SH*26me*>M;3GOOBvAAm
zCt`{PXvcbe(`{uRn$#1sT*Mn-H0e998g6M99A`9n@5_J|Z$r|WjsfA^;rSrq%uNST
zHlMvS9WtvPw1{l7a4WVBgHl@S*+aN+<P)Tpv4f|g{%WXh;FM^yKxr~f2k3R^6V2&n
z27~%;Z-mN;s(FSvk0W+hhr#1AJ+ZwJ`Azz|Wq&lttS_PSo4gOQdU;jzxlYHxb}sQ*
z*V*T$V=BAeY3@I^SMd#%o;$i?tsPc})JtkOtxMD%gM-lIxfa3$Av<o;g`q+P&~%~;
z+##h1myKN_ru|`+as$Kpxs=Zdb~)C`<cSJKv4bQRg$6<|P_+FR0Y*4Gh%nZBNZ-@2
zga&WffxaN0!m*HjlpBADD4EMVqW6jyffLy6W!8V~onjvT`!*cOX;HuL#7LetHt}Da
z^XL!U{tTSoOofv9>vBl%xL7WdScr0ibJmAR;2gYdPhH)yA7u!CGc8vNgyaO<1qCef
zANMJ`V`Fh8zvK&+6$DGXgK^lujEcBsGTYEI7$(A%MB0LbL34ST!FI>y<Vr>)W0d|K
zECB;kn|~aUa?NyV%XHQMj3te<1qoAIwQ0`4FYV5iOu@++IN9Uc{fC~YzLbbR9LwvS
zFbTZ$uFulX*R==h)nUPnS%<<xbl)69V*%nh;~orS>+8HrY9`=8!dQLGSW=aC;zPZJ
zAwC5J*6HLQyFO*nA1r=|=6?U2+aOcdG1FsZn^D3`W4Y5HFz&yQHQ6WXBU&Yj^(yBh
znl}03S?T!sRBToH<Wj~DyQrEX+D0;a`?@+S$V$cJ?~0;D_E^{5XerL95v5e*kNMVL
zJ<ZaFLot>%D)tab-1OYBqs;FCk={^DFXv%L`tWfA{?HIN0hWDAODq}pW5JFk<CTg%
zd2lLQdbiP(WaRd4m^V!Gh}uw$mWAF@pHT}SnxY>yW^_=tCx@*>x6`650UlJ6PV-0`
zrUz`rnJ87-ru>d2b5r~Lh@bR8!yVho8kF&mh1&_PCK_Fe1UBhgGL_EXkL_coucdq=
z<OxTyD(9$sKR%GXH`h*L)~Di0c(s_HX0KEhY*kHOD^j7(htqbwq;2>bPoh=KLG3u>
zKy#kWkQ!FA6~ID2bpg3VzFW&FK-~jHNR*8z(B?b<W2CmS_3rwmp7X^_sP9u;ZdR}l
zP7o5UP-F+Tn^-WoL35Xf1dMrpDSXf716L$zEHB=pY(A~4TZ`U(BSt><na^C|W2x?O
z=)Kp0V-G54+N`8lvM{cxeA-)Fr{KZzvHIrb)crE8WF1_T=s0nGhmilCdq52>sT9KR
zR7~u%_$(B1)}Q7-Gy>U0m%mZ*c_`Dl{&c4;T{kbDEuH24UdWN!jc`bPRjGhk0zaLa
z+}X?x`QvjNO$dtbhEf`uP{qA=PB;XD?m{}mr6>UlGZYhFaykSYCf{rlpy82<CKNM`
z6~qL^<SFU^MU7%-$VLXyGtWxp%kn@Z{R2At&D5FDYKvTP3Z+UYpqc(n;2kF8v}xWK
zmcMqR&fI&WUiAh`9}oMzwr|Ym98R|dBL!rL!>{tXURtiX5DJBcHdp8!YoPf*dG!&8
zJM4`-Tms?&7#9s&dyRV8<URb|&kV(r>0NJS*o_v*ENovdq`%ekayRTzF5zi^U+>3}
zsI^CA?~nG4ESV;tVKyGKv2MpbOt}wcnu_)MSA2F9JpIAgRigS6{#Anoo0VQr653Ih
zLs|ooEMD?PelO2?O@F&FNCl_*Q=6;xKlG(8gwG^%e)A)d8X%RO9-i~R^Fe`iemE-T
z>M(29_9MoC3VdzZyGk1_@<<LQk!9Z~3R~w=vS-{BK5{n++G=AZYz_7!uGWFOcj!Us
zW1L8uGOx8%81Buor7}U$siZfO#frvkDIzI8MWxiiqi@2ctjXW6-$E6z5-+nBBGD@9
zdQrlrs9vykZDi3LN||C}_Af2%`@b`xBG4g{i;_<F&F_Rn{0vhtdbKc@`E^xkAs~$?
z0vU}_Uoj&|eCL@w^2S(C**D&3D4Opd12GuNs2!yxj0gL;@+Ro&waxVKwJ<0LVi4{{
z`E7AKh}5Z5X!ADTBbv4!iuiMhC||qeIf}$+Wwh<Vvv9FKHAIc@>SHVX=5oC3?%N-_
zyrz<aTL20K_r=Lhfq$<kXncvT{DESRJj9Pc%f9@x?aZi|=SMXrJIgq*qTPAQCGK`f
z#15=|S0468o40{EHk@yn>$=^<j|n3@7}+p5cG?wj3`59hEHQFbB9V#}E?bQzJ_215
zc7*prDxQ2SMI`%E5$_7W<+Ec@=KZRM7z{I^N=4RMmENh0S$I-{t*|M$yb~ABKvMsb
zWP{JeT;N>n!lE4hUPuT1ZR&|~8!qx)Vc?^4j=_Hc#ae&E-bV#weSe^c!U{nK;U5Bz
z3yD?j@VOY^IuLMUaf6_U={`6$*TLH3?A@7i>nYB#Vjd^Ji9!)m{k2ZkC2Bw%(vK77
zY+Y@dVM2#cpDdo8Y{>Q!|CENVM0cAJ2Ubk|x_ScB;=R=*!7R*iA`T8)E#Aw`<{u+@
zunfH015%(;pBlt=U&0jHykEsCm$k--wLKX%IPCcQ+YzifB*4q>`PGL*FqJVn+RXTl
ztNnIyo7d5QD3m~)e=BvEJ@UOJ;kHzC6~Ma?zzByHl64JU^VRM&IF^y}?uQot^)seV
zAFE336TqfrT1_+kaZSWlLEj#=)B1O2ObEA_y~*jQNT)>Es=9qUckgy^L@1BegqzOD
z3;H~NrbutiHG8#%{RV&(v1YT59-ow*hE2r2%12`?i2MUF7+xUT_~Vmvwro|e?XWV7
zR0%e`Z(GP1+jEOyMll*aL!?i+3OP8cHmz&3lmLPfK)C75ahwUxI)iqdHTyCLC;$9!
zrq#Gg|Ao~W*6GZ<@CWd2uvvj<U2H%PaoO!ia)dGAgfAu=F8LW_OKCt4;)iHu+W`{S
z!UoSD)ZDN26)0fEP3u3mA$zwQvhx7UFpE*KItOHTCJ2@-k;fHiRX(Ms;k@ovSAUDl
z;uk9xw#RMni5tLZ#7qB|1F+E`<4_M87~UULY6kI3J3gF1F7*lwl{$r(*l)-#0ydi&
zX;F|Y;Q6s3QZB0g;@FRw7e6a24!V5gwy6L9N*Q{V2fQb>*4aNlP<8bA6`Xdz@5bJ3
zt2_<XwZJ7}?tFHS(R{z_00c!EaFvfdz+*$DrjdTbkjx42^z%r^Pe5_vJpr&dWZ04J
z!8s5A_U_wtr1K^~a&pJ!VdM-mHuBL%Pre1g@kEARXpG#}3j;Xk`A(kM(Crxp{H6^O
zawK2>o6Y*?7g88rSHOv7TGjD4V1_<sjU^nY^2{yr{+arH-`h?EUc!Av+DJUya~rLB
ze^7~OQnhKb7{M9!eW7LkpB~lOPf0kDa646SE+-4Nk17oCxKe#rT-pCT6c0}NnwhK|
z+bSg&VTx~s2BTYmQK2%AaZ|^E$;cJh1Wc28+06fD9crqO%9W8_xl`B^-i5@K7HEk)
zX3?oHSAPN&(Rmx!a5KOb`_GE`C;rGT141jtsPbfBZEhNCX}9IB?or7rdg5dZPoBD>
zQ&W9#<=8*aqdI~1@M?Q&q6O!h<w9IRN-jYy8ZCo#((;=$xXQFX`^#}H(D3F=8TeXn
zWdj5uS8!oy_Hr$u0J84#*^x+a78yJQl|id=Dm_?iPnK;#&jT%wJn=CpDf|=H4Ea!$
zZMI!yfXI;5YgJ`?-h~66oT=Z<M-vX<={A^+QqGKYu9GdQb9L_&O9HPnJ8C)oUKxn0
zI49x!z}jKu-f|NCV4%`;*j!kjsKFfll>CKz^=VY{JsD&)+LMFl(5YVGAt21bz{`*Y
ziu|O>#X(4K^`}{Yi#-<OrBpCMo<}-PO-IkrlD{;y!?;!`qM(cd%|`2PBAwF#?+Z-j
z2T@?}7Zf7njh~!T0b$YQP@xKV5(jZo`Mat=O#>F^#h~2^!CMB_XQEFIRdJ5MBo4vX
zj^%+ij9-&T?9KQ`#2NAucGurC{{a>0nwtc!F8pg^e2h5ZPoaP%KEil?({+lg(#Ho6
z#UK*Pm5EoMAU}>o*LDh(*LXGXBR=$0O!B$XkruBK=I_|8-=g~2%a@6M_l|Z@$~_6%
z^^pS4@GF$dOJcOxS}8(_f5queFb@!>QZ7Oq5}}ZM7Ub%tA5+)-hc@-rF^IbBKs$|=
zH31vV<g!PqeGW_E`%{@J{jZ1!HKqWPg-WYDb`~-V($Pw*0vxD;7w#dCk`*n0L}9`3
z^S#nXWtIS8Tv~V)bD0`)u5v{Z#JR!n@BK!2Gk=U8_wsbU*j=A6)k)I-H405<r>GG&
zV+lAyPz;ck@p|eL(0$EOej1taI*VH6QAZSi>=h(e9vqn%ipn>+6cmzmgA$*F-(J0l
z#$Jn9iTUu^d=eTdRG=7^7|~`ihn*1B3lmK!mATW#hL7B&BW9P40M{>gyPI=rH*1*9
zIi}a2&km2LpZX%&)n{{4Wo+Lsxc3PSi!SwF6sX~1dJv=FD&8h&_tbHQ6CV8at(SYg
zhS;d#wI5zd(&<C9WO+7(HX0GbTeUGRoP5~cgU|1FS&A(yX?B0$QSija4@rkc8u?Bu
zw??%1FN?L0mXa&@hDkUmf<-Foo4Zn>rSoPpqRPO##HC9)7E?FsveGwXYAx0)l(2y3
zi2kCzWs<_WHtQy#_6in?L#>4!YA4;#qf2yYUL2bD3Kob%N!l~se|y&aMXr}BLN|r{
z7EcPBEZfM)fAN_n);Dvp@ge#(+J4N!5QR?Oit$P@LUB$^B7dn&V~t94^%%Y6pY~@$
zP2gQ7Xd*Z=yHQnnFe3DlSOuJ&VeunUVJqs1jOuET34sE&O|>hC={h|EVc3pZn0M_@
zxCw#YTI5Mq^lyi=OUT6%W=w<IJaH1n5z{0xwTSC-g6VR9a3<#~`Ian}n)4{qD`&UG
zjbCYa)I+$hdZ5^M2gHDXQS`Far`~or{_%`YmL;Oq)XdQstsnU#V-9@0d96()R!9}9
zh1RA<o{jzH0RLNFLYjx4Ul9vW+}tX9>RD4ot#U~|n$k*V-+kj07B1F%vMb-T6Tc8K
zF`4`I@B3!yQYIunEllAEPMfCUU91yU$u<TTbIl~}&>%Y)fANKoO2gYXj6{8S(}D;^
z>({qS<SPg|;Q7G^ENgFnX>-IIzhgC$mgU~}2?7egRVy<osW#DoS89FcnBdEqPxUGN
z;NVSuq6R%w7oYrsC8o?bJ)VJjwb_kf_|_XA(iZ#1^=RpfKQxPZL^&PDgl=L$&M9D-
z_DxRs&6`Thp2~O~${qC)t9jZ2FDoX8#j5JdyciAQ`~kJD6@j5Jy!FVwV1U1T=S%#6
zO5dP%<(%n{55@GtR_LK*eWXaaL)mjjqX%PcQiB=Bw)K=4(Pr3$+NW$-92ilxQfQF;
z9Mf{abkSz6L}>*?g)j^Gq5gzvjyiX3F=p6vGnpEumw6M|u}Q#Bp7>Pr?;O;P-RNgW
z>8cz$>yupQmk#iXL`zr9eb@p%SsD%z+!!IfgI{Puj~H>y^b6FFiNTlp!)jfKt%j|F
zHB=qXop8qZ4!);`lshr@eT}Z6p1#_jb!+`0E5i=_yqUiVQ+iiOh0$7B-_J!OG>D2T
zN*Z%@HDj6-2#Kl(SD%+;+&3tFj++m!B^ew>Nkln^)pGp#d8+?8o@w-X){E_tbFKcA
zn}1x+jr%C;vL(KXOMe-e^DFlE5ib8Zb6DHE-*mdwB4n6uFkj~x4JR+@FF%Exb~`%Z
z^tPe(2x8QrI?<BuW<WS1c^!#?8!!$&j1kE$P!lpy%Z^#!)*$&Y;8{8d21(C+_Y;*<
z^zJyN;#`CrQTLRcv*1$O4Ar7w8z*-1Pq3aWzRgtHXSUxgkEu(qQqo2@e6DuV@YmWi
zp4IU0?rTz{yQmVvsM27G4g7HEsK}Zo&CuBBe>{J#`kb0?rbVOWWYUsF%C7TsGV$~+
zC2}yDyVSDme(LqZvbWp8{5(Uf|5df=*oR)0u#XC9)zd9#IK&rZ@Uk37^=3{*3WW*g
zWbB7k@^InCSLebaE~<s6j15Qih}G{ee?^#z#*s){!?9B5dpXX0Lg}o%E6HeK*A@w#
zv+Z7EF`XoTu{_}l#JLWod*LZx$<9mUf2(`n)`DpIyYOck4UQ73UHj@BD>7pklMf3W
z*)@;hl=Uy2N;dI#J#6v1)jk39A1aT>i^hGaOQj^apW0jX8Ef6Oo2Gngh()mr9Umi?
z-_~xBkxg_LZ;cMbf;aj^FvYIcW&^z)vF8*WG;Dt@Eu1v+kjFU+Y-iza5Lxlnlw5DC
z!A;8?T<_(TU=n#|;kK!Z6$~O(ckM_&;Amu!%siu6&VPUV*35}Xf6gEnSU5R-dfHpU
zhm&_n)bSXd!XsUO@g#NV9`)Uvt;IGdk^5~&RYMg~^Gwb!tYl3qPz|SaiT26eVUaT`
zK)O=FB7kOcvz>5_o$y2|v_NNnZtM_NiVj}%z=s&Q>E5}MjRT66jaRGg;^~clreR+0
z#Rg$X#Z!7XVTN*Uzyvv1ZDtO2Vp_6T1<RTs*P);m^0n2gm?4`iEWIoQyQfD5Atmv0
z>{QF!%J*&OV3~$l3-9Y+6vL4!W?Q%vH&WCx772#Y@_66+$BI?G60y<IS8b`v>NPZW
ztc~@k3?4PQX{NK3=szJ^nyxtfA9@DxaKiO1%+K-$^cHAH0+<(?FDcy-f@DxxuqS29
zqoxg+j-#UgV9z#RKmy`&6c%iyXLqfF0r7W!%p`MX^!%b4AHx^v>X8nZwMdwZL;S5L
z4V%8`(LZzl<L4LU`568{@YI$)U>n?}HtFq;#vcR&-S0Cj=9xPnj^tPEY$pA|9YOA6
z_`(_M%06@3zM!Sfg2sMrT|}}^nMzEPVaEM5H9gw*H=~FHTp6!rqT>1SUlg?uCO^$E
zBz!P)wFAf%vQ}oh<wLLqWMNTp!guPZzh0xE#(rHg?DJO$!A{-(h#E09Wc(X>Qcg)6
z6_Izw2o(<HB|MOP@?ZK%e>Nc25l6i_TeYMH#C$>Ili_6noFHv8aa0-D2(1X=uY#>4
z5^NhnXZax01hHQy7iXD)rUPN@*S8aO>?lCvg+!u``l`$j5VMlRe!UW*JP{-LorNAl
zp4x76{Ry2k=wT8MxNrKXcXB)L{5sq7V7}!zlTerXu5S*$%;&}^K>s;;(Y*2n)08Q^
z<8OrbZEM5<=gF=H6N|<fi8+S8d7RS<BlnNezYJXW@$QF=wE}&JS>C^1vnaxo5;P)s
z;%hio^3Q#nae_uizQNjG3NJy1e0jx(zp7s1mR*t*f3_(jb1E<Om~!#8r=w5|GFtqs
zk?+O>JTN$Bb@e9xyhz$czx9{pcaDp%HYPKDn38n9rL%gvp1N#&lfV>X7<6L(Xp_>z
z#8qGizO9iND)EizIF`5iA)*hx7^v|Z52G|R^Ye2}`YIk9Ccp0f5r=A`A)3IQ2&nhg
z(e&j#zwW(}#2)_!zIz8#6@K-_6g<md(dYIGnVQZ+F0mEAM<><}H(WY|G%BZFQk!}S
z99o&j&|RE>R~MhEs9C|;Qb$Sx;c-fjsp^N%+xo;9ydMs7Z!E-^qj|VL93aik86)JO
z4iLXgtu+cv!;%aT6Rf}Lz<*H00%W+28;GSQx(G6l+;1;xD&qoN2gS7o1ZA0Cwo_RI
zp4K()w|^w0(h2HPXKRsU4{7GLjBkzu;xbuZOvSF-$0yLcGwX~-J*7>IFV>#gVlXo)
z<cJ^F_97hbkoU5_t^*>Ka(8F^$vXj?JS#S%Z(z|W7o~<IFdEMcqY)=7q~p$wjNr{N
zD|6o?i*rh2HWHHzWa9c^TFDQr-(a5E2mzQ7DYRC`vq0+9{K?KE>0vv6{wLo=jKVSJ
z-{ahcgxyx3=HG4HM->zGPl<RqS|Y>!o&?66Y&}p?m{O*6VQLZ5l^jcIC)_s|n>i&{
z(@F-sHpiJ$qLM_k0Tl6#Hv*y3WV1L$q4%aQ3*#O{S%tkc?(E}ObzGZ9iCo`a1sF`d
zXuHQ?o2-peD_Sg%b>a>`#+Y>8oS3D5B0Kj@;>}sGWHI41u&f&Dk)G-`WDRZK8Txs<
zK-=4YGBhD3I~uiz)QZYG@P+W~G+kYMKpH!EjApG{W#yMluI#lj8?{F;O$24J4p|(X
zGEW5Q1@ZK{oND7QIpqqg63ZM$#D+F4yo&>K<4_wT#)rbU(@LtcWn@F(o-@{x!n~D>
zwvI2R)TVi8!co>${_O{!r6MDez%dGW(x6Pw*5L2f(FW#g^{P57!JY<I_%{t3Au=Qy
zO-8l>+*nUa3?FJd1cdk&r^n{7e^O)`zgQXG*~}3vD2uZc)}YnrY-N-38uUWoQKcvz
z(}He}#NAsiHOmw)_aV6jf2ViwLv0t2><dJ3=x9W2-zCbE^z4W&F`Wu^KMGmp7q;eX
zt)GlTtri>d2oW>Rz*}%tqFOEpGMjOi%(Fuxayi+WOhYx($S`+7sUK~;Xpm-uz2^;U
zjjCMISATH}q_M+1Bg`hg`C&%}D|=TAp8~}@ljsE1S9zuTJ2$nc2!3EmKIE`6O(k(=
z0Xe`uu3Ful#b_@%aPY1Yp&q{`@z7~wmou7Ou}fg+bF~Yz;9;hL_rs^&yDv(3Vy(az
zW8Kf+p<fyK=Qi9C6ljzaFy(&Bo}*T@33;+v66`&_ECdfD6!?^CMVbA%T#obb$%Y>3
z{5>w-Te$Y)Xusu)6+!~e42Nu#WX8JI?c1CO6opnr_LX>{SPZ2wxi2H<N|XOcnVo-x
z06iTpZ>6qTZ7HlZ5*ndGc8hN3Rp<gW$~N2s;dK1S)q&MkfRweYwn!dMh<m^Aqpn_(
zuJ-pM8uC$El~t4Rhi~MVZj`Uc#ebh;DxL>^FbrAf*ra%}RCYTUTO~XgsCtwcz!*l*
zG|aCOmc|8C3#50xwehQj22?v!GglI~dSV3BR!Agk2Wxk9*QyjTJPtDIZm4gq2bCKp
zRi2j}Xds@6ly$I_Iolf%Jb7LF05=}S%lPqJk14>n8ra(82*I}+hSsc{z<n)yNbBI+
z5V&yGWnyI=ml^L)p8~*FGVYSB7jXD>`~1hWTcj8(g~wI()m?TlmBm1fw6&!fIDXwg
zBgBlAOGx0ZMON#*c5-|m2$y8!z9IOA$gdG17~uAZt4j5FVIRodng2>N{0%t>%M0To
zQ#$DO#q3E~99s3`Usj6)<yvDf7TM)Rc~Jn%i2M0%MI;z!R7WM(7a+20;f%U!6Y6<0
z$54Lgf?ki9{7_DErD(wl!4sV$nw$7(X{*k7H1~?%^g}+^S+_-X`b)^=j9T#BGrKxH
zJRhaUHY9Ulp{aAE<gn0*^ASE4i8V}WqWEe7zwIpXUiiD?TT~MDS5a+j<e1Xm^VZO$
zyNJu1n1p!7b0y;KlA`(tDRw(g>V`Eoxm9IrDkotW@QD(Te&<ULWOECM<9f0}#Lsw1
zZHvc2g=a?&w0f|*6Xs{bLEow_vUtNh5-YhEsMyxO!~K1<QC8Ft{-_-xn`(FE<8-;n
z%F<+oVysnP7Q!n)7Vw6t-{0hH)OLY`gWvp-^@Eu6f<({YVXEU)_$4a?#|CTnuHm>a
z;@m$_<F11}af6j*J9nj9jXIE7i$=<lRN`0*o>d)x&q~OeC%yitN20SR_!FMChj5!v
zY!G^9%U!B#AUW`T|7fU1uN1l2V5I}<DQaa*9tq5kw$)hI7;;1$49{ki3t9=>n(>PJ
zrQTt3GjYR$T;-7YAr6iu*od4^RVf<ainS;W{A1&4#a;tZ{~sr>q7!37$`<T$%G$Yg
zYT*A9<@qbI8PClDt<I948v1_Se&g<8*`{V*U|htz6AF@fyvMTEGkJcj@u#DkX%glC
zSQMNIEg|)x8__Z%i%!5kC=geDayTbrvKF{<A>QOy?vQh7P*H|3T==%A)+AxR*x(`m
zb=U59f0s&FsUnhWnOQQ6TtUSCu|cTX!r^S3<9h5YJoUp4nq{=Y=iS(y&qve63lJq&
zcLkXYVPu5kPtyq&vtOT{stom#ho1F?U{wsOTGsolpNg#91D4ks-6!3s-k8BZNZ_;X
z-M4G*4E2NVGkg1=U*Q5GAEO!Ql<!FCSRN%1AZz+WN;CDpi3&Q92sM<d*`Uy|xPP{V
z`my|>q@#*7_YRs$Xf9jm&H4I=fnVlme_@b|@wfh`TJ<ey(|0OA+62>_NPALiNw;1W
z%N97ZQR!ILvPMe+<Jr|?m{*wU2Ky&PQdXV~fB2+94-%Tde<y0;jPS3wOL4JD)TGf8
z2|h`{Y`{zX!xV40FJ~ht_oF$G^i>bm%8T>(i~v9GOTn9m1#eZhlyrA4p%^tp3X<3|
zzsjY}7LyYSEQB2Ai=m*0>)UOh@0L?>iJ%eExP)t)MM@`PRWKC_;n`;Su(ReVj(yZd
zh8VPs%o~Q7+AblqPNZ{dP}K<k$F}43d3?hZ4`kOv{jJL1+nH+FV!5jbt${o1ucWqZ
zjW6R148yYBTdN`BCU@!SUtQaFNN(V(NBBd;3`HxSoZ;a`PQUz1P(rBIOvJHAg0guf
z7i={N!M2ZrJPUpQSp-fedxUygzT)B|{-V=MSc?*j;?v*MjK971_M;S*gl@OF^i*?N
z-D7mTMKHq>^*_QWEIZ<>Bvf^W$&A>>xcpe>C0Wq9J%b+8b&FI#*!^+Hq_Fg+8~%8N
z*L9K%2~F74$ThZqm9a#ks%luCl_mkHP^06P-VlA^II(=sPjVmkKGP;)pmzST2fgG_
zgh!5yLkD<<`=(4cYtUALQLX4Q?>T&Xm=(=~@nnUC@LvAy<N^3Pr${pjE3#2U%3MJZ
zPk<WNDV9LvGQ{*p4!Rs^;MrIYJJI(7_i(q+N(>Qr>P6$T4H;CkyA5SiXYbY~>t##x
zB=y|H9h4sH`kxHvs%l=zUn+CpEvaLyUJAr!tYWpf3F}1h{|R=4t9YHj)zg13RDQN9
zE(ke^-Cf%M@Let~5`N1kI}mlf=4VZf4SW&~s!a{cz9VHxnU!*s*Rci#9Yx~W)h&1L
z1>2%4Qt)5@1dX`kC@Ex$wFr}Sm@`*dcJFk~ogt^*&DOO<{^*fsCB+f7vL2dJxuG<N
z?Gi4@Cc6tKlvVey%~lK>DOtPG;>9{v&la$9W`Eb)7RiZ9@RY7+Q^Q??&qtYBECY2B
z5D=&cnpmY7fIAv~ej63;rwC}l?9$_1UA7ARE<xNPEqf+<dQJJ6yglK=1P&}rO!UM^
z)e58WOJ7+fn<dTiq@UtVJRViqIS55bitbA8-jy~|NGc(83dv#aY6l?vv^@-@ldEmb
zjm$<u?#4l@5ITb)2<t!6&fc*zx8A6>Z-rN;ozc%xyb@$DCXLvAkj36<__ov9a$3qN
zTQ0hRJ6m%tM8|mKQ4s5&;-E=mufmj(M%o{Dw^x)B&L^vnu%|6P87?vHgGPoZ{D}On
z<)QyR3@7BlkLttqLtHV1!z+`(d9SO#s({bnNYA~e#0&?e@lb?N36qStfmjS<H!fvS
z>vP+3Lf9}h(_K6c-=wjm?13d4;Y+6D(nC1h;p)bAoI^0D66q)WYCWFfGhRjMa+BX~
z@T}fTp)O1J`PXpMAJQbc(Vm80JKi{{t@mTt*Y_0Vnv4gpNbm}AC~y#>s<3dlWoU==
znlfFZBd6P95rU*T@K9xyq*$;w&#%_GM;V9op1GVZ-xb0ZD7oRSSBW+^+e<`9mdCU-
z;L)4$`-ItS7|g6bjuAC#khp5T=@+j(55$k`p>c_{X<peAkU@(S(wl_Lk0GhD2u}!-
zjhR_x{FSplL_nC9mo&9)R@)kBB`Bs-kZlp5vBER{lbSdB)uo-0uUIhNjy0H7sP>Vy
z<oP}EhxbK$s%4xnA1C%8O?(|!Px%XpAcO4NyZdQ=1ZtSbr&$to!hfP&y^!gysGgy1
zF1uEmqFNTW4fR3q5PM|8gJq1esTYhB=oIxIF4x}Syw^hbECi)>bBDDm+|zd$j|*GT
zpIXy;(R@E%xvO46Na}?d0j*lv?j#p0;JuqZ;LTegN^_K(XHf1~+0=3pqm5qnX}Q+A
zs{3+=s-Gnl^~^}(G*SYqKsEV|p!?`2Z@8Sla3EaIx%tMYt7^m7<y-yUDl(<w$3D~|
zCWN?3Xgr48FCVn4W{Q#mm3II9QQf_1_HdYUJnZjJkBgY-$od9j)wbrtS@^m-jQm_<
zP|urXo$>o8?ew+=W2z`dtiW2jdZTxdx?h1sUyfRsBftLqTX<CxuZhauWXk{J>MFys
zdY(3=bb~=F(g-3*mxzFXq;$7*cT0CjHzF-v(jnd5@X(#o{ho9D{lC25_S&;Eb5HEd
z=)>;Lf4x>A37)vIuHFOA-OeFLv6@!J^I1SAZU;Kc`@jyXFt^xR0zCR!@S2Z5LD}74
z+I+p2Xq{_^1!|~d8sQ!8Tv1(XZ4LP<#p;rwbGZ%5)=A*t-O4vd7N{9K+PYr|0uSh_
z*<Zi)flkDZY-%KqoWy>Q;4qq84jGz+dOq0Wevg2(lD6`LIf1v#;IZ6UtGnzR0G-Ey
z4WC0FC5XhO$>`w<Iw-tz8pI5NY@6HX1n`{HFD)hLtU|pd$EkBA)cq+`{%}D7!R`*L
z=;c5sfCqW@c;g|2^54s)q2<l(3(CS^U+XPhrlY5iF|jR4zp=ZdaK+8mW6c^LijXew
zIW>k_t(Zn3aBQN`{fr`UmEMzSuzCl$tyiXc%qWMxLHEO=uHU)*Q<dgLajs<va;A_l
zejeyQe!p9wO4rdYF>@ftHt+NW!e2Pb2|XdQpPjWM-%KE7@ec^GndMl|5wH~veV<8e
z28&N=eWtFfmpf#Ga-tQ0ukdqsbUvQ)u}mBJ*x5sGuX|voeE{5S<_Dca<xG}6I$XgJ
zfj5h>ghW1JwD6VkGopbinJftbc!F~tua>A8*skNa@V=_qIM%hJg=L0?!_BVJ@r0EA
zrC51Db=Tb0Hdg$4E09@2ma4x=*YSXVZ87TXkRu07rJJZ5ZEAJ`Q)jL24(A4^(s^s%
zVGaQ>Tm43n9L&s0p1j9RywiIlGdtrY>sw@-Bh=D^`{ryHj}uk0ZBko#S0%2Q>5e<i
zc0I<nbv4Bsnr4X^aA-^e%t-#;-Pq-QDM44Fr6Wfyus6R~JG<XR6`y{*TZ|!$&S0X8
znoLLaYgYT-{O)cdbGFG=JznX6oYq@$2f1vXt5wTyO@!XDxE}ScUS4ce72X?HMuT8p
z41J>c4y_>I8*%>P6<6ne=)A*FZPcPVUXP6cQPQ|U64t7r$cs-;4GMT37dU<+-o}3j
zX5?`{QX;L5deYBV{PYV9iDT3Qla<_SCuvFKy3{qFN`?=AUaap*@z3wiDRUNF9HaAk
z5@mbozSMjThBTd@SA?P$@Bbbkd?^7aA5GQGHtr|c<pN{O8+C^toB5GHBMj>ny?3IQ
zMCk7mJD(Paej_%XDwp2pzxm1Yiqqq`hfL9DCt^t?>0+SDXYVgT65CJ>f{24N+Gl##
z=Kh2I$)7xwzoVKos$akUq6P3>-{t;HqbTi6RpjcKOjJMvXz}aU$(~1Y^g-Z~2+?TG
zt%UAbjFQ~;I;y730?xeH;pJ8cUSTc<jYP@Z^r+HyWv^H*6Ween{W0cDq-&KZm%J15
zd|24W%JAcAUj_>U1-;eqDSi1t&xpu^LV;sTt;P;FaksI{D4$Q{?=}P2e(d<l{=`l{
z`9P$~Hy<e7Tbk8@o_~MeLOY5)e)ZyxDS9FIg@I!kJ@e1>ySn)n8p4;-u&(O*Kxum6
zv?gm4hsWtLFQm0p#EKf+J{Zhu`xHlv=5W>3H4e32Um!k_t05#8rx}&xnAQ>#3LG+a
zrmioskeV96SwRol(ynoi8gpm$z0|}g<V-LWdcm2#7IOhyQ`RM8+kHejO;dG4H@MyV
zT*!?f+jx&mYRPUB<3-cElgCPiiJla0lnpj>8hC4VyTIh#?5)Eb0jCDfhrmPe9t={M
zztXf#WabX>AA1BcFOvxN4IEMZ#s&ac?WD}J3zO@1X8_eq7=pUW2003>p||m-ykEfI
z&tHXI($poO2O}r1*^)@cF_6J^Wp5;S{JzCpfjz^$Hst>I@zct3m*|hwFvU!nr2cPq
zkMmWNopJ;}9XBbYCyX!38~<2Dd}Fv^zuOnraIelE^_81$?2X4o<i>N@zQ-pQGJhD7
zPFf~BO~vTR8|5whjpvEy4a|JlKB@dVX(}2`Q(2ojrIR%MtV1)kbinigFx|s6#4vpF
z6MjAM$wd=4pR}q>+PYLN!j`l8duPRtCtrq7etZ9AR9+qNPop8F9f}_0_c-M}$ly&@
znhgE9c?`EcvskuF;gWWm!E5b7^<m4I_q{WFAU)BRbHf&gc(|Gq?Niuu4Dm4gJ<Uf(
zC7xqPO=);@cc;nBie=_x8D;lq8<?*y!q_983${~G*jr>Lx52F-A^crrZD2qQL_%5{
z>n8v6TrlOmARCoMlM$RXJUrLc?{lKiTz{SP?}%a-KGA5;q%l1yehl4zW=SKu7wq+<
zy(jOK|3ltA={HcQ$NTQq``6zzb>!82oj0`8z+Wj$TcUfdMYy6#ua;$5Or2VaFX!)#
zzRT_)JnZK2-b#0i4=W>1y)OmEQTsbhz_IcBg!&VHV)iFCsr}ktsPCERl#I?yJVt7!
z=GAudl1KK%u|?EnxJ*9esb{nLKF@xiB%JH9tNmhjbj<eY19K8y{}A*1Y_8l(bi<~t
zZ-UdsKfGr>|GZ_4u)-!Twb7q$)_Jb@{&zsEeai45tP~@Jbp8*$$KbPTOJ)Cem<Kuv
zeR`d@#Bs~&y9g4>u$WSAAI36)p09`D6OlfSO_s1-mn1y*%jlp5ob)sSmZAdzEF~4U
z%?IC@9fNT-p$~&MwfQ^oAsLE&hg5HWbl4Y*ZFb=1v3DzsTBU~n<@>?K&-h|zsh&by
ztmZMUc=e+sf<MOx0XC(t$9_IjmD*wnEu#5kjP5hB-?Q<+jLkxsK$(X(w}i*TMjP~0
zl}G!}0?pZ&9Ic6nGq$K?0~!0Ef*O+|3+<WsiF5|9VdfukOB-ub;0m%S<F>(c#RAy_
z;OA4`*8+>TSA|g@-^RPV%_CRS5)%1b$16=cnjn%nxaE^%hx<b&kNGaAcNqEI@ngYE
zu{pl!%OJs=xBXaw84fB-j^AB#gdztMvo7CL$iI+*1#cAmHljx|zHrUuMbW4K;~R})
zB6vc!rSx)c;0wy=bIUr<SCRQRc@Zi8_DgB`I6pNCNNrw3=3~Gpgk@Ztuw4fE<X?#8
zvTt7o3+4!A@P~yR^zz9+=l0PvvnzgOnTBN279$7z;yf(V6e^@=S;NTE>}Y9n#o?=2
zbxkIjeA^Y;V_Nd*DY1|YNw4DT3Uf3TijRxYu{*OlRtP_z#ZfYSH%CLI_*lzyg*LMB
z=z|vF^I+U{fAZV`bR4w&i`BA9XLzBJytbOGO6T{|FA@ziOUqLg68oaQWMLVoei<RF
zm&upd6=BZbB=sk3_P_kRZxoa|Qc&RUxAS3~pn`qBBYMYmTWj-&ugYd@5$;A`jA#Nn
zPv>eQ)0G}w6uTB~|I?SAZ}4yIhL;-uZpEh;&nkP!nZ#rUJ$>l0SIz3diJK-DT&|1L
zsj?K3H!<1}K0~NCG{A^|8Z8vK$XZduhve`6QVu1HRl3sDzuiiWjm~%ZMb_Fm&ND;q
z4`w7f3be5<S)I2PKdGzyT_S!;&EI`Fcze(qbEM)yn&zeWt3CPk@-OD?`~9KRX<4Bl
zh4=1eL-o8gbY*|n2bwTn$LZ%#DfV~<+pOHY0ImqqryZ#CIIC};xUPzD!SSfLu@nBr
z!2Xzn?w2#YNn{W35_~8gQ;uAC)o07!G6IfcHGF=*8`A!CmN!B7K~kw|&}ey^7w)U3
z*B)kKb4@tXS#NeBdsN?8*>ar=Kasb!nWL(I)MEXn#1Xq@SEy?{l31nxM$3h5b^RAG
zB33JB(@sprV1D!?A)72GXk&d1m`%Y9p0ht)v4aa|+>kqr6?o`ca7JbuF*8pYe*Z{T
zR(9_Zp=;}+>(h^WopA67FM>YN>LL@<o&%4n0I#dKigqlzmT)YEfUm18^rtK|!pLFn
zhpw?FJOM^S2ZMvo{#ooVScn}5qXqRzu$XhIO<^g*IV(rHX;bN}JhyryRwSDJ98?@;
zRBtH*o{lv+PH_v1tRLwX7iuYX$|gr9;EQZ>@H{gfSpwGmRrz2R*grIb#diG0(y2iq
z+x*qlt`+I$L7lVe*A5wEf}Yf)*1tzWiVQ>_lqL1Pe`+T5^FPibpL<Nr-gdXBl@;-Y
zo{b=S+5Aq9$-_<Tg-TV`zFWIe=vVyuxX~x6qvor0t#~PESBDYjKd?^Bn&LyB^t<E+
zbyTy7Mm$W;U_9VTVLIi{u5O@W3dkYwlPskkE07q^5K7Ne$?GcK6UHx(nV{lFi{B~Z
z;^w1I6incDzHlvZu3pu#UQpVZ72NMz46GV3f7ylO_cl;BNeI<x(&KVn;e$IZJP*Nq
z1+FZYr=f80?U~EGXz`bVtbs%R-MfR8LBg)T{MjA`-6`6B&n|Ucw6pwvo&Ld+Y<^~H
zYGF-Y?>s;)-fnO*3lsWf?iKW9orTDL$D6=A>iRUU;HE1?WbVNxt!(7xL%t>Xo#sIH
z@sF~VHDTYU$Fo<WW7Cvx8LL)5HmI+hJDmq&EPimp9m4+oHk$9{pKrvP?Uxya0$*`z
zYju}Dk{m?q_L1R!3ArmLbMF8Lh&AbV-DFYkLn0)9N#C=4eFN{nd$Gf!a$79Fc`~~#
zu6^jw*+TLp;Az_;qP5qI8+N}><H<5yg$e96&$&kcBIEhZ>c{DN60B1A5UrB-#W^dl
z?KsWUZ;e^Ya3L0+M(hXthCD6pn&$#>KJU@0CdYX)&TX%5RwH^j<eO<W3g_YHi0Sx$
zc{CDLwf!|QIb%qrt3PH4lPV62M!tGxyER`PJK@3bej)CNO1VVXZ6hwxDLu1sfBUb6
z#GcOCJ94TehV2Ue=|d)`;YF@SV&A*_Z^--BImFA;hi{yQ)6DB~J3Jy<eKz8Efd?q-
zF~}+%a4i?gU`9t7RoqA8k8V;QW2@Rm)MHJjC-x;zcjM=yDLwa~eUzs($?T(5av%<W
zeYQI#U3qTo`bRjOeV*>8iwc~*K(d9insd)$Qc;Yc&CN>&&V&9kMyoB=!!weLRplqj
zGgYJPw%*SjmVvRJnk{opBL}+$HI3Am)T@V!QiX+&Hwmsj&GPYVLveNU^J2@tr5<$&
zIxMdgIiz$yb5K>4ayb3FoRreNW#H?*x0W%6$r*(^HPiHaz<@JqWJq0)g6E5iqk)t@
zhTcrv_s`6;L376=?Ii;}W#+Z1wV!WiNj$6RYJ7Tww379Lr`8?nc#chNw|lk*Q@R7S
zl0(o6-MOMhw2~)xCEWzC53^zu552GH`49}wq?t08UVCoZep_%9lk|>FTt&VkOjwq^
zOAHEY^HkLQwq77u%O)&xH(6Ms_WR3Sm)?a;NeR!*R=9BgPnl0y2IA|Ub9p%K1*IcJ
zd>S{@15Maz+p}z{j-iJ2$U}D3<kZYLGwZFa8UZCtcA{O0S%`J?n&xh+9q)lZc`4@e
zz*@@Sp{VocNN!#R2O$c@gu>&bb&izm+!MH6Nr82%-WH)#Z;XT&js-8)>OJs&95`k4
z9dOa7_#Ai@2irK_YT6Ey;w%`)?~rnBVFg<F-84NRvFj=wF$)W#qSg4hqXlDWeE8cn
zS&qg|kRykB%{Xo^#U9Y6`s8Njw(-VTm$iZA$-6RHxhxq!iFY=QlAlzTCmdB>%S^6%
zBj`p>=H<SyT$@i5d!&wB508gn{CQK@VdwEzZ{hRkCtpD&oBegC?{<?y84RAn@*}TO
z!*I5^1%^~dU!@k|Y<-ij3xD^?hz6<7b<EKv@n^+T1dVJ~2L7a<wm1l>ue9RR=C4Ul
z8X7vRTmvk4yNVXzTZ;0zU{Pu{h+g%2?is{2hRDaJ3%pdJY9)wXg?xK@&n=3u;11UE
zd*9D<lfuo*6?Tlw69I$Y(SK^J+=}(iS4tBO&i&)cNYZ!Vw&L9HCIeP&N#PcD)ixb%
z+=>x17^2;EB*KU6;p`%^Ocqxz)sY32%2uStiW07BvAmcbva5)ouK~8N6MK$p!$%If
zbbs$iv7>YHPelb3J~U}#0^iq`Q+PP60cue)Cad1DZ-BJ!KcwPVc1z$?@kU0h02jEv
z!sT6=K-VU>Atw!fVIF*WAY9cf+)uPmcj4(SuM$}F^(W=~PB3p5y}3DL3+BFLDg5bw
z+o<{EnRv6_Kxgklq{L5p+Slzc(dS&ZPt$cyFp7~D#Z?7#6TO6GP*3mgk7@dlem#m6
z?1C5VE0t^!kwJa+$eyeFExg)$Dw*Fydyg3LOYy%T=(#ny18-@+T0%W-zL|XjJfJPD
zEj<)}0=^`UL}ox24Ll&;O7muX&Jz`QZ8=>~t)8Y4`sUGaV*<SSt>Qyd+W#=74ZH}=
z@7+ix@U&yvZwVh|&+`%vT;I|o5mW)b`Hhq`u3*p#ew(h|OCr&GS`II*y_{2112KDC
zJhSfw37VWS$AJW8@1~tWgx4glME>BnNXzSJk!SUhubmK@q{9zdKxSK{56euDptOU+
zWZ=E+Bh&_`!)Rhij}X@g7Vt50goAQFO@NTp2|+WL#=a9IOwiiW*MmU&8+b56Q<nx+
zb<7a2AQ$g!NVbc9T@pEf6<M0%c4JHzV)m$}C=^oU>sx^?B8Wwx2E!_(N3X)Y93Cip
zNn5dlA9(W}o)>;*uL*jp9f^p|y1^S#r1sQH5#mK<Pe~3wyN;^v;$rm-l<lRol2HL*
zrF25Lu_c`M0oThIjz#uC>z#Fp9oj+od52#&gP?C>$Hzzz=$S5CCV-dJQAoYShCTRJ
zIKDFPl@K|EP}*n}20r?Z`sKD#mjYZb2!DYl0VyfRKhX!s;qsvw?v$MZU!s>@(y3j%
z`=?Q*wKHUWnQ}v20!YwwutFgO+KtXa3$S!Ak|)h%KP(i4qdiyA4nCI7?=8VPM*_tH
z?TOPj@TKl_uPUuJXXu-){p=8+##=z5j>tADq#8DC?J^i-VMW7a`v_V_=Mg&#zAum3
zK2)LzzU?l(B$znV{Kg@ZaS7FpkJXqFQe@w)@dR3?o^YhY22C}d?ejno_ZnS$u%Td3
zJ7gdS)O~t{G@BZC2L(^wgyWzpB*`&^-M$U9*wMm`12?2)xK_XdWC4fGW>(;_dK*8_
zCrOr$q#&~l<ElAg=%W;wM<!%y6!$9or~e2Q)V@F()z7ORL>)iXeZ$rj+v3kVHp65F
zoZ*M3Dm`Dcsn$~lkHn*{r6l?6LpRgNAke58T2ldMuwz;pkB6qEzytsARKvv@tks8z
zb{b*`X)S|#=(EwljVt2XGLoM?-+~MXTph3Qo_oH?KuTg$ZE@&(4jc=YLHIOeRQyjx
zdv^s>XrZq$(N!c!yQDNpX!4IXH9GZw!V?`PJ%l>7P-x);2Ipq}6OQAW!8xcA!hR&3
z#rm`&bq%<P20=Vyk!3R#QZQGGT%Sh(yniI7<;F47ta%u`_kgO@e*f2Jec%8;-WLCF
z1~pT>IwpPeG(iVqM@+~-v!w=R=E=bM^9)To%I5NaC;Y`TPS4!EA*w*S`jnzi&mcwO
z^|W9>r0lieqb!bx7M+0CUC1DKzq4JPuR=)|R1dGRg#2*s;>I8i!8a;N8G+ETE{1;r
z6#iBh<$l_Fl}*MEzpYNEHfIQ&-p*49A}yzYJRggmo!bpuRzw9{Kc-g=o&6U?#duwt
zxc`b=<EagtwD!TUjah0lcw8Q@G|EB0{tCQig4R23hC%WL<gGDTCF=uKUulZ2+AUj1
zbZaBSCge#$w=0xt*A4Kx2Rxa<Uy6aDAbbw$P<v{Kv?X5c10>ywqv^%m2{N?s8M8D0
zH(=rT%E4EG>VQvB9N?5!YpXzByEM!1os5GAK<p5!Ob*5Nfar%;=k6RK>(M6MVr_mB
z99%;E{bY6*bSZG=a`1=fKPBJ(oKyc74o`{)CeNOMs=&kIj-??krHvM@)gsPz8npPg
zslUHB`$BL7eo)c?QTI(XHn3(;3N*5}QuJIdL?P2`XkJ|nJVgP7qW){cuJZ)PI;NQC
z_e9gvxzB;H%rnYl5VcN20xChn^Hg$>&1{j}>M{ldf^C*%jSC81e>U@mC`j4_2Zx@k
z?<2_10`3lF?|PxAqfpx$HH8$6Oi5T31Jy#=nhxZGrY`55U(JnKZ`VblJ0Vy^D3;KG
z))j<#ox>otORXd94Izo48s#W}b&gO^FS;EPKqD*lni$N2apLlXs0?#6Kkx{ZvznPy
z9F*|PZbH4<=-)<^>Ftq{fRr!6|5FX@>u=ZXuQZI$;T{Ejycbe@gIbx!I=q)UEr|db
z;}xlDTH9NAAlNdHun22S&yC0b`_jOfdKzr-Z`B@&Ry9Q*66E&j@}1flL;_B`7pP7M
zDtBE8?>d);ft2)npDPy&+Bj#8WCu`uE!JK~K<P?ZccOidlPLhKv=>oyhS-y9!+yV7
z@e^vc)Zaif24O$xz=4<Udxr{QEiOBt6qnbHOF`Me=`=@@4%!B$j_8RC%<Y-zGhQ?@
z);1b6&}`9wQ4;Cnbr3}<QOek_F>**!i<?ou#XATb?eEQBGuG-@P{vo|PT&*t{_wQ?
zku(KYdp#KhKmxew69Rqgh@5=a(wYgR_zZV)9jLMmJDg!x-1q@HUm_`Lks3QZivh?H
zrM2Y*6nG)>&{8=+s7n26lSn*!x&mUE_NZUegaGRK0h5}W(4>G)?TpVmKtb0dB>#4*
zDoDd4r`q;kh42vU%`?IQEFYUKprBOF#SuWIc*&tb1s`JdIfOcaPx<=?aL)@Wd7h#}
zvoxvF7El#Suy*;v1Wv)vOht7;h@xHG-kHLNK!t{#BqLRF1+X-_ae2MHZnS0=gTVY2
zH<cBVykOG_E{V+De^D)+1qH|a?%3k5&%_X_*^rZd3pdEd!y6iUlN3P!1O(|8;6AQ%
zDe!KS7{QU+0b8hebJmg=-mnEjlZ^-I1A}t^v?-R=e+61gaH6c$P}&RdOiC-h)AnM@
z{!=0_-T4)%-amr!q+KlHj7K(jxs7;6;!W}*<e5YslTN60BI#>p#sv#{n&9-Wn*Zf<
zoGDq0bKbY0kKqqDLjFg;BrGRiaW6zt2Q*lESd|Y@|0bjR=lb2VdKtqbBqsH`RtM-R
zF&Ts!*O)!X-ZBcC?GFF0603-GEa!lHe1bX21)<ZNJT~(yLpSjDd@^elvOfskmXfD{
zdUi$x;S@#8nmK^3O%d1D*xfa}`xiKIRH~lPZb-;AnE*OV8+hrAln0w?`~|?+GU+Nl
zCCODxP>lS}oo}0*0B_Qw^={Ltp@F)F{-(>ZJ$N)okB*%|WuT9#{YEpqWsWu%WB~%;
zv%N^sg6zY{WaC=|-Mj+i=4}H)C=9Omc}@N^k9P%&RzF#Wb|QG8*Jz#&;S5&Wzbd{l
zncD-Us#5#3Qy(bN6_RUcfq9J9+meND`ClI6v@Qlx0OJW*rc<sBWuct4R%1Lg3EeBV
z6M1ZEQ>_*O6(gBjMo&L5gUO1J;oE$N+JdPc<v<Ro><78>WcmN1gsM!8?<DMBerH=g
zdIa#4;domjT+MF_1tUST4NWwJs5V0Lt!rtH0hr7i)L3mepw!GCYuV>ef&?Yxn;hix
zmk>{jIj4UH7DWB2-uF}#Ql!Udv;3~*{gj_sEB=w0d&oX?iC_lOWV=QOSb@Foy6B}L
zOoHo-bJK(P;C(h!Z(K&}3LyQR%5ua1r+<s*Xt)V9`+Jcou?PY%UNIc`wK`n|(*M$i
zmJ1(3h-WG?2em~M9_ymj7V&l(-DJGph`}yq9IjADV)bWv;a~Cml6tL80oEnT{Xs3G
zT~_c;qZq;ZDp)6w(E+31<x&4<z#Z$l-LNYN0IjSej#{%Ul*{V`>RkR=%T|7;e8I*a
zU{EzfS+{Kl`D&V3<LL*$7CSMg_=VH|%K}|HUm!+XEBJrTjR~Om^IP34P1O|wcjD3n
zRx>8FK-q}Y3M~CH2%>-c4P0r!yN|>vtfn2oTAG0r9^XCqkABB(#h<|g!rYSW<6l$*
zUIRJKb=Eft``37ETf$~MGT%cR-MZ`Q=|BJTTS`@H(Lv_3qF2i0gt)3s(nm`|nC*D(
zs30|*Ec5%$(J?`uG&!ndSP(cTvZL^QC2`0MDfTd4ptJ%v{=rfzQXs_AQun&9)IihJ
zi;*T+oeFH#`H#SzJ*vcE!M!3-c;qqh{M)}ktu;~qiv{|D=eY8-93(S_&cz>S@Bn&*
z2V&0kfq%JUyujBJZ%`h08DDJ6(d&N!rKu#fBM9*<ePpim&-dDw<LMAinTdl|haX^<
zw!^whQIZW!0+;WH{@c1T2p9e_hOU7qP(=6eOrAk)oS@7xJJ6N_Jp_Xj!g*p}X)1W-
z5YTG(mo2=5tcN4VgRG{62&RONh0hB&(3Z<MH@MINBy8cA^2elk8HpgEDU_<`av)(x
z_r2rJh7W2x%sDx2X1BvR`?NAcmM(A`u9(P%mMxbP+p9~!&G3mF$5&yq%4gtZyB9@F
zP2XuhqYxvXP>!81$#WEL`=4?JN~VY(=rY}rH4-A-e+J`m%e$`gW({+V-N&7h&u|JC
zv?=U-C6tXzA`SWYvUFO6ct?Ujzt24P9W8~;bDhY#Dp6ixxH9?ts%x1aufEHhh5v|r
z=J84=dOen=S%ji&r0`uOiQ?fXSGl3p*YWpdCRBbp%HAy^C+RM7&(>f=Mwj15jpknP
zi4TU-dYgoa6vyV=(TV@+AnWa_a8b%^uj8^@L8(+$d_AhS-V>PpWh-0NIZ~=bu_xQ)
zb@ua*_Pyq?{J&RCF;2-j+{U=J#L;9Wf+7t98qx(ywCi$zB4oeX$7Fa<-NX&8Gh`u=
za&>n&T{N2h6fw#xXX_rek+U@L|E-d>j%FU2bj^$A$C2}8Fn{m(nMLO1k-yVJs8NIw
zrXR;`x%*33USiq?x*AK%pRM1Iel-Ru6#vqVK+b6_qa0#11P8Koq8p`Mdc$e$?Rr`n
ziny8bg+E(u6f)F_{!Zy>eGv=1|1LVQI1c>O#9%;TV5+w+92MVA|6PbGERHVLcq*{H
zSGFkXp-EG4=|`|uk}j518;82&L)FzltI7#x&6Y}NKS>HE%nG=Zf~5PsEyg|)zWRiV
zpPKbB3C4U}hTtRQfz}qkX|mp)_qK1Wqz#=FgvL{lZoko{4Ac|-*jQRNoLIa@khMLs
z(s)WUAUaOMJO6i}u8V{X+4lYEwHrg4&xZDri$gi<jcN7>z_RkEiy<=#(ZI+b6++2?
zKEvDJbm(Y-<Fb>KKPqQdt~(v`KEA)cUXl=PzgX`+<y>c75$@Andq4WMR+5~4DyNvJ
zfD#cSqQ*PQW!tk4$v<Eb4y~gkE4$h4HD6erL!9R)+bo4B_2=*yoGu?TB#kfYd$k#E
z;HorB!k5A-l*L2Q{JvXXb<VyfEzdjt8zz@2p?0s>i}1&@#2M);p}!~F;}E8NV*Wfk
z$@gf}`xeEdIG$mBpBc5Y<6g<+pvlRxkt`Stwong7yN(|!8jUZ6vh5w+lx%x&P!m(>
z1ysIi7{a}f8C#~pS++Dg$}{I~cqi=iu#AkBjAe<4d*8j9s$%SUfnh%0b`(_@Zjo`f
z@Eud&<mc_{{lhe~%TEP)D6=rW50}N%ZAPa8t4Ay&417{l7lopzFfPk*(LnUtVrmO9
zw4!Cjt0@GF{;0V*b_dP5XuRAAr75*Q>+|d`YYx@msjrlX@=9Xk<1tNZuba25Zr_U2
z`ms-aO3G!7A18l_sgNhM_Rz4OQ`B**^2o^JO=Ut=-J~o0z=!w@Wwi*}tGJElk}|(+
z12!*(PQ<8b6}P)@Q0GtS;em&x54i?D1AlRktVZ741`h6+F?YMbfdo%_w_j27+Xf_+
z-fMe(Nh7nn*f+bh3O458pwO(?>|OP}ctX|E4>bGIGo`j)yVyIt(BQ)do3OS?E!2vG
zd6hd9aFKoQW=!UmOYG70-rvRC{28M*&$C|U-Af;pety%3LM0EC3nMM|CmJQU<!Ljn
zEdI%w%jp_zO?>P(l42#m%M9}C8;S0dIa9!E4HZ#0(Y4#a`wbG+<?ldo7vIFwVEz2~
z<p(9cDm<?o-`)HgsB6YEth%1PdkhMnFz7i#oW5qznH)V(_}@a-&AqSZD#`YqRQ+`}
zQGHH;PTpsssFT`7+~#hAxMC_h`&o)^&ysh?5qD}*3aTDIFPrTaS_@Ufe~qQel5dml
z>4P^|xz{*4>*+IUNm<F6=XmyG`QdRkjO1%Q4`1F$%|MHc-}|TU<r3+|-_K|)8b!bk
z3eL6u$~(GAHR|5Jp1KUFl?0x?>WSHNnAa0TOCN82{yfN85D`)K@JzIAB&3~}!W+Ja
z%49_I^d$>+1RF=0kr3S&5mCgl*3O5Ut<zDjZVI%?sFLIFKjdB!{6cTm9VFIy?%r@s
z%Aov&wx%3YH|3z!_hd_Z(jb&`G73ZMfu)t#eD?k|B}T6kCUu(Q96zSc#`|aGt?gqk
ze~Z`}?!Up-*J-QeUmL(MB<W=6V=oLkmT(RgDU!HLxOL^|gAJj%4-Rdw=gvNa?l8pl
z)DjF|NSpPin{Ibz3UHwLIPVpFdcQRk(WdQyy4$nTDEh4bf?vw^(KUZ?nDd|Z_r$f^
zi2@sjuH<4~P4T*VX}JrNNL%%EP29~hgh53DW6jIjdW)0RB{ST5_u;`|SN-jVrln^_
zv>TU%jFWeMtqt90t?x4q3#Suc=S8RJYMzgE9qKf7ScfkZ&H5edXb1SGbnXuTS@r?)
z??%qdMrt_B`rl(WF@Bt?c#~k?ag%sw=zHbL$i88AWl=2%PMW$kHzp*fUAc<T3vi9^
zvEpqUR!%1*mtehhJ?y+~d_sIOk|fd3PpNZn5fY|Cx_nFoNUh6d<gEQmT78evu3me<
zQUObO<2lsPxo65_hzCy2Z!TVPOkcC&oFu<X?k{H1y&nt-b8i2sZaCHS#`CbFGiB*w
zagT^{<FJXnYBceL$UQ53+?c={&Hkqp(T~`VJ#?^SUDk<)xO%lRU4j+vl0wdBxJH=6
zz~90Nm{jiI6scdpzNpk?lHa{X#E*_0TT0y$qfj7vmc!KR^$Nat)B@IKV)rVN9y5V5
zy~|4<Q$4#*ZR#eA()&xk(0*V#h8TN`!YIM(aT3y?Ch_QqZ85S=AK2`;^pZ=F<cTAB
zn0ehzuFGL3BSA)rK$o%cL76AtBbn5e?lJe`+}xY%4pxm#>rI!Dc@F0sHCfL-k|ds2
zLw2O(Y_lD*j&MpH)l4^Aif7I_$#|^#k3<*Xhw18PuC2#O;WRit;#X8)JrtJ<X%W&%
zF}cdxbzv`bJinRB+zKbJWBF@aBLmE&8qFhBxVAjEL$*>NaH<l(2YGy+T_frT*xTi*
zVZQE>b;PI#ewW^}#!xKCk}vw6g*lREHV}txI=yo2x`VEHuGX3C$;v?3NJ*Hlxk=<s
zdorolw>r1y!Wl@-e|#%&$OXK9kgoHgeEqnYfyvZ(W$f^CC(gs?%L6jDWAjg44@(}v
z$|ln7OKIC83kiH!n%(Ww8}^&Ac1H@*hXe1KGvgJW=<tU(y4I{omr_4hVKNcL!uYU6
zyW2Uk@211;L&Dtm9Sw-VBke<y-1o5`{)msY4+(MK_fQt7vmI-QbqUPz&<lKaQ@Xx1
zki=;Jd9`}y`sBS?-%e4*4W|sUZjz)_&vd;s`Az_8#V_FAJTamlG265bZe{RSO6)g;
z6W{Q*=VwSJMqbWrNJM-Yy^IRkQM`l&z<rO<X7LNQ*am*9!SfIz#;zboWK?Z`DWv9p
zB3mb&hLAOY@A!OsS?yURX&cpn@RP>C;j|LB(LHL!kSDEy!ybIQQZ=#S+LamvsA3_6
zZ5abBKhLbg>(;#|3nXm_Uxs`Y{+d3ZKI7H>g9ul3yRlv(kg+_fmWNH8rM_e4$48Er
zl{ZOoZsPj5;V9<$PR4jqAGuyuKJtv&mC}z2?_X$jjh-2y>wB_qnB-)<MM^ieqxYHQ
z8-6{X-S+nLdLKG7_rfbfUTYn04Rl1s)2$7;bLI9zLJsj9qlk{uzeZe>UiBI;r}bDE
zQB=cY4aS50*_2bHhT6Q=H!3n8xiYTI_F5YSFhhe>rwmqCMt}M8on&Qrl$eh_*|Po*
z;s)Gz*3+{Q&S<g;L<C_hn#MNhBlns#BeVwejRYOr?Q-8bbCF{WUuu_P)I?@<&J3$d
zB4LQ;tBA?aD1J{5^7@4}o0_5u4DKs@vXMMwZIfAWhdrH2V=|ok1H~ngPSeR4slIAB
znPE~RTt{HX;fbB8xxN9Gc$CIaym?rp0H(2V;_&R4epkN6hrgpikwC2@)!H2r7JR^M
zlS7EzoZtt!ykMl-a=#pemgC0ZA(8VD4FXH(+T^~y*;fH6y8ud(6#;YIm)+tq6!M8$
zJc%gtfq2TXu9dz)6vVO!$)+WWtho9#;*k}0#kP`2T!DB_>P%L#K`p7Y-hB!Ih`>}3
zo_>fe-=J`02<`ik5CyF_xNFqnGP;5b7m`S1l}PNz+ejh-Ngtox=ZG^)xW>!(JluHE
zPjr7FK>Ra}JVZlom1q+pbm}($xV>Wg*V=Yeg^{onj}5Kh`4sw^#3wnKhZz{HcPCG%
zqzDEZ4PWHQi?fl;;Bnj3b=4w9nWCw_(A6{hammB=iA(&mD*g5GtFOmq3`s;4!=|3Z
zH~9w3qhG6%R(K~loJN^9g(sNATc&jmp5rI||9`ijd^7LO>M=ysr9d$mMEz<KM-itv
zeNT-N6C5ei$R_xlF8*<jMbx-FijYfX3i;UWV?XV+JcdtSn;mu?srBQMwmp5`$fdp%
z{s{b8n$g9re+5j=F>S6lf~Y7&Kkj+u^8|;crNc)x+A7*RLqC3*%_!FrGu?_Q$f%-h
zYiS`38~Pj#cRi@G_)#?qbDrM0H{~ghs-XvH5|-??MlXtRo;o8l7xhOkDsrAqIyx8`
zeX^t>xkgM5;rlaf8)>9=JPfPdtjE<Gg3mcjU)u67+k_iSPgJjb+?j?b+3Z?v&lJjs
zoZwMgucQbK?5egcS<Xq;K3VggMi^CZg@FWJbhcMIdt5E2X`epAph3u#yNM6@NzK4>
ziX7yw<yvDZ3b2@Qgda=RIj_wHxM*K@E|w`k10E@l5@_)9-9}UEw5`{6JYUi%AxMeM
zXjIrWZENP8ZaaD7qzB4Dj+RaVro6T<21d;QMZC5}jqyda!B36#B_$!CWEw-R8C1QY
zGN0^=M&%wrL+>2eNG=+r*Yc5X$}?B2H||jmS&9(ZBdsqDK_D4JlMxx9)byXxLr-~g
zJaD<EQMCmfI7sKywtxrCa6eK%xC_B0H#aMRG?tYP`O-3NOQOB4WM5ev2(p5?EA1nJ
zbcd6U15yxOR|3lcDEMw=AlCg2Xn~bkJRe{nx>RD}fvp9xl0QBF1AV*KW5VnJwc9t1
z?Fj{0O7z+nK`=d?Bi-QihOED33$X0|rG=QE9VAgfpyc$<{GdVBp-CY$VBiYYf;ioX
zPKvcp+opIopGv2sc!4}4xU2KnAhR%bB{x83nR<-q1JO13-7vL*2-5i)G#={>^&m-T
zY3l?9K&$%qxby&=U$4EnYIH%{579SSL8~hkheiQ(@Hy!M)^ZG?d^D^_HQ%TIutQ`6
zSlN(zE<;9#@{pcA>{C0C<|j$>SdjC-r#4Ojeo@ihuJ2hrhnQoDP8mYq6fo1qp~0M!
z6Y&4FfLsG{46<*aDq6`YdMur3s|XSgIR}4GK&$ZYK0DL|<u<z6^yNSR_7UExK~7IK
zq85Vygd=0W1L8^D+vpm3K_DD*UQJU4q=IFE$1`7W#uZj@h5&7pBXconkhjMbD|WRM
zi5(yE)s~Z_d~~fqg+`dr>5z8@EYXr`E{IC_fdu8+hV{abay1?CJ?vfOoZ#DgE}T>3
zChiLRMrb9ujR;SCs3#VZyZ35!bNA(@;P6!9p<@C#)hN--z<Gg$For!py7B5c$gB%i
z><BUQED%hd)xWi+*orq#l1l-X-!+|gZAKmg;-xj`llLp1{QxI@^80e5j)&l7r4n7t
zj687e01{VEwH3)u0pxEUS4sld5Tx@kECCu2W%@%E<=ovxAc*sVr$PH>A8AAYd5vq+
z4n4&c!FzkN-g4#xKnu(W&yzy5lgP*$5Ge8*=cj5MMv&V08YUVPAVV#dzniY0xtg-$
zk>^x6>eBR(B?KI9{s8}-24Jbs;5{V(&FWcS5EKgN(QO;PLNw=&1|b+l$8Lm-!rWLN
zP=t@HF;s@E3GYbO>k$74P_G;9a(Kmz)DIWbiuv5#BMLI*@ou6AWC$4PO5fxe8lb?p
zrlhc>{dPQ!A#1N}Pfc5VHD(hCr(a?~`5Eqe&})`Yakd0O)e1CReD(*KfbWrnM~M-S
zzk^1NcWi2%<OnX_<ZK(QQBY770}Xg@GiAOB#SnKN+A6Q<<Af&bWgas=X9&>+hg$#S
z0~sjZ<EBK81yVRQ;FbCd&@jyhy+>-$6yb=b*`^fa8hlooCsg3q!}~KAT)?~(t~&LN
zzlA|q5)TEgW}6rQYr&?}U;8AVK?MB2%=RlFF1fM4euqPWFpvcN*!T`e;Jv*!Oi<jU
z1#!&OaZz3a;iUxo+kgvAzW%#v<}M70RjMv%N(POe)OOtX3EC#&Fheux+nimlM4fGB
zss7GM4#<xD)z|yL&)R^!EoUau!6*{uk`@hn1!5*2F07=1SkHXaot8o#J4<0KJsnfK
z(tinl_GDYX@c>nl?xr#-KlA$t8r`udFHZziL~~p93IigZzY8zr`w&~a`MYJb<WMfC
z2%8i1HNMT->*~$A7uTC!dsZr}>pak64+rL%v{3&o&}3!XqrmT*K;Uv&*4{ygv;_3&
z=j4MS9iKYKZU2k<ga@{2tnWa8QSj9BQ}sh}FK}-$VF2mn87ldfhmg6f8!$Q2G=l7%
z@+f3DQ>sHZm48EWC;65=1yg^>wf7TIG&TQyaJ)br>W%(4-C6QC9mt}njP7^r2GjJ&
zP#EZ@;r&a=DJ95rP}1AXQP6j-`Ik2I&CMr`BR&AT;ShK90H-re4^x7?ns)gun4bl1
zB%fE@*m9ndXuH(R-3%1B*=zyXZ?%Z}9Lk6FJd1DY1p+{7W_Lz*AbXX0XE$@~(W|Xf
zfR4{~W8#A<y(JEpEmYtSWiwdj>ItDdaZRr<F!&te_>Q0L8IT00+eR-?wSGSVHz)bd
zv;ZDBa8!OXvRBNF1@7mS+gf5M_R*PSIiPycwBuoz`-<z7gh%=M1=T@?0v5=-QU4mF
zf@y=q1t@$QinasSn^qujO>CF4Mm5l#Zamu$WlW%s<n=O2C;)KeV)x)KB`9mOwy+yI
zvO&Nc2gB<lz+4>vOmpOyC}jXZ0lN|p#Rf^Wa^Az>pSgx3T6Oi~btrN{`6Gl+inkLi
zV4fbgPDr2v0<bf@|LII*&srhn3gT)!^U4qhh$$KGup`I~Nr4xMfa3i7Q3nCE7q+@s
z=O6{GBD@VryP%K0^g2q=ob*j_98f({w6`4xxmqB>6osY5sui1R)>~Y|rxzzQP?=(&
zHq-l`qlYc3XIMEPK11;2hCm<;mYx=-d$RJ>wq^nf9%3D{^5l1c!wb}kQK($?MHD9n
zfZCIno|r?Wd*~wZ3DE55f6IPY+#vnW%^WUTLQs!j>0+%2t-nB7Y&*B`1Gk80!7|xD
zTrH=rPku!Mr8Utzw!$n`#Yh44DSz&M%_O9<X$iOC9TaTWZ%xA&fZoPy+mb_o4KiYS
z?t}JZl-Gx$9s~)2VH))RMAO{ZsY2D$@orm%6twn``m1mI3;z=Ehp$mMphq<wD#o6M
z@^w9O;uF1?_*Fp<x>2B_Y=aEyLT(LfR3QYT-9J0QL1W|QNE$e}TeXzB2b{!k#F{h5
zRox3EZ7s*_6LqK>uY1SYLg9G8%w7Qnmf$eYAvYDYIUJcA1}B4jiZ`EeS$kc!&Bp83
zGh;$^L2l9I9N71QQfkdM_m7~QQbosawrL8baHF-pq5mof|B%lOX3yoO*B1Y)xFQ=U
zr!XroXy0gtK&GA8CK%-NZaGy!=GXqu&k?<I8?+G1TOY&aTSW^@iDt7e=G9}mVDg~>
zdX3j$5?|X}`V(~wB_AHApD|$mw>fVq9N}z^MH~w#d0i0<rsg1+ZAjU_9p&DtRx?va
z@)F$EbD<uiP}+Als%JJkRD|Nbj{O6DG+4DB4&M6jPay+E7hR&c%01T-l9EiotqJl(
zao1&~fimWyLj%gcx^tcx^Avy_dD45=*9hiqn^AWkG_zPAP)RLIt7I~WMb<jA4I}}Z
zKQZ+`7vJB<JU#?01oSZTRRKk!lt8%-$j0WhLEEgc(RNABAG?4^m`k&*xgfF98(5su
zVD|UuwK!~r+<?TWa{dei5U%1T@LymFloEAMih_;EHxJ86e=}(*!P6mlXP*3YFI#Df
zH;snvKSv-`*pe!J|0~i{<*J3$VBLXP<+2MvUZCnZ<{U}_@}tIayA)W7a;021n1w(9
zi$*=MO%RV8OIw3N60rDB<VAEW0PTm@*1hPZ(?7s^vH!ENOUKw0L{M{PI-CX--Vk)t
zB&b;+=ln`Gx2+8_vGm_(-vc|La?w}oJadWUVB6u+V>|Z>Vn}zTy38xjjL&#iJnZtH
zmB~HtI-h{>U_~T<W1%iepu(Q>e`#xrEYUhGA6Zi1>*f>*XtNkr_ANL_L58bjm45(Y
z*FU2{Q}JCk;h<;V^2zY~7yWq!W&2c%z9hgE@H5M!)eQd`*>%JA9&CSn`IWXLAZ)Kw
z(aZnaNSn`o9sjGSmw(zOK%tYib;V3zC-|*NbVx%U+!%XSTuW`|NXnpw*X-ye%TPm9
z_8IoCur|s$l-m;k9Yt~JsV#6^fL9(n;r{GEatP}1MCVg>L;-f~m@B%^{-<gX16eY_
zd3a2%Q7o4^@;y0e!Ej%;w~0cAqQxb07&o_A@jI!^^o0b84*n<mVhf9ePUdat1Y17z
zqdptmC`2!m3KZm0HObxwtr_lf{Ou?}__BI{w)nhr!B8!!F_UxTTBZ>85JoaENgS&?
zGyLXOi1FtPSLKE_JKLnN@p+sn=QqqSOxdIk)I{#G%rYwRiUzs!G_$XJfup~~2N{e$
z=t;*IE*!lSXJ^9_HqHrKsEhIzL71|n=2Nc^#>AZQU~QTl?J)b=eV#nBx;d!x;X^fy
zvB=?!k(j9b&Tx6FqHB6Ma-YNYkbGgt-`}h`Q9<tzi=9pX=JR~U>&E9_e=T1Rl*+m4
zLaW>*m{IjX4j8{1s6#>SS@qo6lprf=ZVM?#kS@%o`zQyLNBnt)#T+6t@484C6x2hU
zvQ*_iPj3Om9DC-e_JV_L83rdZkU`Gk7&jucylVGKxFYk#oMqC4F)O6Q*jL@}nUD_s
z5r(Nc8D)OE94cL}>-s?sJ+ih6Zy^X%KA$gUKy946_FOu_Z*($u!)lN=%dWXir6AK_
z8jWgQPzSbx9gaZnPOM_sxP-|>0H}@pt|sMc2#m{_>M|sdUXLER45XvyrCsoW7F8R{
zdO|$&t<%hBhKDbRdy?&v=AW~9tA6wyY{`=C{j$uBCVMP}F8+>3BUFfB=E$w{`iVK)
zT*3ATnxXL6b`@F}@SqT8^m7mOoz3>IRosDiRq>WRbNeD6Wq&x>MZvD{Cr0SMi)4Q3
zt&~#<6*8jQM)YS{_6ev_34Qhkqvj6rBC#Vd`=MZtfix>`#8Fly)cb`h(^x=nmA@xi
z=(q&p#N#(RU9t*mjPZ*qB>BzHl7)%`$weOmnPD(3eN4}}Bg=0;Ux+7$7qn>b&@(PH
znR8ODb?{!}R7OVQQVaPPRMCHMP)(F0dM!_%-TJmyY0u+=xC(3fp^|eVH}m2Jb5`H*
z*@afFTa`CFSM<df6&IZAdV2QA)c_`iOytbwOkG5-BB|n!*g~GnvFc*TJt7MmM;Ecv
z&C_#ObHS?2S;B`^pQ?TIw8|N+GRF$vk?=$rcyIRG)of0?nu+8fGezSn<L6J%KA6DE
zg-KH7MxN%8r!p6O{jei*d}aSB(DBFZwztIX!s$3mFvUkRlOc&+N4ZAD98|eNy0DUm
z6?~uKl04TqyvF$#b0#8nwm;YqgJQE(DV4G<Y*=n9fZw%qQKBV$#z&eT2s!sIcs|=E
z`oyAOo}Zo_t!`)+`8`fH){8~5EoB$-Q7D?m8<MR!ts%rKt#6X#?2)ZFDpffrwA##5
zahm>~yRu_7&d6&P6;v3J`Bm|yFZwT|JJx&JBtoRU=ml9G88!wKW#{eoA!z1K0rnVJ
ze*1{MP<Wm<JjpKrv(ZNI56BX|V#>H%wgSU6D{NG!g7^>7V#596cfKY4>E2n^oAjSn
zTuK8|kvg(LI@#0Zmnw3>Rob&L!f%`Ay5BZQCKHHtI+n;~vyO>ML?1VY-7k0Gr0aA{
zm0va&%*7f64wZK9#*@KbQ+g=t|K=4W{Sf4_Kb7fotXM%elD(VEB;smbNtZxI-5f+!
z-y&11IJcP|zu}E#-Rwf<dF4}A<~h3N6yAq)N%2DwR@iCX14rI|<1rv@tIi*pA|23e
za;m1}yQM!8Q<^AZiAC%nDrDY~#;VYNQ%qWA@`qedb-2Qd%I3SMUd}mk2i}n>%@~%I
zDQ%oZk`{8p>`Q`>xzv}K3C$;Mr5KFd7SHADeRUHHQ=hdRaO)~ZRC{GdRLU?oOyP1p
zG42YJtU#aCW^^VEuc#02F8h7CR@8IA{jv+s(PdT@ToXr_6ni(VA&QYM&!{cilTuI)
zuCr4si#FcrBnqZlirnRbct!Na&X$4SgwsiReHQG6!wq_t{i61YDg8^lpOk)Ot)0+u
zB#qMBW>o2BV>ZO>!23059}BMQ;2Wvus^1MHk$_G6UI7FyPv%0l8OcP_m8#G*d?igU
z4~^5u>13F{mG~3RD+X~BD0DJ3kK81R&Z@a*sAgXeyqdTe>CU!El(Iz0R_q}y`kQcz
zPhX`-F8&~Dx6>Uepvx^)$;%hsPA@T=KAdOo;`>g6B$hMgu1*LkR$F<pT{eheb0wuz
zp-t+k$)$8zu<p*-Sbc{K8k_<F?RNB2*jXmWt)(tuN9tpZq2LTWxFoT(MK?@Us;#OA
zPpg}RMje~TXX5Y~!Nc7`mdCL|^Bj>>3rrJFKE8&tE2CsObPJ6SOt5^R^+CEB=K~$w
zm*b7U*KY$I<?GlUuq|HfYTY$3d=rQJ+BRnGVQdzQbAkDDw=jG}m-dktJ&DoWMvJ3+
z;MMtvUH6lG6nglKpiKNpO)vGTPtD(uXoIO4JVPO-Wdc**)-(Fp5#szNq#v+<<UR6Y
z`kQ0+NTU|Fl(CLX;TzK?sxo16z?VI&Iy*{j6*m;uQelEBxM9CO4Z6;W&rvXuK{vG^
zYj^pz3*5PnLAHYNmPm}DAL>gkgMK`Lt4sK6()OmCkOaPO<?lN6W;<k^9i~I<I$wa>
ze3-hHEXeKSiO*fg`{ET8<tKwZUBw}p1aJjk-OVsfYFa9=w;ijHXwl;9VY04|(qp}x
z78_EwIk$+ytv-%eZIU^%#2^R~Ug@%hXWT?0F$5osz9a?C{J?!S8)_hQB97MnczmV7
zd9=aSTClQkF-q1_53CCLe87_XQ5GFeW3S=L`uWyun3ciEgWjJs$b4;%n==@-c9iO}
zj9N~rFTaTk?k(^>*+#3g0H#js>kl&^zgY+jk;5+pyi%53>(j_chpdb|<tl<=8h&u`
zuG5G1Nwb=)GDbF>%tu1eT|5NhpR1pr)Ws*;K~{D-XMB)XuCQz9(N)a48Gz#E7q+_Z
zB^QcWLO6#?gYn3tV}=()psjhSt&@jyww>@rj;)oxtk6F8di$e6l^1tfkkqm*Pt~&5
zOm-YW@F|CzPXLN(4nVw?zhNx`O7<HvBs?;Svobi|?sr&PXI$R-p)#S7>ibTqE15CH
zEtM5AwH21@g{-!ZeM8TW+QaB;2p`kjnmSEo5BH)kO9$&4Ws(j!8Ik<1B%??PE}<u#
zwmrqQ&@!xM7bT^yWA+WGdcN`t7ZA3jd6Qu44*5Nf@0rNWI_f6`Hw&*`?j=+VQ|~!_
z?-Yl5kaoyoz!@-3jfeTFkK&fUX~P$Z#RKDB);JWMKlfD`OtLcS<|vUW=uY!*zvqIZ
zH|Fdyb*Nm``e(>#1d04;ReEp(z+{M5tG(>aqY_Zp!)?{P54SRZ92$CF&SfEeu|)PT
zh0h4V!zVdJHC+VE!mBc4T>$uw<+Gi@dQ{8f1E=pFAJPqsg27OoE@f7FH$6cDkG{Ge
zy?P93@@vwGjBt7wv@*}OnFC~H_+Dph-*=9H{em&vximm4cXS15Rim370V2L^*Y`?+
zA>Hu}QRT=vIOvAj#&Jf|P0@CxDL{DeVETjdA4lVkmG=bvY8yuQ@2Myp%m$ucDrkRq
zbPH;8SI+JPLa_aQu**--krq{nU_e?6X`zN%{j+*#usc&}K2MWyRHNuj0Tig$dqv?R
z%%6bFK{VyB!zPJ$LE26;x6O}`{Cid6NxJyvYX*NgxV)D}VVuh3uUmtE=)E8Z2PV3o
zlZh{>``g_SM||U2ICQ8FZn_e3yv_aInRUg}&Yr27Lb+u{r~WPw*4aY6e~I_8tUxv}
zz4P)lkYCU?M#AuC6G*kn#quj_f@n<uD>G2mP*^a)C6@z|<)6;HwBT5-0d{c$AzQb^
zS4s!Bo*zaJ-#H-nP4AP1Sli35)kKMe5b3DH2(H}M?m3y;uW)`Jb2s_QzPf(A;)XI*
z<;979CQLf6=a`YRdl}u4coUQtz;dh#Bv{^=XO+rdv+Mz`?V;+H!r)F`<G#Z?p2L~e
z2Vfn+*szbkzi7_(x+IhP`p%@ri+d=d<nTrK+i}fSBPuvH>q8}*N8X<&j;Vq_l2MTd
zLkS0e6y1RwNEpl9UkUdX*#I*Q+QIk`lJiz22pZY@CxN|!V^mnk?2Bri0=W7Td+t@R
zD%_T?-3x*CGP+V@?k0Wf-Vu1~gm4&O^&bWMF(2EAascA=lZ8WiFj=qMFu}efB>x2F
z-aVaN#{={F$dUNxc2UN>_uNgwxHY>}E4CaZu^Cgo6Y1h>{dvM(s>H9R#K-OlvN6ah
z%g=Zdjp*z{9Ge*Sk=TX1?(-!2`f!YsIX@s7P!##6T~HI^%$|~v+t42It^atoBdCf!
z<T}JhUE0dUzg9|r+yRFh<6TK~PNzhIH`@-Z3naegQpB*QC<=%<#ymi`_!5r&o*?u}
zS&G1qqA0M|yz7u)Him@!+wc9c_V>`btfJj4A`>CZ?&B8$zDpx{hDmO5080mVaTChQ
z9!~zXqdUb$W8FMNYrgTs?^@a)tQ)#Bm0kT%dIeQ6Pu$#bv0MF<{Z~I=!Ru7u4mEGo
zVEsIk$<?u8Xbo#Uei3+|-6@6p@r4+}k1xB(fypnI{*S0@j_%|6+D&8IW@D?dZQHhu
z#%bKJX>8lJZ8b?_Crujj-Q@c_=l$>I?laHD+&gDKlbv0PKlez%xmPOv@W{`L0rdoY
zG7W>CMC~5-*h!E!UL+AhacUxMWhtdl_WRL@lFc1-*D82PL>16`VY8Bfxb8c`D5koP
ztVr*a+d~|@$7H<A`M89E#jZ=R3pxQyTycv*cFSP6J<-jVS9nYZw`z)Lf%la^Pn8*<
zY+Iud1%0Sr41$47K9AjP#W@7PH(p+CJ>3oll2C$LvW>fNe)H(%{w;z_=+ykm+*<jO
za(U`1Nwj4~Ku7t5<4^oY<c69l>nN*efKKDFL|l?-9tfpUr48h?k4!;O#`XgI6nHVQ
zs7D9hqqIeWwGY(x_r8Z{Ad8l~^L13Z@&>}zKEsCH32UUH3J|ka7QXvl);Y3em&A}M
zU-T9~aBwYK<kfW-9zTS4?z{prLWd)9_@Za~Dn*#=Fm{|M^Y>hrTP+ArmC%N`klvE_
zHV`&fK{Gq@pP_R1-En=&5XoQ#wU8Mi#yx4v4cYv_6jxh>$pJU-y;MdQQa`7u?T90d
z#l-lKy=Od_Z!-ZYC%WvC^gFexFVBD?^z1K-s#Okg161p036du$OnxAZ^&~oKYIT^4
z(>VNr7QC;iRX}!pbVqy8Z~k}|mjE`ll&ZOpTmC&`08k2dTNL8*9zZ)I$&pk2k;tHA
zEmw@?U10b!i&x+056VV<>mZ9L5RTTtShB|zIq_?$tu~Z=HpRD2S^EIls!LMn6T-8I
z$Xuj+bjRMaOW2%fK=)m7Lv=qg55O_yPIfB>rs?m9qlrhTwv)sw#i@l@CxBz&5B2-}
zvrsNX6&qt>+T=CsPtPE#regOaoALGOG|Qy~vlI<(-=u8bdAk46zl}>A$lV@GDEpgx
z_eIel!RA>a_ix17ji@5jYy{M@p|6%kpUpFr(MJ0O0Wdk23#Z!`jZikfqKo!Uy>1de
z*gP_ISmiW8ZJ(h?9(vX&KIZVWQlTWOn_~4IxxX6&^djOtip!V&{7*U2^_TT8ZoYM@
z+r?mxn^G4YSh03!m$rHS?D&JuxS~Fr!zWHhq16y;z|aYlkfDeips%WTUKT<=r`Z5g
zr*9wSL;gN>{lE`Qyj~o;9m{_e{nFH-Km+upk)|l(AAKua<HVb@@Wfs$LKC~m+o^-=
z&!U`CIsH;S!>+eG?LQYp`r)L?(XC%wHN~38kD$&TC2n9vxu>#$Z+byn*1%<OqST<y
zZTXlzahTsCE_*>~mOG+Iq@^hW^_IIWKs-!_Qo(=Z@^*xg{H&Xx&s~K0u94VGpUn+r
z>n};dWI=ziq6uP4l;xa7YKGI?ITXzRMb7b56u#+nUjej3xsEf;W_po_JqGg7)t|I0
zG~k1%W#4->4f1T-hl!h`%*8)?>s05?4`me(mm!c-hj~ouqjY}VZ;IZCf5R~b976cz
zRP2Y{{=T9Ra3;xPtil0M4V~sUj}NHaLo>;FJp`V?jwnhhFCx)-!~T1f{kV8N8W94j
zM-*jU9`1di3crZ({LwCKuw(t~v*$utfGmtJaYEcSSNmHiO&74!S=9y!Ok@8Smq~hl
z>gpLbJupX0>8aC?Ov*g&xvOa;Sho*vZ3_>z|F@)gzCkZqOJzI7wXg=e{z54x=#;e#
z;Ce!E#lt6bT5fTJDaHPr^}gEY-5&dV#?{;rMSuo(OUL{$Y}YAFnln*$NfPc$+8Fz>
zkQxa$<ZytqR}MxJZD16ilfTb+P}dt-lzDgLZRihaU(6lkzquXy<(D424AqKkdb@vT
ztsZ%REH>l%6>Q)04EB51VeL7>XZ2v|-@%LoT{AbECkkSgs+N&{Jl*1m4zc%yUV>c-
zovUJKA|!IeubK^SYMekoU8Oi+iVR}az^YLRlPE0=#~*~Epx?Pty8nWygzvmYk@<`|
zJvd4wk@KPp)ps#3Wt1eD6JNNORr=|_eFCO35Y)7}I%(ta8c7eclXbH<Q)in+o;u(S
z{pM+3*>N*h(tVG2x3f7O#}Jkp4Ah&EAv*%9D=JV_!-F;imTxPE%YlnX!1wqnI*@ND
z0y;5b4%ae8=W#jLe*TmTL%M;OTs#&#!U^{RHK%d&UByT60&T%KZClyhdmrYugE8nd
zjSICl?AsIu2)t>wJ1&iQ*fs%H71SCfG0E0c3Vm6vwp5(IBUfGA?}xH^sk9DcVpV=q
zDisTTQ6CM0Lu`}^p`ZVY2qL9v&@5-~QBl}0N10{2g>xsBxJ>v(HAX1Xwt<niQC#el
zD0Qo-*mO&&4^aU)1>mrhSeZ7|!6yXG(X{j@-oIC}T!)m6OEgXgCqL%ZS9eXrG&-54
zUeJna&x#bWar$cxk2hl|rWBsR9P{1e7{T~2p5^fgUzj?`I%33I$C*+^Rs)m`*4x{)
z+?>;%Ppr42?u(yp4L;#`H<~E1dNX=OYa+@*j+ui|q*%L138R(h<s=rZgGOyZ97uh~
zcYb={hS6#G0htLi9!_y1U#)%CqZVyp>w=D~67*`-s}>C|dQQ^X+uJhxmog@M)fBnI
z@PQ68j_cM<mtVnvf{iD_xcXe(6j=pS0ymGw{fLNl2!~)`rt!u|oGB4h0>5^6unpW?
zzb}tx-|cCeEW+#4(T=Nb+JcaC-IgN3UWDx{NvPAOlDyXSZ_b}tnzj`2^#5gHQ3P6j
zvfOE9#=aDTJ#gvE<K*Fr67_-GX~GjYZvJ}qs1ty_3HZ|<6rcG$8%JR(pSO|Z96rRk
z2N)lcXN%kf_fH#v$kk>ZL$G74S9AL>WvqJ!Lmpqyr8Xj^Z~M}AolGxl(`XTo9a^7x
zfoL^A%UMo^LCx8QN3dsj;O`nlc?^;t+rK65()(|6OOc4~V2_eGCh!xLi7)z-cVOKt
zplfBvFO0|~5O}N}No&cSPIvW46bBv2d^Ms3@{_Dr{>?sd@9ocRt_Rbn&EUDWp7ny$
z?#%Fm$nKVNz#nzx6jB22KKrlV=C>Sff@BORcz7aq4%Z;QiYmYp+3t?b8`VwYd3vCU
zH*xTje{d2YXgVqyK=ATJ<Y_e5e}gIo$&VJ5z98oM-P3Xdq~poBkceyj@;!2wTCeDt
zIjLuk<lmlFhS!ZKZy5y+nS|kAxO=`n0M@;ew227*_P<-dbowJQAN{B>$OrJsIIzr9
zA@G%f<im3;F`x$TUjfOVOtG1jf!q6}G_<-jrvM+8BjfLZ7Pfc<QVPqKweV?HEOlR&
zvGsg=+4AYhYey1~0hGePWs_VT@WZF|uVZ+3D5z&r*wn45xricSF}L(CRh080r`y^U
zb*%b2q%mGS#XA)3Zy5@B+cT++=QXfmWqnLQAiTF3@@g<q)o010PM<DLn9uofmtFgd
z7|U^h?sDwqx#As%7&4?4b>WoT)kE6=(|e!G@c1-VUg?Z<ml6mMbM^F`;~mr7m3Z)8
zd&|JTf#s{wUM9#LSBat^H6va(YD>Ju`**T?Lcu+ghMq!W!ViM~=^zsMMm;}MD_P71
zw!`GRHfk00D<TnvT>CYET^3VR2MFqcD~(+8Ze#25EP+Z8##`d!!q^(csRx|u^Iy~f
zjy9k^h%)s1u6!d6YM07?8aNGqy7jDriWB<<cVWU%Um~bS&aAR`N)r<(;2F6`7iG}^
z!Ol5cCeW#-M#^=0`R+h5I*T5xtrI|6ZnxA}_!0edP!)0qUw0^^C;D(aIxJELpGPHR
z9G@Aar2_Baw|z*@Byp!Pl41&%_GF;@K=o8Th^j$^^!5~|9J^f<=K)tYmo`VhTj<Fg
zJWshaAM>$BLGlrnHbRinsFsn4tFAcHiiO&juHNnA-Eg%lS||s%!}RwQOffj3fk_a*
zVxFwQ*u()o$*jJ1eq=xP@#aNJs1g!dhhS0nU;{<?y`)nRSKuM6e#WVL%2W$B25mI~
zebUS%@Y$-I+`)4fdKJv7jl#k8UiNq7lrr9wBt;20P&nshb$^`Gzo-NCkB8k!uxu_f
zy<M#i4*C=Yt%XmAS$RQUZYabz@PkvSQv__`+f|?^YK(;g2)pEP5$CARM688>?|Vfn
z-iUS(3gMFODii3RCM-t2_o&C5qiB40A=E?Skk`Ti#794|+PNzp=w(mp?JDAx@yiQk
zcx~0;2&@jzpP_Zm-Sqn#f5lFP+?<Kr?y4elv;EvkBelG3QIhtl)m(0Q73#HmM&4j9
z$S1;hW+LwE2VuK*mK)~kAyL+q2SNNn^G6Arv8m}GFYf|6hvUDViSOx-$#`07LR(!1
zbcg;sDM=r=PT6>-OqEA}2k#X<GupvCsW-%Ph7Jg~-mf0CkGSLMe`Gkn%!&Gkl_+;D
zp$5ppT~WpA>#9#+2!G8!XNdTGKS}lC-`r8p8+(yG`xewDU2o(IA0P`0z$VUig$ERX
z4x6W`Sp@E10|A$_tqrU{*6di{SXz|je4?yv4UEjZvJdxkS=cIjanN>^@j%(ncqrf3
zV&TPCyY}uvum?18L(>+kk7%uu?j1BNNCSOF^QummIe_9CRkrE2Bn*&+0<7j-^#pxb
zU9M{DlGOkOtnLhdhoSzksu}qdjkN3nShYwS*b4lxnrf}Ky~g<EacwkuM9HU(>Y=qv
z1H4F`R9uWrD3LisuJlLAZX$^ax5h(*HVcOovP!`n$AdE1W9yef;1p>%8dmA_NYWM2
zQI`HE^4wR~geQJ$_QIGaOwHe)nT#yFL=f}Be|QOBvf{L;S%qT?Kyw)NUFk;F&gb)K
z>-l?Z9yX=Z?0muAK1L5<F4(%D4yrf>o%ibC3gnqyO7E!5`LuGlfTM+zrh3Hc$>JBf
z__vMm*`m)MF}`r5`{$R+9?+YlU{yJ^%t=JKb%7_}Wj9$w4I<KPA#|HKJ1v#I4rQEd
zRj^Rypj*VM6}oX6?i=X4)pchJLGlC{uq5!&&*;o0Vl+!fBn?g_`}TVS<dX@L8f-;y
z<i+(8SK0i6w&gnT4Ug~@%E84ZQf2dRph8EB2TFuqXpdtAq*6sJMfKN|iwcx}0|+5=
zdCLMh^(SpK;RFL1Fa--Ovb=|ir`Za>yeqDX#B0KYEPwkeYI~tUQYJoPnz7}HI|d7t
zC_5?ndZB%xOvC|Au$s=}6wbNV!O{9oK#qzgMSk&GaHPmAoRf%)rx`^+4vQ9XmlXbd
zO-ZjnNj^I4Jd@Wv%b)c1r-v9^oG4iF!vFqN)PNTL@2PI8*wKLtJlAd=mph6mJrHem
zlL1!EQXV44Dq1J$wvepGDSG}8P0-0Qj!SFc`6@W1()(gf%Gm{F<ER`4;le&<@|Sz-
z%4${F#LUWHIrD{r;LyDD!z}fh>4`%gKiK#48)s#HH6-r>xx3~~NZ$FU!@#x--k4l&
zXa@CxD>hiSk0T&$j#smktvg}o4=I1u-vv9xAmVd8SKuT_Frjb7UNQHlR-uUBGk`{*
ziEC{!1kZIy;EpY$(g7laOAI+bJPA_rtvu{i4>{j}FVp8qV+&!eWa^J3C@c|uXeVpU
zGY+wGh{b|p7iRlhrUDhRzRUSNb8{rRtKp8<(zsa22#$@1gj$FM)hHy0rEX^jJ}6Y5
zIkF7VL>SxK$S0w$&!MpSmlKa!SOSMjT@C>fJ4Vus-=?elwmu)ZscMIV1pA$hJqmD1
z5ah8rX}UZ{_^xKL4u&^%&0FoXN8%ixXe>|4hO1k0+PX8ol@R$|eM{vS65%Q6pICp6
zyHo^A_HFByS`=RGfe(qgBn`ENMD5B}Xizilp26`O<?qTSzO86Yr=dm6`Qt%<X%~A7
zTkDlYz>qdGAxghwy<o*lF1Pn*aP+83PHB4{FY9_(BK8)7SNud6Tf5Ly@MQ7V^{k0P
zC_@kixb0tuMaTrfBkdeh!L%sd>va=_$3}C_X$&^CwV!ZOo7=RotB<c{<^W_Z)l|?|
z{KAa|JJD}uqc$7A41dy=neyeTePQ`JyAoT_b?e9c#iMX3N1EpL>hM-#I719@=Y0r0
z6u2z^4?a=rTESTG6w$Njkj^WnhUhkJ!<dBD%LS0!Z{j&4Gu3FrUmm8@JCk{{ZKPs#
z8A%(JkWorgLM=>v^8=Vw<CN^~V;x3kZ{il`#HVO6&!huZIs{W3IjaQCqy{Tkv4RkJ
zS~w2$d$0*M%?lx?QjvMMRB}?@FjG*N&8(8Xd*YHS3x&$X>KLf_gl+oE-aW136MIL3
z==pigPqKakgZT6Nw9;wr(<0-iwlsK3Q=D!Hi0s|amkdib0j*$DJJ~G3GLYF%J597B
z!tVnAsA_or!lyp9<UNXHZ#aITN@-Jx^|Abd(=Rx+Pu+iR)!7)R;M`WY=-7_=-e}2j
zw4Cd8a^RKfJm9)NQ$X8t$MRwc4EUYeab@sg^{Elz8R$FDXLJ)p85$!2Pgk8Q4_I`Q
zwOi6sTq{|=|3Zj_0zS9Ei}h{L>wq&cix;b7(B?eVA|C|C*1+O;5)>WS$yM+ys(w(L
zDvs<iPB6a^)EO8~BN$t^SgO*(CR3MeU<Ti7aXs9A_(yY%trgUIuG5o~r3g}+|4MEd
zC&Tb`f#Uq|!Z59$N(+8Pa7z=9kJRU#SRkOs!C$fr!ql##38PZKU54Z)0B5h0{CS~s
zpDhW1SpO^#U>ilp8bSy+Y#2}?avg0FH47l)(J^gRWT#mHLGBzCO30KogcP}_R#x-n
zNW(|kDzgzV+VDO72BmN6m=uX;3Mt~Bw2~+fIcmqMG9z9XFIKjol73=O(1AT2$0b><
zs$_w_ecxMsEg;JL*>cybf<%KDF}~DvD-`nE@TY?3EO{bf<%ol+$74xrsXy&|z*{PB
z93fa%XPdcp6sCW6O`ft{x>86~GCkXwmaq^qtD>ng^_5e%*I#C?L<X{W)^4hi;_X}#
z1Ba_};<3jD&hM(xJWDI>eQ-&YR|+T0e}qx5zD}53E4>i#lFGZ@9?DU9mCTCmTM%x&
z31Gw1gOAj2m2h!9IC^M!T+PE1%3&5Nz$5x*n$(|n`(+TK4h`E}e9@}kkNs|}5R(Q<
zr}Z|}kKFb2$_RlF+T_ZEm$1&vP<Pn&i6X|5+o`<a5I4X!#|0rzjsT+shUqtAqLXG~
z`jyq!)4!9j2=4Uqg^ca`F8*;dvTLFVIMPKaW!G=Ek1jFuSm#?#`@Zg22Gr5NoIaz6
zzK-^M+TreQ4f4c-wlS@hwLA%j>8qBd8yDG;e=5#{jaCUQvh!6OQt+TxTR!#N_acCi
zpG3`QBC3?Ik%>)tt1?tcrS|={oz;+P$RT%#VaBBzhVsv?f10^D#p!ZpeJn`@`_7A=
zueFTe2l(<FQ@fI3UYldKzvFM3w);bZeRs}CZ%<6Zb=~zU<K`s~U<B8#CI5MdUQ{d1
zUn@v&E{Jtr#>*p~vkEp5D(Q8_q7>_fT7kZ@tnr`r9?twjso>P!iu}YI$}iQ2f*4<9
zLh>!N$K0w7f~oil4`?C@EFF6jO9`H5YI*6g46UN^b_`bvF{2o7N@b`lR_K3PQm_}{
zy!sn7*EEDfJAdCYBs7ukqu$K@vs=8di@qH{O(>5_%8+URdh6dNKSyvCWSVIHywxZ6
z=HblC;fijxw5qrkT_ooJ=6X$og*)u_M2veVh?QCF7=Txs;h9Jf{5m=SQCoG=?|V%I
zr+&tcY9H{%y9ha^8sKC(tnWO~R}|Vwuw-We25$T><9u*U=8b@DG+*IG?&uCzVUULa
zENx<KE$CxQWlrU1ib>4GFZ0I1wGFN`<GQU>y2r8E3cTw<2m7JE#Xqa}sCd^9y=plF
zV-W8GyUBTO%)8K7WBHvp+$%vqA9h7Q>M5j{!=bUcx8a!R7(RXCR;ttZeNV+(eSZ-9
zV^4*CWpi~{(4NTV2~VHg;eAgfXUPzh^Duhr`{HOnaQ7sZxA=lRC%b<3in+0Zm*y?G
zDxcrjY)Yquv`J$lGtMtIW^_o>X|;=bPgTi9Zd7%T0y<5yDkBlAv1$<`R|p^fx-mtV
z9hImY4f1vwhWEqUZZaliG%2@Jeth{WLbSkDSoaPg{7;-U0>!@qwz_HhNt9cKcWb|a
zmv8Ue#Ri6)KNsa=vo5hsxePJvI}scC1cjV0GzIWlRN7`9Rf1C&I?UtuHR<BHpw{Wx
z551oPm0OE-|G?Sl#w4tSV{IDbX!`=6BSPN6rF98uRHF*X<@P%~wfD7-d>8CYs(4{U
z-JhpRHr=`9`|lxOb*ollNxvQ=d^;aLFl&6jpE$VOyFrg>HO4|Kvkjd5J9jf{5yGeP
ziwjOp^B19_Uw_#>t)z8{c0D33PvkA9<;~Fg>hLm;g6$}Zk;s~MlaB2sUe0+M?>!qD
zlM*uO4?p?tmkv<29y5o-vgeE`#UXZzF8t_21S8vRHY%;c1+2^w*)9t5U0$t?jhX>y
zsqS6gu0i6?$6N+(Bcryf=QGPw>5-qyI=OCN4fLf3``N4BmY>3_I{(<zRW(@k3fcp&
zbwJdfgpK6oJcJKE8`mhxSWby&s#%A&QbBl9Vy0*eU5bes>P(FKUU8b?X-2sGm4V#Y
z$hqy77ERIqj}5Fd0bKw4RXRI+8|K>r6B(PT&UVJ9>`6~5Y*g*GjyjI_Qb}uX*S16O
zGS-la;ixH3v&t~5CqJutNDrR$9eu)IolgGDajLokw}d4v9>&O&gg5O+41>Be9=DrY
z;z{o+a_lLlB0e4rSwv#QqTNx*zFd?VB`fdz{E#+l5VCbwkSIQaEN4{{)zg+K%lR3!
zZ!O&vj?eW9LCC=1=V5hJ&UXK)FA^43;a6H?N{zQvegHxiW(t?7eBK~xV89tVzzk6(
zxfuvRCiQEga)#^Nd6BU2B$%6JxfMYJ0$%&kt#!GCFT1*?UO3Dpjl)y_Htu!WbV&2&
z8Vs=Wse!0V56Lf4AB-A${PGs!`XxO$1(ia>h8BDWJn?|5u}5+PJGQhl=v{!P{1&f*
zL1KQsmoBVl*R(k(BN4hd@zq2s?WAQQ*yM0NU6_J_=faGFOxSoI?@Hv!l;K_7mo7}8
z$#wA~H4e@;#d-K&WRoukYJAR^6N2aCQ!ApG5HqXlBr$)3i=6=lSzn22x^QQjx$Yc5
zK3BpS_WbpWJU0t5wp`9O-qlH%%>+QnX&d1@JoGOM1K`<Gp_(MV@bA>_ejkv>8Rm0y
zX>IyG;5#tDv#iN<JUE{pKEit#k43Bh7j$Zp!f?4g&f$2l3n?1&MOh{3c<{IwrOEl=
z8DtuCYKDSDn|py5fD2NPIN1;3PK7>_qclk_WJ@#?+9yMswNw*rNsViP3Mv0f>(~KE
z&>^(i{B|L!aRk@a!e3>UN1y$E+*^b0Ze}H;((p}tF_frg^*X-9EU5o-Rr>$;RQME1
zJuN>Ubb|+LdbRIrTgk_#lBPiY@{vsP==kbnEtv4c&Uq+X_nF4vO5QnBqUA`Zm*wGv
zDkr-6DBb>w!L#teY3}RhZiUlz+PLh2Pl7kz#xj;RzxlmWU<%LRo1L7^3tr-LPSF&>
zyTGG;SMFYY<E(I1vF77saB`5ny9cq0A5@VQ6mMU3Jx!p^4@oZntVR$1E-=(uHLldG
z`n$ef{Q2bXo=dyPz@K-bBeAOtdLo+rF2FzE>WVM5#0?Yr&^M;0O+NT-x2o*4;d5mC
zlhw0`n$of3I!N;|Y|JssYCd$G<al`Ln;Ktrsy;u+cF#?g-{<IGoDv*qyOySodUpY_
z5?d4Q!?M@OFR*tZ>vYM6yU`CpYJ=u#gylU1opaxf(+J8FzsYLMn^-#T0p7KCd`+W^
zv4)^ci!r64Pps~tq;e#@QnBW{BgyP7@+Tw7SS2l;-af9SCk{Fy`o;|42!(-Ih7fqu
zqAcBvSTY8|lFJ-UXrORGB}8IB4O_Oun7bL56AXi~5BQ9^{-@6W3yq3pfE8okVrzt(
z@dFovS4pRF{Hcm6Lh(gXj?2F8^jB|;3oZ4U-dH8=sYF{|S7r6-V{c4-SM`n8SS9nR
zgmwf^hUrQ}D8A)WNfRtx>$Z(4MdPg%yt{{`Kt6pUihsI)VdGa=<tcvLx}vi!{!7g+
zZ%vG+Ya?8aU(0Y)(47>SsDVkx7A@=z-)c2dmE@@2hI3sJeO7NA*};1{+>BKFzity8
zT}HJtExbPld2G*P?951>f0r;RjBY=uAau@&as<4jPGv^KbI#@VF6w$%ucFN}le0Dn
zWmum7id2her0-fltSvDQeoCh#DT?_ScNBDKxFvN6zlQ!P$}4C|z0x$_m}7KPY|Yu`
zYyb34K^dbU<Ec<19!aIaOsxzO+*3SV7#7mr(EwOawepHncuA&TMk*23Exk4Zlj7QF
z3Ur_$N8KKhaV)!44*=-`Ao<S?ILrWxM<brmrC>)U070zZLxR1cB>hQ*<t7S@6h}oH
z2hj4XPT|;LZPEato18X6jpSEHT2!z;J*zR|#WTXBZUE8-Ko(lU`k4U2CV;S|R9~M0
zDinV?Sr~7;#*rL=XWEPr--cG`^aF6|HK*_lZ_G)vK!fEb+pqnN=`2O>5$!hOZ9h*&
ziod(=rj6i8u{PohMAz0q7siR~<-iTlyxNZu$DD4o1OWbuH}4@)30_>V07H?R@JKwL
z{+UofJ?ieLRm~AcAuuDtsalh|T7F4AiN+RN@#cWmS@)y9NgaGM#pp-3FS^#K9NdI>
z#Q`H=V=C#Q)xO+MB$}{_VP*d^UaoQ-qmrMAkvkK{%+T)`yJn%|gZ!%*uFUrLP9r``
z9*(R|C^_4?qc-19g#ZfrzE<qJ=7lf8ZPWdx8hASdO`{0{kO16z^7qc7_xw@<1^o+6
zD!8Nd(qhY8e}O-29Z{vv?)Oi>ny(r3F#3}U@D9aLQ(kq)0-HzII9OR7kMyf(!^?`D
z1O)+g^k`u7>zx{F&UfiI6jQ<92n(3=1%SL^BKSK~)%|`3U{tLovRlfBudv*n?ZVf5
zdk8nEcfv=;zJ6M3{0@36CfnswGcc-cN(uEPVUwYdK2zJz<O@NqaZ=`#q5NR=YHY}<
zk?30V>B!;5mB;WT!dqtqFZPS`CxTk=8`K@kVNU#+?_oBVb(h~yM~GY+eP*v6KZMrv
z=aSPAtW1tKA8ZyU;YbxrCH{etpnR<su~&IzT@4F~u=`)`R5p6<z0B;<%o!f`MatsG
z!oVigtbcpX1GTB|PkkZAo=#Ocn@~7wT)L&B2V+&48?SGA8cAAX=7!obry1}a)lS%1
zAvbdK1cTWcp-bvA)eLvBrS>gGh8m<eiQX}SHH_7=nbgdhl^R%!PD#e{h6=QOy^s{k
z<}G3K)jBnd<si{cx;@z%SQ?u{L9klyu!yE@dLsqeanf;8)h?-I8jMiY*V=A6xQLJd
zTjiqIu)T-^^9Ek)ZRn?_w2KS#Q<Z;4Fh{?#v=2-oY{l_Sc?~)i!skgRE;$t{lwLv;
zj-M=cXH^7*Y5QW`>PL;Q<ntHOUSsnud0%3G#w3(hZ~6-vC6S-W=RdlU*qrt$MHr8<
zuZ3r$!6l$+NHLMEsYBWnRL_Oryeik%TIjTn$T7`-7Qzg{@hOeHK$*dP<(L`Wwz~@@
z6jgwMQdMbIGDX*-I^27Eb3pZc;-VLTYxp)TdPf7RzFihFY){JK=Ke?)VI)AAw{p6L
z%A`l0+xY{IP-~|V%L*hXlDjo!9m&4b#q*W_x5PgA!Z>xHl0dQ1OfCFCO_C7sOxBZe
zkauJb22v}O<%u)aCOOG*+VD2D{JO}yagkv6RLGX71V3bGMGVt0+FMLvIwBWjv#u@P
zL#~*(keX{z30*}rP$BHi^J1jUl}p+^C`~N37&IZBv8^V6w7J#0miJH#fc~&nbOxUO
z1fbGZPcPqe$B}DUg<cLSFvZ!3>VI$={vnyZ!6TN=+Z#>L6;*_TGWDRE45U8-=z7k!
z1=Sye%Oh=S|NhFh<^rBa3|XeD`T&u2c{_qSX^Ic`{!Azs)c8o`I!q-3*m~)8n~qRo
zi203u%YS*SuZqKVD~fk8&GGc>O87_)(>jNRU=ua8Iz|yL#082V6_HAf(VY$9a)wlI
z(!iW(C$Luy3#IFmg~JQs#wOm~yWDVYK>85`i{ArB$a)Exj^Xt%?_1jkT~N$jnqcJ~
z@Koz!RiO;hJDp*fd^%X0vSf2DXQE3%$OkL|cFgwkdMTNXCfV6BCdJ2mtexhrgs}PC
zJu&YHW7KG~iUWq@&>g~d?icC*p1SYJV|nV|4mEiR)?y)zaxzIWL%C1^{y3bsT?W6C
z!cGOkXa~stx%?7khmdLek(<->Sx_%i>F(LXF1N4Ov&r8Yei(Eez?^!;d@GpAHP~0o
zrGyA(mLiZUAuSi=c@0KxbutS4@UTbiVBK)Z1$eR-!t;s{Q<RA)aSNY3Om_>VnlUq0
z6S1wI+(7p<%V#U5yYTWJH8lUt!TuvFO-6_|$g7+L{<A+>n97v!7QRgnuFz?xK--YS
z@>@o6n=dJ&4SZ7&^W3Z@3}%lX%3|FJzR{(Ru@bNl?qY=$3nQP|RAP_f3!E{LyuM4^
zP(8RoUDY7)-_}Umya?wk1=()ARtkDFKwwJ+#tPxN<#yIyY6HdceEl;+-y+ZRSu(FN
zsY>X>@a<rW8>|f%VA$u9Z|kE)jMs_U40~~=cjU3Ef|@c>h3Q_!*FC?n)s!3loaS~D
z6%|EBM+ZKG<BmqdL<W)zd>RL-`p&CA2E46UBj)|%I2RoTn6%3sJ<iQ0u_o>msSobX
zSx>*6V?*A&zxa2qXJkA;<TBjeVm+%Fa9`hBN98;wd{<+_Ldw`O=PnDaW<R=I!jgyK
z@iK-t2ARQ>wk971Z<LPh8jJ%k*lmjF`F0p3s5oWaD|Z3a!sd39&auiR2Aa!3Apei#
zr<~bdN`es+Bs9d5=EF_?QULxyaDyf=meOTxtCcMZTtt5!3qSht72B$bz&{!}4^BY$
zSNDa1fXm=NJ<DQfZUNj|z@zwR^&E=Rzg!qZ2P-y;xfJ&xXUk8#T0Zq5V=HIH557JK
z;3DdrU?=RbHf;p<wlmF@Zw%I0u;HCQ*&LWGHrl_fZChC&S^RGQ)|M+xC;o?reyedn
zW)r{LQ>XVV(w)y8>RhJoYHT>v3Ixo(Q1iicSEsJ%0IX3qwrTJuNeSyH&fw=<hW-Am
z&${(we;S+lJSY#1*g@O}+S2}&LD@tS_^151o6^_l(-62GKtJHh2x$<GZE6g^%lKmj
zE(}sD#8aUm9AG=OQ$e@5*}^pf(CxZR+)a%_+u9S@M=MU|%^H_s!G%u_CmAywmeLV(
z3??yGW|uVv|HeGqUlbn?2w6)R(l$0(V})jdN<IK`4tFz7)bG3w!m)R`h+_@;l{oWs
z^3FowT5Rdz;vB|Sp1{6>$y&vT>VwwdW${m3cjNBmB36;}z`%!}q8IHsPa%zjK!_TD
zSz^;v;UI>eZh4BlU~RYw{N*Y5L(3aOYrY-ArtozstfL+u3UsdKdWJ<8W2*9neKrX#
zlVG&LNcpx#QY}VegOc*?$!I1*Ih<q5KpgUF0V5vN6Pa+*10N>5GTe<)LC0Y2uZMNy
zaY(Pd)_amfGr9t`U~LhB;F%;2SjVU#Kyz8d^wypP4YUDZRFHSWO}Qa0(W8*hF2bo2
z`BtOo5AOm4%xdT+n$Me6uxQJ-+#9PTS7sLFA4OD;bYn?VzV6=MFtBWr^;L}#?Npao
zD}@PdAUc#psbWz)yum3|<BQ_RD>gQ0kx-d&)M%Bd{_jQ}>TawgucRrw`?un7oAz8*
zt`Hge<dQtqE`BWTG@BWx5Vb;#F|<{GD4W?gQ0m&Pb(*0|(a*6a4Nu<eTaoo4=$h8O
zKQit~&J08+C8!UFNR-IJGt;kFQV=^O{$!@3?PfyilR3!8=$l@IFvRD5QN<>4HjhZ8
z+56#?q^FbP<7upzz{3|ZT&v5_i=^6aU@`qBT9cwwms}brN~LcmqP)6a5?;VsUO;W8
zSW1~UpUPb(j4XX)Os7f}sWkAj<X@~-II^^*rnKs0ZX#ix$^hL(D@pQfO>$|xXvubz
zlI>dI2(t7MaD5^-kw0&~UGM}CSy~jho-A5|5~T!x>lrOVyO7nOaziVXWReIYiLer_
zLH(;iB^vnKC=rL3HwV|KB*3PC`nhOj4z9qi-I$`qt%g5F!|IcDNrYyil%bzm0C*Kq
za)c?JDsiMzNt6=k6vAPw26bqI$^)%bhxx|VN>XvKh83lCiIryJV>hL0j^|llctL1&
za_KM8lGrFEd!<eS0a~`74Jt{rQocs}7v=G~BD8Gb4Jv!IQUy#>ysJq*2sQJJi%JW1
zlsC~|R~qie=<1bj&6%b4CTLBYQGcAEc|8y!h9|UZryp;$q{BOBSZ;i#1H+JvfBnLk
zl|)AvcD2{%uhqlpAd{uRhtRh}kAbX(0nGqk!*AuHZ;b_Yj9)|Bx##G#2}gqa=3yB=
z6y&#GALy99foQB(xQnFq3dI2LxNBqttSj$W7hk^q^?%=bNZad!PlMqcFL<U%1v|bZ
zYIRxUn8y5_MKS$yOJfWVD%e4KRRvA#v08JZ$KEPCCHEK1=A^?4E$UV*x(Rd)d#ix>
zTn1V=nrGLQsMx(fKA=L;nK6e%%)=7uDC%qRO0iE2=#3u~R~;_fcPLuz;FQpxoti;7
z@&hLV3K!v-qMcbtI>k^7bX&@G14w09(2w-Uan*tro+Rz{BIjZwhKr0y^W57b72nC~
z_$%&vYo7aD<43a8eD;b<G`!S2ph?<UMQxr8>`$;@j&&7{idc*!unjz*7-W$fEjWza
z@IRumtMqRZvS=X&ID1D{c`FP7S4Bk6pv0%4ae5j>y6jZBGzKITF1~l0l_3?~Y}E>R
zSbiVw)(dCwy2l5yHFIb7$x47(MFz-Wjny0e{J0I@P=FV|iyt$&pv41GJF7@$miwx9
z-+N3aOhw$#v^ejPvP`V4zzhPwUC(K3CUhKnR6yH&>&j$A#@h9s+E<))97l0(11ul|
zj-?k2{V%6Hv0yiu#hrpG3Kn090Ee&3C$|1e!b8dkA{Yipue5Oaq$Bsn2XTK`lmHJt
zD*aOsKs=idvpoZRi~;N>hO@KW5@|O-N&&amayunNjS*q~iTGmn5X$h(ZtRiA>ll8<
zRH&QcqZWSbd)Fj)H#S|)qpVq@dzquZ7s7_yRD+5J_iqoY?>AhM>i-o@o?3`qH7bjc
z?ROACVV(*jvf?`tsh+7oZnN~FLQ4B4Er+40fAi=q?gV-y)wXs#Y@*ZKhf8WqDD&P%
z5ADR^MU8@IE;}XUy-n#tJmayO0ofbKiYeS{ur_75@^m$xDbCzL2^{k(9tVT=`1Yvz
zY=vtyW&9a5py{+LzqXDesXnvgX%NZcavb|G-oF9UYLav2zEeWww+kGgMY~o|xQOVX
zTdKlbPUgt`W#kTi#PPw%WT|oqBDD5zP+2+s-1#Nk6%PESa=G228^6caYo~-R*9|Yt
zjNDkTgMr{e=9{hx+3!XTH!5tmoK%OlT&1ZA;Mci<_NIpwjBTDnf1Gfpc%YYju<Yu+
zqJ=l0jX)Xmuc(d5$$p!B&d9^u&5w3SGYXO(>iY;iSM#K2C8Pl~rYPAVIg8Wkqp5UY
z7y@OjQEa4H-A}>N{*eF99M)~(-;Ihk(9T_HN(B9wauV?><R$P%cwpq=bh8!Hdw-l*
zB@--@*84i}unjEmW@>#DevN@X1MuR>>Iy&`a{ox(U#<hV_(~9KD_Q*I?$cT5j&<x%
zAORr%<$CX@r!^|4X-lB?`}GdEAO4$2|DpD};098_R<WAK;wlbApqID}W{EY7wX{yM
zc)zlJxcrEyxONYx!bO<V*>NvD1B#V!d*shgZM!nX_%qqcc?-R(2t)G1%hW~JjUOwI
zY}>VXdLQ^2ETH8qK_r$t`Ns{I&kYwB|KsAC(<m|wDgMX7HRo33q`r)7ilBO9Y_Pv=
zN0LC?uwyB@RNE^~I<|3pOl)<9%*k_G&1a$5{~x%6U6KH<(P6+tcZ=%hv+!DRtxb$Y
z3{F2Bp_akIVDu<pxtZ2kcN8>u+Pt?6hq=HT()j30Q@b;F7~6li{B)O;3mZMuV!#w0
zu0IvR*jxa*noHj;uK)VXci15iTXfN9t9Ut|xhI^&y3;8g!=9d|S=auVbs%3OEo_kq
zZN9BHZzbMKXzhAXUOD~jWj{zY3TWKs&F4MSfHTjXB664%ZH;9hi+&`sYs@Smja$)K
z$%m)}YqKAg@qS)YY8X7N-&=l1rWtMfZ|NXzh|S)|7s~J%k`|sni3epnkDGGL?y{p`
zLUt8pU+!^lXYH^4-cw9d>-oMcDdvr?@As}A56TPoqos4Lf2;`OZKdf%)xLJmto;?d
zAyq)^)A9_`_kW1%W$m8pMb_wU5VhXdI_Rc&$V_OPSRi)C)|>;Lj}BL?7ac?HUEKy4
zB}QL3jlp*WIta<WcSXS3_~Y`!E4tX1rF|sHXp3NJq<3`#0A6?E{9Xo3cM#gxnMVcL
z?{kWX=OYR=D=`buqn-e-02C=*JRy%lzTD(*f9uKI!6r5OmuEfm78{-++sOD`B?kuc
z{RSm}HUAA#W+GPZ4A!9-1P}KB0eSE1{Bmzejs8p<S{M#DCtFEI8Mjk$O_=gOGuIY<
zJS#knh2`WC1!XejXt^p?3swm785G+`ei9=#WR$PM<GF|(LzS=^6G+a7Grzz{6CCF#
z6Q#bZ(SBDvv=ON>U>5Uzo88C<j+tXOei@LL9mVS2Akk+r*&RtlE;-M7oq2s#j@ll}
zt)lMq|2;+NXKdI+_{K1)XRU>SiP@ocm8OAXSZ%dq<apb}j*!_}N}Z<>=}9$+ivwf!
zidP~+qg+fTl^5!AfACpQQ|a(mH~Db<slR?4B~2-k+B5Pa(Tj6V0qs%F^?=*8;G?g5
zccBC;x$uvs8QX~YKN2X8t&FK!6{Z$eoKLnZd7H5;tPS3GhXFrwS{N&bNN~*?#3~<s
zhsbI#BW4fLm|HXoW7HfsMUWLS@7zKws9Z@l7JN7Mv)KzKligjHKI^a+&aYfn(zjVZ
zc(6RhybMN#x3Z|GH89m(e40Pw+?<&j?*vsy`LcGdYj%tOt+jb)peXw~BRs`E<h5r?
zmeO}9wpDe{94z-5pZ|Dq;?VI^!Nt9zyV==|Hh}ML${lS|L;e_f;F&h?YsLN3F{}TV
z8;-gQ&cdBl^J1E~5_%OH#o~UYhDC?E`=LBZouP>B*&CVxM&aRHu|ZP4U-M(z7)yWe
zRBEpwi8Dxa1}HH)j*c>t*(b*rEUUOHS#hF%Z)v$EO5HwPY|Gqe(C-eHpPwiOJB(jx
z(3>2jheA^daZ-5DV%9b(j*$cMz8fHyNDfE>a-l0A-`GxIQwlAcyFfu{W+=H(Mj(l=
z3N4a@MF}Eri)c%1KjXb91ar<|#Lv_E!$lxrt_tlpRVU>_ITp~F%y=*HQ40OGfK7cM
zZeWQ(atAKb-mjvHhC|vCJ4O<)3nOn!Y7f^ZGpy!9T^eQKzy1h`Q;;+%)}mXaBromc
z3XMY+)jOf48y-U2zI!EJorpdA9c9$Q5*b3XFk@68ghOo3%s|IyHnC@9wO^T3CVq#-
z<Si~nbpzx0Q-pd-M6T;-&T->agSKF~x-LwypnCI@CN249c*ThVAb-}REig#!(0<p0
z0eXkwIox8UW&0r7WTl$jw5MVvPCZ*q>H?AO1?6{r2yHTo!^63#3e_oxFotvuK8qP^
zDcbECaby8!a_keVD$Eo7j{&7l)l<S~>X4V@VIwMjdqnI&KrRI270?t0v7}x<ZIhZr
zouws;94W&trdo}Nv5EVmclv1B<ZULa9vu}bJPz?>DNm&aOI#JIl|w1X&P{eGRVlYt
zrE{KgEkso*gjOYjXVoUE(!_L^g7z-lLV=|C$jZceM{4-e#NUAG*K`47X(A6GmEoa8
zP?Iz0QVnHt?TaPF$5tjPEAznSN?jJxn7+-+%M~kK%_TWCFUrfSP=Oyxwcs4+gQ!Xg
zwkp}FA(qEb4}?`FI<x&l6HZbJuS|@Lg$2)+qLNV`9d94n&y%7OQXf49JwQ<`xSvg8
zKALVEDOQRABsM2~p3+1kmjc@LI~&MSH2zj4HOh^1@g$}6%0y4!stU2BZF%+4+~0TX
zxl&Yu>QdJ=HBKs2<VRB2%l5S>s!~*~O02Di1}an_E(M3ap`n0LS@lt@n~1GqrP1jm
z<{s~LP8BLs0Iy|`jG!t-q)SB_LyPx~x&Tj?YCSJ4Ni<0*voaBB(=AD{KqZ@|K)J>$
z1d#G+3dT~sUW=8eXOeO$@isoIN}0AQC4QMd11{#!h&oX>W0WSAx)coO^}_?IJemSI
z=%LtRrP8@1rMJKXcNHqOL#Yy{%Q+T6I+7}3Iy?X-so_w{(zQ~=4UmqcEHSm|2}={X
zTnbnTel7vd>9#8U!els&pe`UNLwl;wq)na?v4np^f2%`}CpNRsOW-SbiZ%<UO7tm-
zOMQ}rR=IGsi|RFTy|v8;E8T3O^BMWQo`+j&5xBW_DojqDl&<+S(+{rHM4*b*P?qf7
z)m>Y0nM_^G`M5`m0FDP+K&Pr;p16)P*4V9Gnmrh8KSsNDYgZCDxa54ktI%CTv8n_P
z|9PF=k@AlQs0yX9AYYzt?F>u?-^;-@$1{rY#75$yAOgIxxF@5?{l4Afyo3nCzCNaO
z@7`~kL#W}uN7{D;MQ||-&R`~qDlQM*R6)jjcp%t*Pph5#i9Iz|G2fz`ynAiGnmUyK
zBqhp|nT)efXFl{-E;Wsv90b4x063|4fj*s?Q*8t}&d|Nzkq+QPcLFn6-hFEcRE8Kj
z=KRe3yZztkJ0Ek*H@Ghi2N-hLcxBsA!^6l&{_y}L0)X%!qI2~FjBEho24tz;0RTq<
z%=37HGB}L>(Et}05R0W7YJHbM09n1s_ly&8%a4>u_}EGI-I+aH5NxB%7QJ_8I*{XL
zik4VDoUsQp3ASxrN&zfcaeQWew3Wd9@Ew3t7d6$q!&{K!6xI0}k=}i`12dWb&Bn@5
z1b4e&>t?BW8k8bN>EdMS)%-&%&ybH>&T_BGX>yJSHMN8c@@-P*#}uEgGFM)@BG_!#
z+PUd*u|k1Pxw4cHHaY{rq~EShV@Xtmawo>vZ;4YIo;zd83Uvu`slH9s&=t<m(i<;V
zvhc!xzHXT!GbTmq*2`IYu_jDK<Ox_2#pJ#NZ?Y6WkKM9o9@@=M7zq(g@}j?BzNLNL
zN_`dXM-El{@s>7pm1Tp`SM(}B_{m)i0;IvY-R_#DK#h#E;np-BH%-Z!hO;4KeQ<%f
zU{TJ&%6*d3j#)jj!(No9c>RZpd8nuFSlDVpij(yCi8kLn-!hMT%ZKW<qST#YzX|W(
zS#sH#-soo5&rK!uHA?ed6C*!qU0Z^#v5W8rI@bo!x5Z!M34OQP$5#A99c|*{_9bN*
z_tdP2OkD+)jS@m>Xz%!nMSl0sUYoC}Yf#><9?$hZSiCl`DsB(9FkGjflI<H#5DB0K
zF0?xr_O+WvXWBdWb}IMpq4&`LJtiYI<k|B7lIbwL0Q{5Fz}+>~+q}wYRO*<%?SD>w
zT*z5IlF#^X<>`D}hJ3$iexXwr8&&k(5%`#kg@AX*xnH+ppaFR6s_;~TOd+rF6X1G9
z3>}xuxc%38w@HOG7G>MkX~q_*QO*e?tIO~g_n{~0pKY_XS!3xn#{OY{G8Kmp|H5Q&
zNl~dusd%*{*Fd>ib+Brl?G2Is<i0&24}0rM9v-9;%7x*G0vSS~i5!bLQ7bUOF#Q_3
zK%ZA$q=-scA2o+rc<y@qKx-+==xnX9)?_>_HgBhjaq(FwNztihivib9Fxk%`D(2G6
z?6`sj7Lmd3CRMTKKz~%s0^OG0RFqtOfZ2+t?&RTgz7{VEXDspLU+x0Z`f%}&zHlje
z%(7Q!w}JXoxt5G=UpvNQlQb;0jr_3Hm1fam)hmq}r49YcU7ZZ`)cEC!M^B0uWR(%=
zwlr`VFT&#Z4&{G8)5q#SRpZM>4dxym{VBJ?4;m#T{oVIuuK99Gb|*FwBXjSdWy!g-
zJTb&BP=873l#W0Gnx{v#u|x}DQ^!MJA!SLczmZDs!pM&=uSqjc!G$PykUvPLpMrfs
zYE7k7*1Tgx-^cQOR~pNEXM?mxr;gnC!kQFL;2I-xfqIL+olJ#|$!yH+l{Ky6)HW2O
z|3R0Eql)`s9wEW&2;lXF?lP4UvwgJ&{lIN*Wsf`@@&oqbQ4>IAtCV|GYZ)Vt0;h|o
zuM2dP8km9C(*<)?Bph$&NKedRIZ?=7rrKTyACt^U_4*TT^g2S?dhX4=O!1G_G7s^t
zJkW~iQ-7Zi#)gPjbdf0;;5WPdH9*;#KTx43Cc3`IbaVohht>+!G9KFfH6gi#MvvaG
zY~{E)Hoaa(N64koX&({)?g+S`ELV~^_MEfB7d}hkh?x;N!A36E@4aM;cCeUQ5#zSB
z$7SO34gPj|=Dbyo9Fm^h|B$n7a{rCSEfPmoK&*7(5voSczFFa?Rui|af8f8d)sZDE
zBT~6C<_i-#9cdZ0)PwpEhVXLAM(y|z+5!?DAqKOo-|4pxLUTRxH*Hw8T<1RS=#JZ$
zrWh<+UFH$4Rw1*^)7RSEuy)@3^|b$ZH!^<FOv9|WuxU!<#xue2{#JEZO9>Ij4q-<h
z{Q+AM_fkT;-`UrIqWYM#ee_fjZ9QSJQu4a8BD=<D<*Vb;k}(r@{NkO^r~>?Z689lH
zc42s+tLyVEwQwKj+V0eq{PRC_vlr4gtlchuvJ<W@-Q&9~q!o|nS5%w^xv3Yal`F&L
z*14q(n9zWobiT;29MK$tui@}PLG-<U<;!fs91$`*$_?=>?u3ys4?=f4F}(UNG)=jK
z+ktOG0b|@aSW9@W(N`I(o7x-nX~ocsRVHu-1KjxMZ`ffhYdrAE@0~8ojFzCvu%K4)
z6>XKmmcY8O)x3M|+kJXatg#?hU*cw)1g!gEzu@LI=rfMGb8?S;@HUf0jY!&H0plH=
z{tfIbG9uJJ<!t^+upRcLE59{TytL5Mron<(U5{H==YVp8q1cHet#`AyIQ1X@aDYrj
zJsmV72-!;b`n1|LQ56pCET-9s(w=wN5-W#Y<k|KJ^27WeWcLn)Lmps@YTG7Wzw`qq
zQT~+o^;9HEL3>;A@@B5Wn9Sm?|6rI!R`9?mcok(KFjTf7A|QJm`O8K9Wk7liU_|Db
z^&pom3iQm+Vc1q3#f49-7=Gq(O)cYtaM{27+-aB!JBPi$s!LhvBcXkv952JXfq622
z-dI$Gti#;ZpNC~frg4Fg97qp3ajMILf>#in$67mTLLIZ$5ibULEkM2!l1{rVSLdI~
zf5bk0G>j;cK-Rz|@$)S1L{GZknxbn*pp9@}%%2vK8<liAv>7>`b($I?&`rGj&83O|
z^q9zyy?>2c8BwE;Qz6S=B9adBD<Z(jnS3^E{K3g6ePar9NERiqwq<p|*7TpRxjNug
zLX$mE_4wz0ycgEseFAN`1iN;Rsv5WpuMbv&O~PCD`e^{?^f}~$O_kl}wG!YrdE(mi
z+}ww8m6GOVa2Fi0Z1~HPg_Dkt+3cy2V*cxsD1f`I(MH{kss!w!On0rhf@FpxTS(Jp
z8n!KSi3PgJ_b<}SV!6?aWz*Gk+!u_fF(K7+Z+C~9ENfB)u=j^6Cm9wMfUP2W$`7cZ
zFITep;pC1D&h}Lp5m~s4JOoL8?_F&MTq#z+^{|G2&&}?-TR3>5b97ed-=(knwIB1C
zsf~evw7SUVr<FU=9wT1<G2vr0glf<>cR2iX$kpBh;vW^vbaA~hCbZT$C@=kcl{L58
zH45x3^YEToovG(cf2WAbY2~idj$Bx<jRt1oLP69*d->in!dv^Gt2*XK_ByI5&zK#?
zGCezBXDaNetK5jFxa+d?bydz{ZP~+XZ=q(;?F86)w6+t+!SAJr%CG^pO1eC`wX_BV
zrq9E@TRDu0zgRY7CSJ}VMN%x3+I|ESb0*R;0kJj#M9E1n=6k*E354FC(NTb8?3=@0
z4`9Jj?Me4}{&52>WVk;L*1uv?jc*I=%<Ku;B7dp#Bmi1-%cRPlyq?bXxxU{q3zU74
z38mh9+v7=T46LyX*fGMYI^10Un90+T3K2Z0;^_DBO&1}^UD(etK-FVydwMi<yEOvV
zZlugEY|%jl+eqCev3RsJ($;_tumJz8a?1~QPa`s1Fc;4oH%Y<Q5#V(pA+>uLr_Uh{
z9Pi|zY^-q^&K!&+SBQZMnV&mkRkAlcv)L)Yuish9Xb3dSUWXr@dH4roqYdB`+ys{`
zKYG|9*K>y~=ge}afH)m=ZbN%OKtWz$GyC&o8j6{)O4=E0ItTf<-?H9~`LAlX`pa2_
znltT+8i4NArDiLjuDh`g&`p?49h!W2NblDg`V--k8*mE$Ebe6ztl#33UKp^{@p%6q
zPuCsK<@d#{BC?artWajj$jS;C*~yNq2p@Zo$jZ*%B0DpCZ;_qtV=H9u6@Jfi_5FSS
z`QF!k?mg#y&OPJydCqx^s>2^C7{p_-sK9|gXK+gUHujj~^Tr#9a|&CRbuXl%)9U0g
z&0Dv|d3bcm)6Y}3pr6g*(53y#CT`%ccxQ+pkLLyjbn=jS)?1~@;8>zlaIn#KPj5E>
zW5U{Nw0mZHHU|ClPjnC@R}9%_gLvoXMWy!^dJvbHI-4F#fKo;%#Flt+hFh0>p}i>a
z3>f@}spU^v7!~#*v3`7!LU~~zAmu!^9u?Bx(1z3~%pjbi51hBHPo2=}3;c10465Ia
zRAEjgy<3p;`jgi@$T5HZITW5ZsJWNH&i32(j;W*1mlM}EXY*n<^SZLubekW9*##$5
zn14(xC#s$jO?to}avUosfO8uB9n!OTZ=nvM)!clWJPX3HTVt8b{jbwzb!FlO$@LW)
z@R|F)=W(aF@h+bnI?E~7DHCv(11Ig)!-9Hg$?#I$Gh_~GzZ)L9EAP0+_dC~9d-Mn1
zmMIO{*{D^Ck+6^6Z&3>#T#2bTarraJ))R>;c|v-6X&UejdC#R@f}A$?{DNWqU8(Q$
zFRM>wvj#5cr#cwV_qwPG)ueI_8)Z2?6$}^mt=td$BknYn_)qt}Mhn2Wwr%EUW-o`L
zC5lRE{?)n#qnP+sQ!M#8Iw$J-wQJ#%-<NS1y?oM84uhv0ywY$2n@|~-ksqhT-mzog
z&;8u7LlY(S#zaikc88_mG^4B99d^`*msAr7ihNztCiR9Eh4XfHc3|jyzfGBDF=(p{
zPZiI-tG$PzgGJr6bDrJ~59WG$SLonDT7CWtIq1*)q6%7liJ@5$bC^RJ>YYMp1@uC5
z%6;z;(A+kPKo;XU13Z{YRQQjduU2gXu^p|G*JC4FEpK*1d^|<x@$btp(br?MnAG6e
z4zJ@39lWvKM$SS8=F^cp&YcQFfA>IB?8SgD<s64$5&K*PK_WDVtXlUBh963l;Re#e
z`*31-TmA{yezJfHQ>St1>YjiEB%~Di>7*h63%HFKpRWgUos81TW7R<F*ec5^f(K1y
zOsLUdP-V~7KxjwHgz!=z?fAz~j?G?I42I>fq_q<cb4IRbv|cf6sv_d(22zA@eDs8*
z=$k`POGTba!|S~hqQ?ke>0jpZZb4L?P*P6>vcQ11lDq+EVd`ts6A0%u4+EA{97`Pd
zl$xScc=%z&iie02QLw5+3vJUk7*_Y;*LR#BU<^sf8dGXfQk!d-#{;&#67c$gm7$_!
zAff!~U<nw!ZYCuJ1674(F!TCoH>(k=CY*v#1fhxYk6|mi#TEdX6Qfo{1S1Y7ltJQ<
z!RoHkv4{iGSmrM7LXtWjw^JYSYl9=taFqKh4@<hxCpRqt4@S=(;{YQl>i_)&C{39Z
zV+1-S>Nynop^k;CBMjDgjG%>W^iFg^s|yUBU^$%XNUY;GbegW+WBB*rV{ND~>4z99
z91A@*X9Q~V`gEA*1TW__d-L!vJlI~;%GU-eQZ~z`29g?Xjm1I&lJYg}vk+Tf8EGEU
zOveY-8b+w_X*4`ouN%ky$57@ZyC0A+PNl%+KM@l_eZJVhc2|^14+|@8f5?b_bqPn*
z9j)GBD=U%%14FT1I+qz<hLY%Vs38lldi|Z~>;gka8UqjUJ0GpmmtfD=3uW^`{nXDc
zQZzKvny;}5FB%94np|f&A*~v~!^7Y7h;M3OA;0JI1UZ;YQ@%s9o82zF_g#s*JUlg5
zb!LtXW@~e!r9nADM|FpwprRUbRNQrZiS`hFjy$WW1e2`KSA3?#0$^MesTVZWW`xvp
zwsQTq0X>6zmDU`F;9-K#A7e0==kRyb55VetvP?PvBR%G)&!bF+czMO#P09jO;cjmQ
zqv2H|K~jBGfYXZk>hnTPI}}Xm+Q-=cg#FzxI&ax3)&miFrF8F%7U*ZeT?O%v>$&7F
z0O|GGaY`6;I`n)Zz62DmU|GZbLw11ZWwOBYU3nqFrWOIc{6QGd%KkUcM-ZT##OlSJ
zDjdBD?e8}z)4C56s@OinL1!^g5}`m15m9u^Xmp9ngpVhj(+29jx(SpMxBT}#psd_C
zYbpZib6r5uh6D(>YIJua9bP{-uWN7}Or>N*Rh<PA!e{s5ETm&vAsA*s@Xh137QmTH
zYmU&uf(fU!F7n(1x?on<X~*r8gyqIMkcGk??QiIS+*1F}W56^~Vo#D&fF$EY2bscv
z4WR&Ugy0P*0O~9T{l`zjVb59|6<EW?$3MXoKfGYpoKCa*y#W8h7P8rb7PbPfOkQF{
zD;+?|6YKdtk@q9KRFO{~^Ga&7g0{^tD*$e3YshQqxya@mO4w75JL15ew$p2>M4f>p
zY^2Pz_r{CE*qzLeNO)O^VA)=8aNX~U^qNEEvCxW=f%m)~p8mhS-8y$@fHE+Du3Lv$
zi}sLumkx^2R*^n}z~wl97Tmgoouu4g?IZvVf}VCbKv~@Y%uHllb`}#zlaQpW_XW7p
zS+fH2%?u<=+Ph&3B_2ST7;~6X3SeE>toe7&+pDeXykIX~G`e)kM=X5K?O*Ty^QAwd
z`Q(t2y(ilrf77|9f<hMr`4HMC{(7yqk7AlJP#}j>Jv?<t)Qm#`f*+l0#UTkS&`^Mp
zjAe7TKfKbt2i|1~2{AnVfY0^W0iQQJ0~+SGrtszsI9TNfZtdH{K}XT!cc2T1HH(M*
zm^a`|VzTvZ8crZyornF+AhFKb+~AEYxoKPlJ?$}@HG<cRTvVt*-#CTB*07~_*T@?5
z5TC8=+*QGwy{(lA@vSZ;4QJv#x?pbE<PtSGmo~H`6FCf0&N{W$+;temcr+yvM6e|0
zCy2XOxZcW{faF@-<@~kl)pdB|+;a8cJm5K4QP{=%7~r7l4ZWHx%RQ2ZafF`_Dn+jO
z_8@365ng|(XBaCN6Xv1NOUx5>=NTN&@m%z}p2LH@)G4=E5J6|B&Os=B9BJnSJ)&$z
zwfj~>$p}Ymt)N(9klvm}luyHYX^KPBWjs;_G}F(v<g#?Y&}vLx2ukZoO{k}ScABCv
zeV$-!ERf94CadrOv57{j$MGD7eo(Ns)8lgBhefUW{Nf>*j-?;Y6CZR{*GmU>cygs6
zd|r5f26nu<Pdy#(UnGD@Cu!e2dVd|5^g#(vRag`_`+D+WJ&3h-6Y3<%bg4fq5nu09
zAA#y1$c>CL#GlT;D58f+wQcbGUCm+?3#Zd>?(@TDgky0-R|?wRjCwtc&1zRs6xMax
zSlyE<{KtU)6Bed9VP!g)g5cEO>;EAb_J8>wf{O#ZGDtwnZ4`w`dvNc0k-%RSSqrv1
z7qPY^>q<dxRYU4R9sCc#_B|=0D*yyuE(wWUD>hu(->E2@WVuI|2*==~ZJJ=xvE~&4
zN@%Oh^{Ksf4H&on;Dag(8W33MMs?b!y}cnZ4?Y!1k7IbVFQMXv=QrK5f-QlQ;Sc|&
zu_6dD=Y;2o%0(c9ToO&|^i2?A(%gSyI0~>sS{N?tRwa#;nv9<pOPNEtXEt#gr2Ofk
z!j@^2_i#8u%yi;A;$Xv>P9%00|373HGp_#skiCvp7~q5;T*I5A3V$30pTqcAePAuw
zEr8oN>}}PQHHdPQc+%FqJ^+o~`OBOCAiQWOzo7s}xoZsawWE7Cq0pMMet=Uj3kL!;
z#HErqNNuP^{S33it?0vn<6dVTz~R$+zQk7bqrZcFo3C*TyGt!-8>J?q^&`BK|CO!I
zCO(KX4>+WE(m+PZRz_6-p~-}U$2uEK{d`jt1+rpD>w`~Lf96q%ivG6gaQVZ+7pKp0
z<AP9cfipJ0X#lb!bHgR!W)Ec|?BA?b=hcE>L8E}LJe-B>zf7lNA*)`%L3DW0won$t
zZ#h#0B`?EODqGx@ErjD~3g*nH+Y1nu^>&{jW8Hw+Jdaj!xys;AnhB52;fO~da$a36
z-H_{#Y3gYsLIv<w{{5A@0^cB#;_UaX5`9FpoAnzqU?Az0l2ITfhHnM^kOUk0&~LMX
zsbcGZd{S7)TO!l%tIU5x8`3s?lNf+<ALk=&so{sNpWnz@fpmuzY~`KE()?TO#T<%J
zI_W(7p$KrwvE@D)K)JQWn`H=6xC^xtgB1w(X-yG7dV$<MRC>!yKtC6}vEgv8Y;tUK
zL1K~v>m2IUng<>xT0ckd7ID`UfY<#>ay5&J+QYIV><bR3VzNRLaFdt9ZB0f#1KH|H
z2qJq7SXLh^ne?uzgp-#?E9nAod(rZN2?;X5dO9ME2<Yn8<nFD1Zk+b!eZ`d<D-vs&
znEw}bC~HoLk0L<!6xl3FeFl=(M89(%d|;ctHFfmP59kD&4tR^MI74%NwF@scflaTo
zo)bE{P{CH8_V>@6Kd`+?heBsBV8BbMf&V#hp{h*tl>=iGmyKc}aS5QaR}5-gWSX-S
zg)^~B*Yc7(Ecviw+U~|TK<RM*FODM@Gi(q|+w-pf`E}BIEdJH>uq0o0E`!3e512W%
zd9tt{(RgvrvQ<s2!PJX1X0zrky};pZm)83I^IjUOA2$ENq6=gH7gsR0ku$5e0ENU5
z;g{gHJdktDfb2~JR(j*q6)-YQio*PdN#sJC9Jx^iJzhs~*x*9hH9<2ShQ47}UnTc>
z^ufN3-zn!?k@+h6<U4-^RHqWi*xQ6(lRo-G()~3%nnhLLtl)8dx_05<{d<?W6WKe-
zT?+mEhQq2i<6jXJWUV+!%5U`~=*v{=l1B(<xjfJLq+!`x*VK|Xa7(f}MkuCVip4~o
zHA8!*$HuQ;IX{Gi<=3YRn`G;f_;kTH<SFJ_QA%=qYEQoBPzZ9bmfN{h%cRcW^UzU@
zF^BYQyEa~iRK(fiW8W1gX&rnQ6Etx&sbirTjOAeHC*ZILO$tBa;oxdJHvV`+P3C4J
zRbkXkPPd2q*Y$~VCtu^-)F`)nLRsj6pb;PSM|;DyS1XT1Y07mTvs$@^$L;lI@6W6K
z=Xl%|2(y&49DM7X5+9X43DSl{@erY;1WcwjExuvCVm-4%qnsPxRf*XGAAVQtyi<60
z)#ZzlONna1LpSSoKQU~!J%QP3z1^~tpfk>IZ)OCfgB$jAmB^FD7)gH&59ZCLyip`)
zQ#Um-3*Mrj$|PNOm6&7sRW<uLeSh3LEO|S+)Kg)VS!m?1l%reb`m8>`%<S0*9%H2k
zL@!bsM(m4xilV}V-JR3lsJUgj?Z35|kNE}dIm)e<@*7&XR3m4LUBPvHv8sF-K}Mc=
z(<os5g1)BTTRS^$t0gwd>Mg_2i<2|UA^D8Zi}MV=t+@akY`49Uji=rcb=aqmHV5Sn
z2@NjE2}t+*s#iS@2^XBuOrzSVyj9axKbYY@9o(j22~j>ISzCILtoeh0%QB}>z1h)+
z%z#{?vHRBIJC%WBCNm@KXo<JO(|G*$QNk^KjQ-X)N;<Y%e<d|YsoE!Vg*g%^<MNGi
z2TjjNOLN!WB~o)2e`vx`YIbH?{er{mdUd4j4#uN&)U(BllxUT%fa~wV=w^D?(s|2e
z3P?V@zoj}>Bq`1P+9xVteKH~3tO<`ysO=EbMeD~sZ_e<Yd(-RCmh~{&Oy${6guOG=
zhe{f9B0m_e<B}JMk=}>CaH9mh9*#Q_Q$UhC@d!<R`pj2#_`6&3V~8;!Zu<dttH_;;
z!bd$F4^<1s@}WOvt%ew@5K%IMUk=~<)oU>Nch>b;{mb--+{?Y(EX%JH1auxhRDV8x
z+c?M&inFMpVz~Hq^t;++AKm2+tGu4hG;f5sd@eCm`jjbN5Cj!L?G|pXB<J4;<xnqF
zDzX#f-8*+Ao{1%g{Os!n6->J$GpBKI1ye^BiI%1DENYIqaGUJ|nb|<6lb3dZ)itDW
z?Gta=Nqz)e7sWrA6%?d+8hY2B{hP~UZm6KDfrP7_Si5Ik0LA`5+*}nZf}$Djr8*z#
zX?UZ~WYcZ7`cXHZb0sqHo^qfnEg{Rud<XU-`e}jLtk|@7_3@kajTuSDBujE%<@<vl
z?>)p$4q?76*?MbaX@rrxt;uxz>p|}O=eX$OdT4Sz1BxwGDq`Z%9kK>D@4kzgSHEz=
z3)rgJL)i9ie7wn>YtE#=cwi?cs@oT#-cRf-S5n?J5Yy@OQ7iFc-nUClxuZJ;YSEp`
zcC9pi_$BJcm=KDEQJ8#hu;xi{2kp7%H*Kj~MJ^Qj0=67`<qjXRdOXU^(mw>7RR@!+
zuoIf!8fv)AEz2pM4Ka>hyc7MPJ1>~a1`j{?kxVx4t1wln%%MwHo$#)ESX<nzYNd>A
z&9U-<SaN||VX0Q*QRCkCCmwE(i1FNWcr9~UF4yp3l8G|*7EZK;q+`{`NhZ7KeUG}5
z>t?9~YL8wUhtLcQ&&L(+bs2=N&R(<fyIb_hsQeYThxM<`=hv2h>6@Byn+!73%V+h+
zq7VIC-&k*Ec1i2VwvN1iuC$MkGbH}0@>D;G{2Bh)nWv3Q4exj(7Bn{Fg2p|Q!kEz5
z1sd}==sv}L7DgYQ;t=wQF@41vZHRb0-O>D(P@jkk+HD65@AS@V(qWgKhxSVQRcNdC
zNAsMyZwXn7xR_<%3=$b!#QTyh`R&e)kJR`yLTbOwYcf`LFosm--6fcA3F)r8^ck((
ze^<t@ktnP|r<M=3aLyCH%m|I?B8z<VZNW@luJ59nVDCNS+$;CCbN1O%X7c+=WCW*)
zGjxy5Whx#zXX@X*^GvqWgR6RWsw17a?#WB{PvU%9_7l(KFxt54nhDU9{a&<5hzPb*
z-26NpfNsP|NYKA?U0j-9`ztmh+QRdh*I2dF7nUCby_{lr?|5GxD9~b1J#Rx7>(@?3
zP~6xNwBr0w75J16i=XH&R=KyMJmZSA8_kj@xv%S6alsLY>ZDjnSLCf;1cNZaz6X`u
z^@O;2=?X!bI%)GriGhe?kpRl#LwZrE1@zCZ6X|aN9qtC9$MHA@e)K!<w}0uZuy}{I
zVS0zOo+)8ab%kPn7%Q-y;~`pjGK<Li<KaRM@6}haEAILx*aLIPE7)$XFQZL4#Pv&y
ze8Ce>X9*G7wZAx+H2hdj7HZg!-ZI`5tBOGtNc!PA?OW*o_#b3@6Au7#?Ub5_0)V1s
z`&(4-ObXMFhhaq;&&@6Qu3(!5L)%_sGr^0)8(q&}_^%q)YP(paxF{hiKMrCRbSDWE
zP%*{%?&aC|r9ph}SEUw03n`sNj@J+}1VGT*nJqMUFrV$ZCk%KvN1x{r+Cku3*yTCI
z0NwaUXZ)g4HVdeqr*mkKl463SlsEMU^rq2oz^Z2QPvvnw^e2Nf(}H`Bij<{TSe<)~
zMMeG<`V-<1oxa#jPoFgUCwpE4h9UHuBV;?l2+j{mQ!%jS?$0Aq#dc(>^i0}pTbc>P
z*zG#G)!HJVq2^KqEI~gurg%Vd19C~U)tK)S4nEcsH~G{aBlti#E88)Ui56|dt<3~U
z)SZhnxpXOHc)V=L#Rr?2xI4p$s$afOe=G=J(5Fz~`3+QM=?Qs<E_I`eT^M2_D+L2g
z{9EN)Bx0MB!zBcTC~tnAsYO=(YzbKQZ)MxHOY{<W66WO1cSr26KLV-F5MUDELtFPW
z-YGGSzIw-NJFD{rtO+T~oAc5`PRQ7b0H#16+F`2||FaI_9ad}358E2*2o8&YY-rk!
zpCq(47-L5enhv_Z+YA{`GUkW&?5)MZ+meDRl$#?bArGr?rU(>BFvVYy3z9iH(=Jpm
zyvFJc6>ip93Un&vyVEjy%u*$5LD+xW-}Q%WTl<oA0HhF1e5~2s-yN_iv^NuU``NeZ
z{0(zzftHtYi&n8L6ZYTnubrSSqdpq)bLxhqkw3Gjnu;LkC&Lu4Dy?*T0coTQz2$4V
zxV2+4eF`_ECtgQVB<`nx><}N?;6P8mT6vP4ItaHdi{_jqgw`6;loYiTl5Hx$B(!y!
zKC`b&av-A4N#st%?Vu^?faOp~PgE%Z6m;*Mb|HrB=W<94=x?ug&L47Uzw?KE(Vg-p
zt;HN4@)bqfUS~6buDn%6^b294PL0SV0ztQ$69U+5bgNSe6@XW&tYoY%(Z8o<-ptV(
z=#oMcKTeo*eE?gnXoJ-+=pQH2ud#%UNEdjB41|g9w2*C_%G>QmG!Zl$*;>lM6jmIv
zZb26D@a~P9^LvNfI4dwU)!c7sG|6rZoF9}OEoOegbg_~yETG>Sp{XZNislM?#d~08
zF||lez+<H7SF=v`$G9*IKgFYwU0c9pw7b13<O7)7Js%JNbNebWGntXlvH{N_XUHF5
zSYp3KD>s0@tks!+ayzqve1GubjRO$KbjJOF9PoI8)>sI<zeoFEj~QUWnUPNih;PZ~
z@dZM9LXMqi(OA;c{)VKevir`S1+yaX$b6=LMdG}64sx75NCOw$PYs}7H5sbbygeHn
z0k#(fFSMm$r7&~m-rbxOY=gy}%$=<OKvqU1eQIBjz?#yZ=*xnByoPu%=vnCmLwxUu
zRh$Gtkrq6S?W2!@=UUo6xM6~2OKYDyp<wr$zFA1X@iHk4JRR=vUjX2P6DrV;{shB{
z8d&<P1^G^ol=s;!WXgg^G9io=yYW@1d0qf~m~T9n;IIkH_wMe11s_m@EO*g=CmgbC
zkFcr$yFxFW0$jnFKz@%9ygKF02&OF*WTz)A8;1Xj1nAd+h`HMp$<v`{F_-}TY}6~{
zjpsmiTJ^BS7dZ3~Y_{F~T0h9^VT_1hFFjzdhvAU$+Odf;-MwLnDjr4rPw(Rjg&}7{
zw_#$U!{R=W&jY$A;nr2LJb<ot81EuGy(nx#aq~4LbU=u+#4On5A<<p!Q(SI1>I2(o
zX|2JvjwPjo1?HPA@~Zs~sLe0VS;HQ`7cn=p`*lWs7vniTHGxBHEEG6llkzSN!Q5N`
zQhq3=53*M8gQR#*8x<{M4aJ=kX#|Bn_Qay46r^c1@qk92l`BQ&vy;HS4wl}~{#YwY
z1Vf+yK8Jy{xYEDMVdo;`>JZ8)onv>*%@_+vqAJ%f6a}tV=9;v@4D`^vQ5J&Lfg2$L
zElpHO-bdkmj|vg9yllbKy0Uv@{vMe+;*A9`#}}64uXnL-L_CAEN~lol5wqzV=ml%L
z_)Sh&mw*~E7SK28b!iiQIvVIiuI*JI3Ieaz%+*d!TqB0bZ>Aw?&l$tQIa?zn1Zj>9
zYeS&010U4Hk6GvEux(@Aw4MN-Z>n8R@z3-1yK}4cL58zc=#LltIDAv8^cU*qu%8x@
zR?Z+>TUz{ylYzJAB#c$u1)2B9W&-1pQ^GuSk@!nKtR@dXjjO0j@2V7pf-e<5mXTET
zA~+4?jZgJ9cEEMl1J+z(poIHATyvHLin|~<oJrd{!j}iJ!$Nv_YFd3i`iVWSx#*%V
zT_Y{Vd{7!)Q{NmVh67(-jI&Atyq!~+hX)^qLHk(nm>b~HAHlv7oYF~zfZNpfpWtI1
zA=rR5>$|g|c(6CWe$|Zuz6xOID96SCxka{y7{lneTj3kPihH)XK8&ZO;=*5^krTQJ
zxzQM|omn!%eC9RgdZxi1CE2_X=*Hnj6BXuWvdgT@McEaI`5|0k{$J2TymH9Dx<IT|
zCo@*k$HR04`-QImlN)hbgwHtkZ`$MAn4#Nyve2a-^p^W$&oe+ctWiIbw`_*a@>rzG
z-m+N>+_2;`HlKl~(|8*)v@rkSf{TV*&?RIZmA0ec=07idye6~<?lH{*dPqG0_yw-x
z{J-e8Iov%6&H?ewnj?}4Cvjf7P>{wgp{^7K2)Q&hd;{!B)wSpZs-Jv$+>i{bZ@c7!
zf-X>x($-uTl&(WCKhW#-{R=>1xLsdM!OrhuN2%bF<40NR2c<UH(^ghoavp)xLdJKx
zWAT3yz{hfL85N{~#i-je`w0$r;B1jV02o9@*zzAh<H534G<3Vzc|TCC^Z`>;YIhD*
ze=Oy{^g_V-XOJIk7&=cl1Io$8v4pQkAbR2sS%7o;P$l>WGE+fkk@2W$=*y?jX?~Wd
z`1u2Duy<q+0IQB~39-?`c<gFRS`0ah;LDqsZ}YcU2nYu?fpOg{uYaZ`yM}8i3Y)#@
zk;Tk&z`x)&34F1EJr1++UMQeb)e|#cm}FwhkRd`+9FX1Y{Kn=gRkJpRM}kaHwz_7W
z-2%W;$4-gwZalq<g<piR0VhgF#j3E{E_w#mAF%!+c;c6^p9>SPSKNFh0ma>$w52<n
zdT<PXfo)z%`JZK3zDdLdDNV3HnA7=It`Q6<(_MDn@+xtEe>zrz2cmA-?#5q`qTF8X
zX59u;=UlNTgK*AYDYFXb%8+LJA>}RbJ)_^_DlrL&mNt&VcM_zJNmMN_*djmeeHB+<
zW1*{iwt}dKCT^-%l<*&NK0R7&-UpN*oNnAY5Qfq*;z(NFd?p*n=(P2S2xRDXzkBST
z!Tq3i`gNp~^s5*s1}ZkTDFEhBzNkM&v)sQ6ZZp#laQLr)=Dqs(&%(y}Ca&=kUx!0s
z#PXO9l0kt-%4P|*`AB8K2rx)>c{ZB{GeGFuQ6ax_f<$<UWJ?06`0)gH9zPH%s>B{)
z%Q+5w`ot0YUtVchp}mLT^#%ENc%1x695}zcrl5bR4TE?3V<3DS)PhC(&^JnpA<ZLj
z?tGkPaEAXqK*1s3*?V;aaj}0NMZmko>QV5KM$2$g;;`7_TV%hG0(YyCk{KO<SW9Jd
z{$EzJU2nYu=9(MHwKHHT!t=Aax`-K0M3`4x4Z)FOYz<AwrLex!fNvlbU&5Bb@m6W;
zIQYVchUWL_M%CHXy@K(VRv3jIoMs&D3yb*VVT00t*WT6vY-fEdtO>e2!<V2UbZVh5
zFuURo{p*&he31H)DpNiN|0VSM_s{)@V3Xmia2~x4Aw-y0_<IDxXX{6B++}=aSm`ND
z*0y`V%q5Z3?<sr&;qbp*(!zv1?*l&L>|!Y_4WZb)PX7?AG6F2sWoP~e(r<fxg@X5r
zdSz_WziZI`r_)RLK#x8y=?Ge;VJFf%?|P--n;s>@+VvK+VBRDog0)*D&0gOo<O!$A
zo1e3PC?b*Y4X?`4BKIz0u@CT4UQD$Ew^PKb80J5V3%3{A0d6XWY(1=UzPbj?ieoPR
z3ojD*J{*u08b}p$#JyLfBc|0PdXvK%Hkf1Y=P5Hn9-_@MYJQI#>iOfAjCbc5qa2I!
zIP7t>#9WGB-W#8&;$)S+`e|$RmEYwSN#-CK`<g*K|7oh8_voK-oBWxmmk~{6G0D@r
zf%gk4(0)G1n^=szU*LfD(`D~>#~rRSlE1YhU%U-c<Ik}R4|@GHY<t($5d{bC_2h9A
zMRS@Qm+vCbGxeUK9a~bd>HWo$X~Y&a-+Tl$DemVJlsR}BeZ$Sv^G)MkUfinhSy$iQ
z8XdnqiE4bvQZ<^El-ULb-gp*K(4dpeN!f2yFkVx<eAQF^fl^nLjb9nl*ysoCB&}rH
zf<|$J^oYmVo)-z5slUrqY~1x(Nf8IjX%-qd1kG4+PNF1n<tSQrP&@CAuEdn12;4zU
z)VtPbw1GM)&nK{T<DNPGz-@$0traUg;Jlc+qcBSSnv_N}kv1&{`uw?Ob`Z(hzFD+3
zWuDrdi=6pRmNI_7IIBY)Pd{9$4g%X8W2Qxt7oOT;xcE!p^BBf`MW_!1PpkY{8pOUo
z6eMHn4J{hDtvEmN$9->}r3_v5_|G3|&)dFq7iZhf@oc_3Bw~m2{$5<sU{I?s)xE%C
zxFw#rM~3~)<Uv%vp+SMBF{^24kyJ&Bxn~w9#z}HeuGvz%MuTjc`gCPg7NwN^;YCS~
zOT57%xvi?n7H&{pY%tYJ{|x^2{(9y8^-#)@ja4-cM`Ib5&_8(Vv)yMJ$Pd!xAElEu
zjgHy7>B)#5I2?z&bj;rr7fYtw;?mm_n5uevOD0o-C8mwpjwk(9cf054*V!q<ojcv_
zm`~U)4NH$vMi(5!xjrucV5KgMrbt=&Viv8+GRC!e@%!<%&S2H7UvBU&Rqaw&5{qHc
zp>T#~M332NPI0lPka|`qwpw>Pe<nkeQn|@l$YMhB*Pa}H+pU6D$pL3B&$Q2Vy0p>E
zxSr}{#*25LR^O3`*EN1Ah05s9Vv}_X^c&e64c3A#WytPdZVR7<|LQR<#-l<$$Bp=9
zmUn&skBISW86)Y3r(}af1(NK<Qf+2*3_USA)s=6~p5)H=s8d#q`Sk2#qm8TyrB)5d
zeWOuy?;jn0U|i$7qAz)X=Bdj2SDfSGTq=a5r$A`YAwPonf|!8&o#r!%)|JF|Qk7h+
zuz?_`ioX?COCqYYNSg&ut&=m4=j`H7d)@oi_@hrZMCk|eCgr*pWSFB(%guxq{ScdI
zJ6%td#!R@n*R{vSkEz=pBDZM@!sZ&*O27Q(@t?FW{n}++Wc0jOUg&{(Zz*FZRm?r^
zF$-oD_8$q9M`|&{f`qJV$wu;_wfAMss84E5Dp}1-XT>#C_tJC}J6X;7hw`f{wbov0
zjM^DE`Yw}k+g>i)oG*)OwaiVOOe*A2HRa?NRIPEX-lq$CmfK+=(@ffafm``XHMKTh
zZ!XB75+&%Fue$DOz&<jpJ)J0~=&ScrLXqn1+ZD5liTgL9Ib*vd74Q8oq0q=(k1~Mc
zV@9_3w<?XGXcp)zizScG3!nFgb30!8l^JbPk(EjoXl+yNyj;Efc6==)nD1r!sSw(O
zRw~UZ<@7grZGETr>KOWFf<L00xVZ(q+PNftD=fK%8}-SPslSxn`E<JUVB(X>Bl_!>
z4Jm;yhlCX*pEq7MOsjS>8-7HMFXFv~erBDYI$g0$5A5lVz~n!A<6OT1TDY*)s{YPi
zW4P3i`=q;a*B;5Sd_&f;pWcT1o({vi)y%{3u}Al&UyctI%|>(c+?#$eKD1b~5vQ+P
z6m%RTT-{|*?p)tjyI-L19FsV<Rwt{+XO`Dir@O4<GS_?WqRlP&O*5|kDqEw~rd-dM
zer99U<OTG`(LXxnNP4EL&5i2iY5ZxoD?D&H3+MF!Go7PM$^j?*U-xJBwtmz8UMn7Q
z?3r8+o>}u`&s*O4G`v4KjIpmv8nr)odL4D8o}GC$Ha&D$bjx1!dFoS|laCOhvyCzH
zz{U(1n_bCqT`T};nRxcLXU%>l(~~-VLjr=s@%+WsW(5<>0pIbG;2DgtKQ2iqI<BZy
z20vcO2&#1RkJina2*CpgBgVb`17TnjH$0%K3I5L7<WaJrdaleLOGNQ}Vg>SgL|M_y
zAqRbX$EQbLwx#!P)+;nR8Hy+MrA8|iDjGitlwlmZzi*?GU-+AZLR*=)T8Ub+SE2q{
z=W{lDx@@yGsi}D8Jib`LiE-l{7Zz=n!PN_G8?K`E=Fco0ZkIuymn?lhB@&W02KOvv
zM(gGeNKj1n4O}-fF5&uF7kT@zzXORkv@<2C;*7=P$)A!aNyRpHaW+*}E<bU2z@5iK
zSj;n3nvD6`?Ax``imi4d4pj?>rb&m`&4=OlJblJIC@3loc=C8wJc7#N&nVR>>>AZ%
zzE+XK1FE8uQA0**|3+)p@87hw{Be5aQcQd1t%l3FzyEUUk@L(bw5W2AXf-~iu($A`
zV2bAbIh$iHKt6IF5q}}6qm_2_?HYJCc|$>`XP-B8y6&8-?1X~j`#J~d5%1spc@HJF
zAQCB-eZmFkFM{WXbHyz8)K31|9{Am55wGC>D`x+(%f<JU1{p4Q+c3%dN~`Uk5Kor*
zd3F<ILQ|&VWr_FsPNow^V`PcX9zc_BEOMqDnSt(v6wdP8MO4A_Lv0OJ33XX!MvjMz
z(D)b{%h2;4!t;EIby+sNFP~RGF5#GAEXr*k@aL*}`~=<H%;wi`26lP&rUdes20lO8
zNS5NPnpOq8UqegRzvh}hpE}S^K)&a`hI>)-Nj4I*IO{N0ITrDD7h`ldYd8plU0$~-
zp{0*hs5kRIMKNQp=LNlXLMggA5q@_`tgH&&Yk48|8q39@DB@Qts&cJ{?DExK+y??$
zd#JHl$fg8U4-zYzx83MpbNju#WVI7^(ag!!B+U9V@82!X(m$`goEuu|&3nFoS;^NR
zSyam4ms%LJPhwtXlg!?|U2J*$z9+!Pnb&c6hO?moU%W42`df&)h%;GA+hy0s=lE7J
z%unum1%A|se<SnI;UOiV5JUUBz8KYHotskR_|G4%wcb{HP1;I`@=UqMTl-<ky21Ee
zo4}9pQ&Nj<?0)nqzF*>u2p6$SgY-SW-g{uYGoxQU(O&$tpNPbE=-h?5_Rb-uM!G?$
zU&>Z9yWjbZn4CDA`bch=ica9iC*KYlymfA#aj_^ptTmiUgsHrOs7&=89E?L$G9fC6
zvmF|ThwEY467B1I$XP#VxovK}`fXVeIad0F*iyyHjon?so~gRBBBr#%8qGZW?2Trh
ztg=rtNVD8g+#t(3|H)ox^lOWM+HbM}8eN}_+WdXMa$#dETW;*AMTS={I-*?gGj>z=
zwQggJxlk$JC2kH|PK=pFLj43mj!<@t+4<kPM$BPG71?q#$5STJjR)nbYmw$J?ggB%
z7!|Zq-^TNs<b@~)d8A?!?Ws>{GUcQa@2PidcCOzH^O?kk9-UUaKl*&=p_zAJuQ(yE
zm?*?Ha%%TJpKW;ag>1R*UCOsM3Jj|oNf1-gqa~}H^TZf4weq)j(aQCIDi<hejj*IS
zm_nOdksXXj`H?f9-sX<dcHzs4Z#0*wu1$VNB~(mgXB*LU8&2VA`x{+4`ea8yep8;I
zzF<hXVB*sQKL}R0=4Ii#%1?2P%A=YG$jub6PNsE8Zj*wkp4&#j?`6gtaXJRg_&EAq
z#7r37n?ioQs`j4InrbJeNe{sYaY>yFZ7H2o1KZxMUvrvoKfKDt<1OTCTnZIy)hypP
z5{^-IY<N>fO1S2PAx4ztxFXp51tV0P2<!QGq1|4`NTTu9ev2tXX-=7@F&5R+ufqE$
zvRNEQTch%A%)(_;{A82<mQ$QTnx8)+N_s@TM#;9^DJRln=nS?*CMxAmjH|~hIM5}o
zcX(=0(#C#&mvp%o<l?Jr#hmxDE18Ti-S4(K{FM)+3MSMXdsmc<=3%ylFc(TvhN@p9
zQQocV5}E7EW^t(Vg%PF)*gnX8Pht$|2;xki9u(^vLCV+x2D5%in6K_jpj|3|NZPso
z`np$f!z}?77QZ-D+Byzjy+1s@WHe}J%KNorYI18b`gftvx87g7yFcE**NbxvqjjkX
zZ~Cns6AfS1q(@+;OT3p?mE%3;=utH^F;C(m{0UQC2AVs<oi8k<&d5=lAL>tqsHt)g
z5)fEXAFj%5XozKwDmS)qZ^g6WkC@!R3h3nZc2M$+@j`i<NL2Y@^BV?6`|@ZQuaYY?
z#jI9X5%33^lIS&74^@Fzt$G~qNYwNb5!|{fu-02mDphO$Nj67sRoO9jP02k5<@NXM
zmBP;#tf);9Dw==pO`F_62^h^)mr-_&K^gFTXyz!M*H46UbK<x9SFv*qG_Q>Hq(}9u
z!m<dl@uGgZV`=hC(lv%W&k8P1W@>v^EyP}qb5G`wz&aOxoBrLBBC_`2KGGk2YcJEW
z6=v}h8l1hAc9X4S40=gN;#oQcm$F}#)|c{sMQ;D7ZY}@A9KG&%<M&qJyQGVPenM9X
z>@=198!~bz5osu+F$I$-#7!?1QFJ8mo<Qv;7}tu+oi-feP!7G(Ol|dZa6#kApLcpu
zP`$sz97^_)r4UpQIft4ME%!Jc(-bb(L@Ejefx^aeUYB|>Xpn!v3kK#ztVK{;z`JHt
z8-E>P(Cp!XJNOlJ6X^M?JqMMa=nR{Twne=Ns1Kp-hl&m;u#G6|C%sV<PQ}+0RrH1g
zE^KXjn;6QrMLq`cUPyiCNDmjFKJB-&0z_?i3U+zn;?P$^hR?XKiesN5mg(S9$Kw5!
zQYM%Jjq`X}IXrmnr=xx!Ud^|2@#`(T24N+)NCTB8qTm&q%{+^g5{ZM$V!I|nLjhDN
zdKY^zU@;kmUTZ=S)=B8Q;nG*HMA>{prWLW!ITQ}2jaQ(E)<A%Y*ZE^S8AMl+o52H=
z@ow`SZ{LJj7N3ldfnFEn`dksDBdB1`L&&up)WQ<>%KQd$ZRPiT1geRBI*bDt`<!DZ
zfdQ_YAoOOG)&$|@xUqmJYJ+=#!d2I-Kvk!r{tPOzR*47V6ObCk5(1Z5%EfM4LKU!c
zsC4QM8&LNKR0?}>m>TSQ&)61%pJ^R<4iui+VDoQhRSCB`JFJxLM@MO(YenR6I}{V@
zJ@NJI8nZ&%q#%bG9M}Ge_zVuFq)!xC83hAL8+Y6T%}C>qSf0tkOpT=+*2D*Vkxi(6
z_G`gsetvLMi^Bo4HmGv0({d+1V!H?ToygUtuz@*ktKti6SW{J{=lh1xnc(3SSL<mY
zqibOf+d1>?LNM1fsbLG`$QnGS`0Yh>AUIbs?IY+XYp5FfBqPWOYCFK>6FJLYvsT|M
zh5Kw)wKr`+l`?m1S5^Ml1XRlV`l4JOG|apfHyktvbbAj1l%a}lV#+3#UznSrmawej
zztYx0zsqmCRKG;CCb)0KC$w7_^v>i8eMtdK#kDgZLOXFT*fNi)|Ly$VkS^~ED>Hnt
zM;EDz4m3Ap-}V?-X4<p$>+pbPca|?0D&#whU}!_hQv3QX1TF^js#y(C09Ad)f>Sd=
z@RW$%^v)rex|q~0xoT|?#Sy57ERYW2^?YnY5|m@!StJQgWC5kQoQ~Q?$jnYqkcVz^
zw`F=T1TI?L<}@5Pfodfc)faekIY8kfMmh8yc0xQ*L4EmENC=okNbzzscsfizfXizF
zp3V&xb|iz!&48`KozGA`E5^XX<zHd|R{}fpJgA7IIgUN|0M(fGJg#z}R|BCTNC!%P
zrNw6!vvf+U!-e>oijWZ;Fe|Th-3MK~2iqw3S`yu^h*r-%LY}t)=zYATzX1(J>G+Cp
zpo-Z7UlY)9v#k)+-Wv^S7VikSMbm?d#HIIJ)|L98J%f_W`tTu`{4m{WP1*qQh5Avv
zbOUS0(Lo)ivEk+}0H2;vR&~{ju)bka^~4siKCmSH116hlCqt;fx)h0mQh=s7eVq+i
zrvwUBdoAuRvNuAt+-PXuow-OHyFllU$TUBpIMCqu%Z(YRk{>E%kIJ7!Ig$bGCTUow
zHZkC^jlWPIS;E!OW-jj4hF1l}L2M&Gfug_0FI0e@BCos|3na@!xGLKqEN2cKz>x`?
z3~;?_3<<ZIc?ipz!(lyl13C8&AX}J~r2-8Y+iB)hNM5*dU6JR(52bjZN8(0i$bI2C
zl^|Z3xqk)B$D9m=yfLV-e&#g8&!C?yp-v;*GFimzRq4H(1>#{6yuZnh{vKlXssug>
z>B<bGX-e9B$_Ofy0~%MR<G{MJIm{{+M^K4N<a)aUw;O6j@t$lRw8h^1V-Ijz=|~QP
zdTRt-_cyr0n8xc9lhk4d&$nvWl@BXtAy)=fv{fF{QlOM~;+fTAAzVO@hE`S2`;Hji
zgtBqx0Q$ur>gy3y;h6>JG;nz8f~1;;g**$y*+76=RYbigG31gE>l`Y|Bc3^GI=EUM
z1JR(LVhOfCSWR7E^n{p`@`)(EBfBCXg0ivr?y6K++vPVD4M6XXV!duO^#0yAjmO82
z8aD&-2@-i_JGJ2ZD9{T_xWx=FTZX$80~jeYr9QFu4R~9$Kr(OJ(nEGe6j0RcXGjqf
z03Ki<>_zt?K>v#3^1xTyIw-L~*|(nv{|9J0Ne%J|fP;G*Tf^JkJEWj1;f32z(DIiy
z;Dj0Z6K*yUY}!!Yx(fv<ErgfQGj?H+KvGTqa-N91ffKjt8iC2KlOEWO%=pa6dzJPQ
zGYN};M|OUQgc>KIB<y9fUs40dIFagH|E>cun6}q`A8usl8EEkENt8GPv5-D+o(;r}
z)wijCp{+uEB0;y8u|c!p)J7*SXdDQcPE8c-Xuk=^_}ZM(t|nE0Ks;CsG#Bdrp4xzd
zEoBqxuEl9_GAyQGh^&?*oKAEpk?(BKKftN=wTiJBJ{&v=9Mcj7K*FHE+>V4C%p3if
za^`UYypffxVhMDT@Ez2IbS=7rONNcRU))VO?pBDN-Bi5}tWc4r67?YHzCp~_)J0Df
z1Z4SnL){#t__GuKcsXuPc)g1NCKX84_+bS+)w<td8D8x;T|iBZOE>X~-;Rd205xgZ
zxr4@^;+}E|5)l65&VD$8n19;s5V<1=PN$>YQEv0|!&W#a^L$M$ON1d)&OTWOSBCFe
zjE8jKmNM?-)8$4BD~U#ZGR7LDsW(TIdJte1KCdMMt;mRSKrr9Z+zNE3=HaHKfD0JM
zva=lk{KjUZ8>shFM~-}ol(8R9^?P)?(@_q5m_?2|-GCvh54f_dmRk|QbK$s~`j43V
zVG#$~f+s;!D1XmOe26a8VpfYknIO0@2|o?M?w$b0l+;);V%QK4Q`zP&`_iSN2z44c
zc^S8(U2$wi&j~w8ycx#Z>MICc2u2EyLt%-N$g`+Hzj0rf?q`4+&zD~A`Y)*8WE&+g
zG*;g4dLlfu#SW>0ZhL~wsDhP_od0@-ByjZ-z&)pjTCtQI#w}gP<B0+fUe#~eft$ql
zi#6}A9v!HO2Is<fGs*(=LLn;Tdy_!k?(U-(1%t%t*b|^!?Q#PP*o>R*$LjjS!TTBm
zl{=;HzkEUSWg{yZ1PJUHJtN5de!#KDAzRJmsylSFB7Ovl+M>zgwsk*m!AZ8WP9azq
z&LMvg6X{eHP$L8y8XuSCr>-~JtUsXfakZt31&FZq!&6M)F*D-rGYv2$Zgx8qL`6l5
zxl^ca2;wDtRBZ$~F2pyju#Jf&1@x^zuk?RFuLz+qZ9=>ku3c`5i8sJ#*yIGJj1-ti
zKnf^c+SaQ&!-N|;LY?uSd^qz1JyT5{1{d*w_Gw#TTL`1REv+j8Mg8sjJvgXsLVvk1
zMFQ?~Xlic!_#f(RvPfhANFkxQTGryw>sg3qRpCl-EpAXR?7!a2j1%BK@+x9DZYl4X
zlb13}t336hfd-s6-ZMH{kI6tSOrpI#_o^|WRPOE4JjkDW4FvvLM+?x+;zTf$c?Zlq
z54Dx2-ZF>w4%aFAV|#+!pW`Ol5DU`F4@_=^<8Dbc<ilP+$o-`uu@&_e*q&LFdV&V8
zTc^KFuXN^x;^s~osa^gZy=gKWdJ7CGG$qCC^6Jjzao+U<Oz~7n`vVqOELpCgIe2dV
zsL?vC40KQ`HrO`_d4dKbkxCYttL~#(4P1oJH;~~v^!SOd+FWG&N~=n4f|~@r>v<2j
z8>Ri64v+<0vPPfE>@v`(BfQc%h!ICuX*8<vt|p);q8TRBdUZJq9uG@&0au0r)`3+9
zkmuT4bfD(WckD~o@i;d=r+xr>2=hl52AOw2w<b8T0HicULE*P-K#BGXW={b@IWo=t
zE4?;XPR<*@12?62h0ak>2kAD7ipsk%V1_w^e@8`t1@)C<CS5f|Uo===b<nzdC|HLT
zgPeA3-naP?NK_X!ZOsLz`7|C0_1Pr2)7i}B{9ybucv>i++Ac&D+Y5VfpU$gr9|-es
zy`lsulIsNIz#93nM$m$^ZEEHEi3znCo!QEX<LXw>RjUXU-9fj4a*B#@K@vjh*EZvE
zi-4{TTd0OK#OlFBYxY|y`0RhMyBGFB_sBN9*Q9Z%;atQbxt!7=FY}{2N=cp6HI=RP
zk4b(f?blPs*LIFenYl`S{u}QLKFFn-{^|bD%R%+N98&wrj)Z5?>RhBJjhdbvrg7_0
z*g{esL=mMNR35>{3L1y{B+0$$U)eR;$AZLvX<B^cdn`lR%zWmNqBrzaA@z<Cz3$1u
znWu&Tg;Z-cRY6$sNoUhrQuU75z^+n0jA}y%_O~(Z7N{S8P~2XRG_n@(T9~Goa)c~K
zNMuLX3h8RBfkaJn>a4t*V5EU0Omm8TGCKv$1y1Y!ee{vEm$gudg`{S7rXWiC><|3r
z5B~mK$TQY=pR{X7LW$Jki%jUA_Fgn%nIzW5KOLeGDGHZ~@@ve$`OW&K+S<V%X%Qn_
zw^P0}=5Igqxxbda<2U-g+x?eJvsydrjj5@?1CO|^F9^Tum6MrA6z&oZ&~LxlB$|qS
zZ#7G(JY(MQKE>&txJNpEZ1TjR_FGz#{B%<OC2OZ8;&#-Ta4XwRzs-7#v1oNa$NKL}
zjnL^fR_3FUnabm*KT4)zuKiLrZb<zL?aU}mL$1Ygbe?PU#lNg3#iho*{Fa1MV549%
zO}=gNL|yY2bwk6Kvu{Zh1vW?I$;uZReaSDYwQTXaE?JjF^O5D1wPF{n%g^(XzZes}
zp}F=8x6EE<^`_&KR>T3x8eMvn`!7xF9DY9~mjXk}5VHvT_{2$F{6B$*Nk)2H8Lu09
zyxr4P=lx8mk|i=83lfs6YuOnd{38Ep)u?ZooHHxXwqo7cg_3YV+3k^gPsvFoFp1?G
zbC1Vhxn8VN)oWw@w;#lq)X6vP?EE_GW_kI87y6fxeD>oUzSVE@Y(f;v9^Pi_&WW2|
z5r^KgVONh<^%yjo>89=}xU?{<xQ{hini{R=8C#p=tD9#M>dV-deYX9gS?;G)^ma$Z
zN1(T>^KsQ2rGJl80E5b3U*^l_T-0=3w>;}>R<41O!YU<VI@n+OQF~E=ypDc{I79qG
zWsQf9IT#(SzpISfA$Xp3+}fz)n7BjmmNY?0u-~(YaA-eQLMUT<<Cld;bnZct(y_t!
zpM?RV<t!O5KR?ycwA$|eYRnp2_9K~*yxfsI!?<EXEtmpn_nkAG`iR$vBW-0qu7NJA
zGt+t}lG%mNxGZ4RI&RGt>MiJGAblv5?pW=Z0WCSA%UU*331fqnWVHmWp78hUvwfrv
zop@;ABAog6)%$e+>9y~x_Y;v%DLzskVyfA=p#90yR@^Us+V$z@;#2yb+fai-2Ky7C
zXL|dme(C<_8gWS}Ee8UgB7?0L#d0qc-XHT6DM8ESBY#F7sYPZpyNuth>{{&_Dee=x
zB}Cc3c&*g!)!*}U5%^{9#S_{FhMZr1LYXEU203rZe+qNyG_~ZqC?|xH;;RtEf2rJv
zq|J#N)Uv3Suo^IQ`Vu3#+OAwK`KF5PLR=lOOuk5c%c7}{P4{slR>>H-VW!%&QkVbt
z@Cnl1fnUidT!uvAgymm~Ufqw~kL6;Fi@9#Eqv0-JpnQ{CD;tkX_+FPvq^>;tmu(xf
z^(1%-mB{1gj|dpwNPiF1wa<dS#SnU*oXCceN%x7VW+;}6UEd4Jt@jW7-`GWI^bnF`
zKl`G9XGXHB;(NLJD>F~4yWx4}?ME0o)!Q~CxkY5O&wUrpM(B1AN^_$=cXI8Sd?3?K
zrJeWvVq)g&auA=0clU_O*lt3^)!fvfyo)=t#Pj8%(_3g9sN!N;GE0`AW3m48g?ot}
zJW}0w`DmTj&sd#;r$DLbX})zG=i}PRv?WcQi?1C!4Fl_DCH5@ktsXki{v5K*#5av>
zk83p>N!!U^H?lsiO~~_jp8(TWhn@@XJYhN42w7D7JTcOuTOHl(p<?R5{Z_noVVncI
zw~#UApn%}eRqR{-fz!D#$ELa1nS+K}q&ZpGGufw(Yw?;=+%ZZPV`jYSZM;6#8iK~A
z>1BSG2`)X->zvgubIFCL<5bpn@wfw~P5y?}enYV`&{}X({;Vr=|CS^CUuAJb*5|iG
zbY<-yYqgQnGJ^}Z9NF5ZlNUC(KgA5N$~*KMhcRrq&$=E7n{qWiIoVpDc*6B9JWj@5
zKnbT?vbDUFj5%_|2ZcOP=BM3{6_d=>Or{H;Js<bGXx-iKbHzyLxGd>H`pYj<G}xbh
z%Ww&$KFxS+o`~(Ki)zX?)P2Lh=NP3x$^4+>*Ns8)%f6wRkI#+v<S$FU+^G*`q6;!=
zluv8N{GP7tFq2Z2{Yu8%t%di(;tz36?F)+me}mWVsz0-F6<$_iEylh_<vzOQuG8=%
z@6m-|sFBc!(Ca(1M$t;IVz`A*2Q`dUKey)C|M4ZA7u2xMEvM(^B%L*C&m5J-$>#oD
z`}M1tJxPL+t=6c|hoBL&2uYTot2Z^{r86GW4LH5=mFFS#aP{e!DjI82x}E61uNl9u
z5ML-}*=E2o<>j9~ogQW^segaL%m0z-&kw6T%&hmQwiQoZL*u>&w<yn{;u{&(oXEy2
zz3LX4`+Rfbp*uAfw(Jh3VAPH2QA<N;=e76#kBk?0N1&a)wA+d`r(>q=!7YCS@CY+A
z%EaCn-}=4m7{FZL&gR0I!TA&^F0opYAu0t;GkFFu?^+0*LetsTXws$K1*GGY;%u)I
zC=JhaOG67jph-j(&kQy6F!xMc7Y!!6_kAH(D}TUOMf2Kuu5J6|w?!$O+sH2yv!~1r
zoZ~9lKV~PjgD%DqGVCg=_qC|vSQc&;T-SCTO*P(KJFc;)=JseQrEGLl=6_M2YN^o^
zv#0q^o1WV&dDZLDFNAVY=40jZgqRnvcDjq4&gfAMTu7v9$YY+1aA+DOE6(MPepmH;
zu{cBl{WTg@#!q?lswgI}Iqy@L6UR=a-{QY%RNq0$KbdZ4eWyF4ptPXu+3Fw8C<U7^
zXR~bfhq^);HF&NT&`7yP*|~0G_@1Q95%vu$c+kyH){l!mm>Iq@qB7Scj~>9@rJORY
z)r>0<Yk1!smp;{N<rC|#IV*ai_2GLR`OAYL>Fv-+vU~qWYFUL!?4A3>jLE51+3Xs-
zW=CHcBvmG#?LR7r`IK|u(oJM#bW{{J(#bPeJAG)>ID&$}f7;$nmaNM7b43oHg|1rj
zK1uHCa(aHvtuBh)(ue@#hd-NwT||N|UcTsHj+W4WQ2434t%Hdqq5RyQ=tsk}Wa=vd
znyyB?0Zla)s?X=lKA%P%zy0|lQfnGs$>dJxS?_6Sy^duQMRUt3C*)}s&k9BgTB;#e
z`qC_^6S?QiapbvSj;WMtV+Bzh&k5&yns<I9m0?~S7Q5DHqLb;|ht=;n3RXql(|j#9
zc;#uDC+{C~5G)A&1>Igc$zJVlMU(^s!fy^aT;@!y^>mUUH9MkM@&&rrqXVCR{*=+8
zGg_5^9rJqdCp%)SO6(`Ai}u|x`+*i#7tLAQRLPbps_&<99z;|d1s{Jlw~|h6qHw?K
z?GeSF+rU%&$v$4|N>nzDYBuf{^ypWKR=F6`H6H&B*GRc~`MCa?;i_Jb<%mHx8}z9%
ziz2g<*4rQJJLj$6KPwM#d>q2DyooFOEkMa?d7>O2hFCZ|WyAqP6uQOv80T?$`t0}h
zALD79tj+1!AzJok?2miXJEv{WEznpe(zD(5*i{6aYSD*X<B6W*QixAcrTOU`?(I>)
zb7hh2LON&`jwl!`b(VhRNi~d-zU1iKxV)bS%fs@^4@|2j3WLj8jWbgltFYa~MjmKH
zN#9>%dQ(*L>)O!9<Y;w;$Ok^r1Z^zM*Ent0n54zx1?}HaN6le$aocq>BSMOMA{Nkx
zs`qQ&&XJ2^4H+onCE5$U<@P36YRh3&Yla34dOJ^uo4H#aO$FfxR4ql^L4?p?<Wg+#
zkZIFniH0I?GGi7JexSL=!4{8KNEqX6?k3`bJNpd-eoB7(Ao&LT6!VAkZOkz&vGDZ4
z{N?xNAB?V37ZK<=bi9U%tqP{KynqK20+Na-@IIN_AzIiFvFZ<X6(2L0B)!ZrXr+(5
zxetBd!QTRoClH{av;9itX@f6nIXkp6Uq+Q5IPWGsUQCsJW^*qygQTIY>gJ#7h91iM
zxEte{PmWNvTJSYi?Jv0!H)e^l<6gA0%iVZ-9%O9Rly}Na_HpvB{9QV1wVaD!d<7K-
zv%GAXW_`Af#on4+llLAsGcEAiYt*@&1jOGbikDE|?rHp?`1`lw*A}TF?!#5JfMjm<
zNX-AybdBM0eNDWvlg4V2wy|v|jqQzX+i2LhvDIK3+fEwWwr%U(<o~?iW@mn9aAxN0
z)wy@;WQy8n78|HjS1nh5uTC#*)jrDCx@lTk>3hj-c9CEVi>o_Ze^dU&4@(!dS~R+#
z6*EZJOJw-)GB5Ik91F&<)Y0RB&g=q{@rb}4H%(n^6hvBH$b?%1EeIl<9|wC3K7`}f
zcldrstk&H)vz}I7y(;S-q(fAzJSP+lIs;W6KJdI?WolI=k@fk&<0<ObR;e-4BW)1n
zGy9KKrFjXc_FN*?rgK;O?&F<zs{WOkpQD$E7d^l=#}(znKx|_qvp{(HFLk+sH4EnU
zVa~SiCO6W@F}NBaZ@GLCXVBh>$F&Uwu<=c51J(LwbZ+7Ba+(rB)gs$TGWT3;Zyp7;
zmMl^AM)z~~3X<~kumq@3c@jB?xgzHpW!K?^qD6K42MiXaS~(RA{}hL(r!uK<HQ8dC
zklrPn1H7w?fo{47ChZ)xW9e&Indx%^W`qQ*mpXrMf&Tfm>WLLe(~~uyt@iS&3P_EU
zH_z^lW0k2XKRl~`Pn?Q56`MN1vJjGT-bCh2lG#3GP$F613>dX<lAGr_@rxE2kj(kG
zHG$7lO;8|EIwzrsvjrC!)uP-mMz|rDNw@!({8H9FK`%i<V+9zhg{k)6L~g392d?ka
z-bsHP8M5IC#EYB5#f&ziB!3ih2N%6G=Aum;CQ>_~oc^WJc;SxgG%yh4$d9$0c`@pJ
zD$$VJiv<?TH!rp^JcdSh*mCJ%ygj|@hkMG!OBX7OJ>y!7GP_h5ryuq<(y|y97bku(
zsvNlxe_+)f6vftS!h;0A^EWtx6q1JYKd8yc$AY9whGl!f=mC)1_52tIYQH%|aOs7T
zJ;P=4v^Pa5!1Ti*mo(1>zZ0u`h+boVArfIija6YO;7AqZXZ<%XLJx!&iNdo{y{>3m
z5N?r?!Dq*;^HI81O9ea7Zp*yDZ$}Zq6PsO6sw-UeKUerSn`*#%_CbMB8>X+(%r{fR
z0vg#cv=BVWL9AxaQOpWgnX*+An((B6SKLtivRMWAP|T+J)Lf#|#`Z?=R{VqcbC`;5
zY@Vh<?>_R*D1-BT6O*i4EEk3VG4{Rw7WxW9Jf5cCeD0#1$kylk|DLLUbVu2p?|0oL
zrXX{Vcjg|UD;s^kc4MC(RQdz3d=wAWAe|W8uWmQY4RF+2nf%2UwMc);4s{#9p9;Fg
zdN*bn^fuzyJNmNX9CcQz%A&+%+-F(ARMDazHf^(nAUQcxo0CFP-IJvEIc>5Xtu|3{
zQr^eMGY@cQ&DToT{*+wlr~7kS(tl2ChQLBTIOTHeP+Th9GO)ZDHxRwc9LrSq{0t%)
z4`5SgcCo3NFGN^`Jy5G0p8ylfYOHA!FS~RTYEto*(qqAQ0LFnqN*#i<9rxW&c*6SM
z4F{h&I0pv8B|E}K9F?E20_bWKxYs0<9YuVj1Ho1tlb>*mx4u698Z2P(6LODCc^2C=
zTs)T@rBMMzjAYLH)d2Yv<#-+yww)QYI$ecI6Xgw}3lYLeTP1H5nQ~1%d!J}bs<QKL
zXL<(581?f00PQR$$I9(NRD0a2n%2JIo>&~Qf24dGPV~&!j)sI(bP7=|ODT=XX`S-+
zHv_6SEX>$fnw9eQL1u%5`n#83yI9T78U#$}cJGXHHt~p9hC@=qA9mFLHkd$<j&u+A
zJd@EXYbgl>O^kO9d`hvX%D$ywW+gW!uT=(xS!Tz2jDR3rAV}`hwW}cr@&tlxJUzV{
zfoRMmyXb^K5epMlQkB2k16d-(3yyRXch)^4EV0xHHHqDXOarwR0g|cD&0k{W&fUt^
zPKY47x|vF#@Z>hVFIYYkCU$-uccYWuXT}Z;F@}X=$=r%tjD+0K$94M@x#yH%gD&6(
zXnM}M`0`hk9y~C_od_y=@4VY2K+rAu4y2GTV$lf+#9o7p-jhnXZ~n?N{6y-;Lq9~z
z3)R)#BIn<CwQF+h{+V$11(hdLtR8p@wxPd@-MQt?W^$_k&i>4kxwI8*{RzZ|>D+46
z)n8_NXGbr6W|p&|eqw4&RHVE%AF7&5Z!R#Ou_SDDXum2%EX<hnLg?Ml4}ywZ0^eEh
zvJOru1RR>~cg<LM|Ls?XD`fWZr1X@-?>V-7^72*F#&8V}zT+tnGBqm>4y+iAc@<et
zfA*?~wV%Nk5_-M<l*fy!#eHrN8}4L-{YdQgYFM~qP+@_zo*fyrIEUep1NNn6BXsFV
zu$;*+fGux5_;6eb5hNUE1@!ru=z4?1jGUTQ8&Sa`mH`fG0La#=PqDMI(|`ejND)ga
zX1tRiKj<{mVaqMCyZOyq30eMKFV{Ony{shQLS|2K?VG#IpZV-OvD<(&4@)1PQW0j(
z!@#!29s`mr19&JtJm(({=KPicOf0|GMv9`JV19^0=3Tr%fbU}Jy9bcc{MInm(KgUQ
zO{8vY#3iw$`lT!?A@WUB8%SFNm^(<i)tc;iyw)jATA=$RSrwfi_0_oeV(;?V6j*6<
zl}cbAnbnr93l3zj3#h~P7rI{cUNNEYB-)Up&KE-~{jLR6RS(rZYQ=PyjZTruqH(Je
zS}Uz!=VNG~TaH>p@|=SRIJ(!iz&xf!K`fiv!Z^}DbJepeUFQFec54CyJy$gh@zk|?
z(6O$OH+}cBb>wF!>shuUxMwu6Q?-NP)Ilx$7VXHrUf~2D2~&(BEwD2oZP818{V|lK
z;l!E6n&x{^v}lg9q6R8v;W%8Nf*TGW<|zLdnJ@_<^h$`mu{G1RX<O}!H?QMQ-zTP-
z82G|J?I*3hkFqG=N$gLS%_wqS*fTb2kphRAmrAc}b(#hHd5Zu3E@@#4`t9DdtJM}X
zwkrSGA|G7M5Oyw*Qkqc|%SNIiXLr)G842M4(mKp0tiGQYI#3=>Y4tJ-Y~f&A!#R*I
zzBTC=yIlDG{D_vDe7W47AWXF5hW-KJ=E&5m&@&hv4-Kt(i~AvRM$>Nul&chS-^^6C
z-jU6&Zm->eEZ{(XzGdS%LzesHo;kql6rPS}*fjIm-6JWBCn!kl7xSyQ%}DA<5RCKl
zfdjb*2R7mK1+Z^^VyodiJBr`BuNVnrv@a_PlNj1zLy*8XRRwFH@m)lFHlXq$5~{Y;
zG1{>2#Pz*wElTcq*EFz_y{$mU^LI<`wh`*i{(T(P?7>4Y0?OgNl8Z^7>BqoWdX3e+
zt^lrAjN-X-=y$`W3nh+I05>iB-Yga8@{yf);Xl6i`oQ;r)jqw|IPXfwuIKDgKQt^j
zx*+eqgNDm}^+-N6Obnr;f4Dv(Nn7%-Yb%)fl?9Knn&l&|lZqRp4<T)NS;@eEF}vGx
z)A96YwM$xAj(%{okELxte2@Mn*8CCkceV6u!wvgBTwmxqKB9jgs3n)Z4^;H)Q>W91
zGZVCNVIS~bZy&XfP|;s*JX}6JJ~zI*vIpf%-9~SBz)&GzElY8bBIcs~#fVGc7t;<y
zr0DFXrlWeKE2){$S+Hw;iT2H0as-~Y;=x;sQ0G#14BlJR%QPC<%<e<+s-I%zu%@3l
zroHEs(vq@}kY(+OxVXDKRbpy$p-Iu7LgfMaSR~+f?^y1>Z7ila1!ifdv+!~F2DK*C
zTHZ#6#{)&Jj{ii<dC`KG;Ls#w5DATBo<g$Z+K+fPEfNLl1o$cPap^4Yf@j+wk(ew~
zGd~Ust$=)Pp;Xoh(Wc)FD4%}HD7!jd8`KSd*7>8MgX%b+iFtvBxwhIwv~-F}uYlU#
zYf<+E$2_6L93vuO2AR)_30C+g9v<Q)^Y%e=Ew$bF8q9SF|4jqMMZbBtW)hJ!VSt58
zDZE7-i*8C$a%!o_e8R}E5CXe^23<QBSDRVy0J9@(^-vXlVmQ(wUesKRK9yBrxP{u?
z#;X7*!;fd75vYnHiTrs<AIE3IcRd5Mo2I^LQnhWW4O+7JEK89|y0~SD<9x7Dusm<?
zpi}}(ZWn^?On@46wya!GJv(2=xI0BTQ|5Ke=%!tC=LJ`)k;*?hx;JN#6EBJI>Qbp*
zBaWxMdr20`r6p`m$@`)$gdc4)ngDQZ3JZ3s5bqE~APL9yL)+3;&tdwWuXB0IRVzqj
zvHS_=Er)SmL^8;|I{soTYah{|H8FM{Y;_rWB&er7KgCbmF8uewHS(U|EfU^2y<q+<
z*J=_2=d-#c=!YohYSPzh{^O8+NxcDM0Y|}f<1GmmHE=qV(}rKJ-<r_u8plnXNZCJF
zc-VhiGR_jdl6W#cS<|~G?Ij4z2bAiD^xx~i1#16-<(-dwXF-gm63724gVe%y42QZ4
z%WXunbN`H*{2OT^!EY$Yx)h0eTnmn7%u;HY5D>wlMiuebT<p$9T6v7WX7?Y)V_=Hn
zX(BT^C(6REWxH`yC)+9)B%4lJ`HS{r>c#9y0MhKPrLQ8}STu-^oCaaU$D<f}&xk5t
zpQ$seE^Zks7#F=xe2;EtGcKOQtlFI)qADZS_@yA9^z(bPfpd5y9#hZ#+eCSc%M@+v
zI@L7MW{92c*rqkGI)ZP{ZQ?}vF>uRy@tHznmmb5nTE{e8MOlcvQck@H`o}bqtfV4i
zOy#1dAtf{iBo?KT1tN0H^~OH82^aEz9~C5_f_o&^^8Hf1?WKt+YCLx1UD6YN!Z9UG
z?|LOPWFOyHxXYmAMB4!_zt^G>%tnAy7`3MQHuPsi>~O%rt3M^O-`SHJa;o|Z%^qBJ
z=PnNbqLQ+IL+NP#)&E*;s|toub)9cYl`Ti@C$!7#5Sz@6i=5%Uj59;<s9cby3N31m
zs1d11HaS$&Yl>K_BR4UwVKHaizE}*4WUcxVUTBMBs1v4U5&%{ReG{)rH#Jq_gyu?r
zU$RJ(nh?mGW7|;zOQy-~u3VhYw55o9?eTbEn!XA&UQfcdHt(%EZqa+#EboZdl}c%O
z0k*GZPWiwZrA%g}nqlJ($;R-jLoehgxWrV(&t8yUE!9#l(lI4|=YBN`D!ju#`EE#A
zza^LG`*bw}f?%v(kQZNVT!5J{eao?|?(9<QJNYi`W38&~<zB6A)L#zzudwM`5($1@
zq?y~?hi~rxt(%6)pP_CEG8OKv1NepjRCXwB$}$HE$~pDQ;HhRywWZ=8JcL=s8_!f=
zpIoBD|No?2xe*pB(;`y(W^XOhGj$t`en8+DD(cz1n5<RZB3yOfu15Q;uclt)Xw$A{
zL>T+HPUPs&u4b$-fc|)@^!F!gK=)|m$rLS|Mpojb?(IP$q&07Or^-8L(a-hBMmW5l
zrqSxPCT1_OH4w`-X3FI0bpl<ZMMRdn%vlq3(u~DvT}k#r1;X{4OI>T+LcGhCN`!6;
z#y4plH0Hd>bp_vLE5ed<U~{Fv&&$ZPlakHXn@DAjs2;vU&(WGM+FF*`K)n;ZVwU#{
zKuxsfRC@ZfnJT$@5;Ne;U$d*xp%P8BnimZtH;XJAiE%bFdtaU!xA5mvyOOg$vUfv^
z9wW0Q0q+i;aw%4zfQ0ET=NXJJIX#-&H3{_3Ul3?lzXMOk?f;GpqwT#*EgOk<K+;6w
z^8{570U4N)#Ix&)3yo@-AX99-sfS)0yr)>5>b7o+tN>)!--FtpB$+dgOqkVIeLW`Q
zsBg@W4p@pNhtSGbDINVpRq86Ez^!bD_418bg+vd8-;}Y*eQ(|@tdtU%Y`gq1B~uj+
zBBTizjaR-Y4tW+@^F0WTwh8B*y6i}LNUOX3nht;$G470y3=!ugIeoy9R(Jn3J%|^5
zWH>n5t#yPg6Q(~nDV$e!&3OcGwm@t(4K)|u%4mG@O|jf6d2M$9cKew3$KkQ<6;Uu&
zd8NYHE%mpbA4FQ~Ie3j*WMq>O&_S2M_)fp<=HU$5>;ez}Cdu!&&G;rO+u<eQny232
zqi|kSszw=G!7=}j!;71OlO8AdPccnCxIOaHK(Nn+OQ#(3m>P-j_|E4d2_rb*4^E%H
z-yA!iF$oQ6Y&7FJns~#~dIm){ofY2{XZKiIxu#fHLi=_&d3=g_G@9tuNtQ+Zs@TlB
zq6(+c(kn{f#@EVUpak`6I>TkB_8|iK!3pfU^PFLAlyLameVOQ7;3UYmp@n`C>S;XO
ze3d~bv?;Us&!rk=%KgITrP^u1w=40)N>MY{QBi!=N^6l_Cqea}DgP|7`5MLfKO}(Y
zz;2@2I*HEbNzEi(RoUWy$_;?hx=Hm4^O@oc+A`Sosgk+dxAaGujw8<i0afisk5p|V
z8me8nS@BI&Lu_0}TO`OT4{jg&%J7KBdT4O<l;6|=pgun>{VAYo;A#*ELbtMhE|amp
zHH3X!{rY?6Zp62jj_G=Cw{A1(^L4A>SIgPvXBkLu+t2+P?rOe%*=I=L>Yxv{#({*5
zp~FUkiP{H}`Ql|Scf)T(Ekcg6{92N77OVKviL0q&JC#YGcR{Yn78o*&R$XZsve__-
zbGc_-?x7DRRzuFyjK&^a4hdBsghoyraY3l^lo(g5u7=feUV|S`ovwT;Ej6iD?G3AK
zWU<6<s#W}?5e|~ihSj>WSaSR5nuD2H6QtF`tCrB_CF#-(w7`rndazkymI5??RNo${
zk#-y)btS2m;PUr_9+{jpudxWobWyM>Y+yHp8endcw5c@*APuJ;aZva0$5Kf4Tz(Iu
z9o!sphLE()HC^VWF^6f$(=Op*5I2rj#weOCiiq~okW6uDn!s}2C1_qHT$EzQTk8NK
zCo3dLsrGu~_-aTlcnB>pQPm8Os>^AaLvL*pd!Kk~1PGrOs3eTu@)dS|lQ-7ApBx3U
z%&D9B3%$js;X?Req#dJirMm&_7<s|#34Bjcv%z^vhjX8<WP^RfPwQNWuFX4O>WNsC
zu<Nm!4K~=z!vt0tM2g7&`E^vNeu6(^{QZ1&nP2+y=!3W4nnAcSXuG($HY(*`Z+((J
zPVAzC*kbL=aiX|5I@D2`lE7e#`Yc4T=wo*jFN~eJD)&b>D1o;KsiNP-`1vXA3!$%`
zopN|FdqhUS&WJc3^-qbign<axKk@-g!!?CUVw3WT?UQw*JF-ORtV|}i<{g^yw$%7?
z`Q})06h8{`xxKCK7Sh?7unNvpnY_4c-^xJwm(w+HTx>mZrnK3~ET6K(#EUy8)evbI
zy;nxX%ZJN1>vTO@;qzax<um=W2FK+lang$4wGB|SzJvBW3uWL8^W3#HGZp{*BaL%X
z^SEakjnx`*VKzyu3aiBXk#OWtrrc|cwoE`xl1{4eytRWE4CTs|4coKNCewH@`em2s
zn&vKHg=dI@=xK!i;xC;ZJLu4$&*!Q<{1q>0w&nAj>l@GGl%2~}f7_E>z>8^hn%M11
zdvmf4e6zdJn)eYp3`{=jng3C<Z8<lm{|ZmlSzD-nT<QlQa(eG`ysO^!6s$T-ZQPqx
z&(dBhJ>G)Wifoc&D-ab1PIJm~5a&B&(6^JtgFnS0ts8%-5irf{r7T{_NB^As`!(WL
z3?;VI`HDK?YlEthdGrZHioh`ah=3duW!(U^Xe_^Nlz?39yk{JDt{oDd0#gL+(k9|a
zvn3&VY&k02QNs0U$9SBy0N4OF`>x7k3tdICH)_ZZmL9(%ppy!w@y8dVuk1pma_eaJ
zzke<lukGOge+5L4Y_t=paEg2}B6$;e39F~y{3=|e2HFkBiwc7)zmOc3avaG)Q%LYL
zfn_NxZp;@wW9j=#qKWDaKva0CE#C<Spsu#cz^!}d4Glc=NJ=5mP5t5KusEc;byK&`
zL(8Ibied)HNkahMPBU8mFt1BnFo3ceHdte`)_CdGoy#a#&|vWpIy{A+#Q$=yL`%*6
z!sbeqcofP$Gl+jhWDhiOH`$QE<aT&KI8~;JW@;&H`uBWpl3jHaiS%5^_58R#m;ql~
z_JiNM+72jGT1<Gd!ej?Dm`zv`WLA+KB6rGPRQ^(;W=Wbu2^I&9-8_GiZnJ~<$dF&)
z?}-(|?KpT=K$&#G@V84@RF6l#s3BStEIYP7+U-}STKg?tV1EsFr!Y&8q3*X&f8t+A
z2=fNcd_4TWlAgt%f0ZZ>NdyxxSV?LyW`)=>rRbZpq#S7{eORgsZdp?`^%2HXZ8Isi
zu9MHVUM^S*wsRm{YZ31oFW6v6FV3CgGcg;s!x??Lq-Ms^VEhssN7X!RG6WmWryho|
z;Sk09^5<8^<G;ZNmONK=?wimA$Axk5k>hD{)zN_-wxusMsV)Ma8jt?IrR%eaz2;lj
zeD8ZWJRR-&`baX;*mN2N{Z1?t{Os7(lf?2iXpM3~E;Mq4WC-W0bg;SK^#MIWuo-zJ
z(nYpZD2Fxrs><QKVNuJcYy>`|KxIBS{*UFMNv>#f$~JOAc<XwR0G!qx7Wd?~*xF7p
zl&-ckJ}#)(xv7SAdWkR6D(!VT6UXC4Hpf2;?5GEQIPntT<WbPVr0_>oqK2teI!{4N
z`~Y|F<mbYv+Wvf!PJLPy9yVffRg3LNkr1YdWYjG?FS)w6=GLu-VV&+Gzl=0Jj(VKk
zq)@#}3kA~mVb6^iVHyUSP?BE^{Jv{VgW%n<{Qj_4rCa%qAohXyF9td7xl+@g`tAp~
zKaxYV)k+LNG>pCtwb<7t`C8Six;=~LOX1~TJd<{Kg2N;df*t;z2@A>!L-0r9xqVo!
zgaNBwcMt4VHbjM-_{%annI=A}r~ctNm>apDBKGeL!QvZEXQw6YU4C7J*Xg9UcB^sz
z1ntM>^W&^|TKu{yviX_gc`Na$(y>C?Ez@SV!i%6u)be+KiH(*EOZxX^#=q+b9{J}z
zuC_5GdD-LI){_rBu`C!EP5#lnqQnw>f;mHqSLZ$?l;jjnMQXKb-z8WCa}elG;?N~L
z;NVxbbd#vRN>B;r9BF->gpr^Ev8LwL!edB&XO9O>Uwnxov4#vPD|jTBViE0f%17!c
z_$q-am_yBDJm5$Y`i;X$n_E>d7TI5jy<$qTpwJ=kU{yNIERf`ec;4`Yh9zDxxe2wq
zn=*mLTF6kW|3+W8b=hSCwi_x~HPIOstyZ##0X21T@Z`%TB$Dg|WecM#hcq?tjG+p~
zl_Rm`6Ag#Vady=52H+C1VjcS5@P0Qz6shee1iH<+A8;T94>(Oj#l=Gx&iXOl5lDk}
zWpX0-mx5vyPoNeCNR^spd*w{9T}Zc6?XBDTWa_)D_U^}-EJ$V9Y<szTRlnE-GOZaP
zz(;$Hp@!>aM^>Ah1(LuS!`Qejd|*CHkj*y?{!OCbB-yE0pyxi-!ecnvb`q8(1=`66
z0_Dg&4kpxYu%jJtz?URqF<lU&6DuDiTk!13C6>!2pQpc}v{p3n*J7;%6WlGYYGtq`
zh#$Z6bIRa-yTg_#0B?C=d@G`l)SKwB(0AtNPsB7YqTFj@>F$<)Z!P%{FiT0&+SaOH
z;oz!kai0PXb`F0mxYY4}?yYDgA4&u|$#GxzI&cU7Q?<w+3HuJ+s;{3`vM|1i3?hz*
zcC-54353B`Qi$x;z=ramh*t<JviP9D1^<w&x(9f0>@F*Eh^!~@LnQ8{{38Ecmwlw6
z+VNXM$}|{LM33$+7iU4$v~miAaeOScv2q0Nr5yIeZ?f<O*10DTM;V8ok`7e@_5<^q
z*|cFSqmeL=<9z@`6wOu}F4W5AuCL}z=`ONu>J+DiWAb=2Sh|%vBo-7e(ehyRwnvV^
z++U@3amd!oRu`p~!BVcU<iYOT@7f0lesj8lVcK<V+`iy`Iyp=Tgy&$>bR=*Uh`>wF
z6k!4l6GeIj9`eP5#=jn?V0Og&IQB}`+)I}Yt@RFb{(wlg*f)2tvJ#8MA{)t5BG@}G
z&JUDe=Cd6td=8`3pNxny<H*!yC6!LyfMXS_7_T7F(4Ryc(6#@JfaGX0bCZ)WY(W$t
zSr#A4A}NU}+C05=bZxCoTEz3BSU%UhLemj8Sg1-Rk<XOU+mJOmB(1U!`p~uot+gTE
zTdC_DJDl)7K`t&`^Bwr`o=c5ILM$G!hNQ>RVaKU<vv#>psfQQK$l)?i`Ov4wRHOW3
zhIGY&+Cv{-mvt6PB3*5_1SNqtm$5x7Ey!^(Z0Z4h=RBdJ{j5d8Z*#BJTWdFsYeioY
zeh9MUde<hX`r~3sS29%uDc&ei&_*8L!e8Qiscb;w&5vWStL<6k2<ZX6%qD?K+7v1s
zFUCFl+SN7|GNNmBa5NzAsLxMnJ-lm`VHAS2Z_7Qr6FaCjO^2gru;;64vPVlPrp+-O
z&uiz;-R9Ks-_R&osG$YdnBZFB``BzmaStkOLVimbe6zdMM-P}Fn!Dw;9o_6u=Ud0g
z!PNHej8sE+9KTO{?7*TC<*)5UYOr=|d^g8tz}@lgNFE2vii}iY6t!_+)W{{L4{7=5
z^~HzMw9tZ0Oz`D`?`3Nf7%d=`o>!G4sWLt{WuMmxv6J<xm6LTFsUaKQ_^#Vb-xVDk
z)-C)hm<KuaDC}r83%n|FcJ{W+N076Hg_Dp#o5;j<#pb7fa$&oo$6NTxs3YMwrl3}W
z@$%{&r8xN4hpDNtiI`36k<)~BWchn}Rblxa7W^|SnI%{2!ATjV{wnCYXDXqfdN~^f
zN4*Yz5mH#ULo7Ii=_O)li1n9mr!(f&KHWC*UlL~?mM(4Vp~)1&dkTv3+TCIB#*ZWU
zN%%G6^X4|Su1XQ_aR^Ozn)WTTYaU<CM<ZPNLSt?AvTlEx6ba{#i;Tnf-ggaCFI&RG
zA|8PyX4j;U<ciQJ6?Z%3Fd6?M?aKs*I#q4f%=!M(pyzASq2rlUY$EJ~^~fx4P9~Y8
z^Y*lRCdYy<V+z>{A?@K*UsWU-q?5-OXxW8Pqch3NIvWC0=IATJ?99GD?e@12rA<J|
zP<Q)h%BPJXrNZGZO8Kd;UOy*q4yxe{n0|~ehKXZdJFRD?TF<@t%$|M85Z*wzFXQ;x
z5e6qIxWssTFzFQ_Apf(?u;C)dhEM=~p(Oe9(0-D}-6TFF-AvV_XVaW-J!kQ#+tC#Y
ztFZ|ye9Dj8J(K<7L~+Dk{@>sjRr3g}MwKo&-Gp(7)At2GlW=Ymjk4?7P7Zr3fFuyk
z8*b=nS3C2pJq}eS^wVt<Q0T{V7~lV58BB0Iu?E2&cB`z--de(=PVYM`;@HW+UBGIm
zjkBOP6fg+RAg8OLXelLUe}A1K@wbFWpPndzT3afo{2@gD=GH6mKHg${P8I#+T_aWT
zT||Yh5)EZS&g><x<lz0>?t&2upL-5!8(cv7gdC&^Pb+eRC$+IL+%?tWP~06NRfXX1
zrFK+a?u@6_=AQ1xXd1;_WhpR42p3H+ty-5Bq;ML!H{YWa8kgf;d)s)>jmT(*$D*jF
zhl;&q<m*s{5&BFjOR)7KqY-}rrsF57`wRYH^}vjwK|Ha3Gr334UZb_I6se<GbjP+E
ze)Q{~qiQC}lC`9B*ne3^C@(TsuLP#zt~5<ao9HO$aXyKYCQh@{BzK%~VpVikkXX%W
z6dq0dO@P<_OSzOMZ;9!Vl5p9`i;^_<%d9C~C$Q4(fEM$bN;}!_s$DBqxO_4QuHkTM
z=;tz+Iu(gNIGyc9|EE?-Y%;yt(1)}SF`(Gt!ezYJNgsT+RjrNsV=Pji+8I)_<lIdJ
zE<@6eXm1CHp|jj%^phhY{jfCfX}O$pUVA{rbZ5B}r(4A#WoBh+RgumyceTlVlE{!M
zYX!w*lr$RC5zRWj@LG|UjV{OEXKZ0fR;N`a2W7~7*JGvy46wYn*kb|Cyj&AGZedhI
zJH1*-zpIAdc+EXB9dPBU8Ia;&X?_%C;c2khHp@z-?4d3u$b7)uJm}n3?`p<CSU#w=
z?&;}DYm_gqO2zCQzv{MOK3!9;ulqzC4(~Rd+rCTlcS9#~1js+#3$bghH19PiY`uJU
z;!!yQ<ectp#VbFyxhjlQ_j4?TmA65pF8EBXg8y%@rn~AcgR0@#LJz3P64;_k@{mn%
z)ahTubtL7((dX&GtiTpt#+g78uXrHyO+gMf#f$^!>O3FA{HFbgs<p(()N!u)&x$@P
zK~wLN*-?_9v5<LU^3+FHA~F-EU{VUz!q(>0pb}9%ZV5M%9Z4lj{Kq3jB+Y|$qG(z#
z$_<85^&>jvo_qv<tV816o><9}1fRClD_l+o{R26RMF!#eI>BKqV&+wGJ~|ED&=&tR
zsrr*s0^(w9135~Gi$}`eK%y$n?$q^ZiRfEy{O)F_>)v)pkCbgh*S8HwDSsu>$kiQq
z2u-xzq0P60f~^De#6H|vNT94FOkE+Qt<0;O4flqwb_iF`pLONITuQYk!4{8KdK(_7
z?|npe!K|HyaUopZ80#a+18Z+U{IM`N7)j2~*mY$IMYj&$@x<-7?K-8JmmK`j3Nj97
zrqk;)nsd60xA3&l(2+C}*$NU46(LOBH+)mB0WW*bD(Oqs`?j7B2XsRD&U#Yi9H4XJ
zt!jFQD6yb`ibB1o<$lch+lWHyITIq>?_mvm({F1AI7*Iw#n^}&>d7!ru%pUva_Mzz
zksvkwJs5p)cf`?Gv_3tU{544la0S986p(77*oTR9rnYC@Y;uiG$1=l;u)5g`ngY<%
zxzrg?I@L-VNliaX_BSyd{in}uH`6af*KSg3^lLnJz9E>L#6TIGY{ovDZcq~2C(dbc
zbvCg?iJ(C6^GT`wL`a~dsFNozj-|r@oRP!d(@Att@PI1{wbR-Tjjo-0Ci?|$??h0#
zWE0~1HQo?b;pzI4B(m1Bjy@ui7^Qq#xiCpc7oe!0yYJ<GpZTzgfr(%@>V_}66fiwM
z*V6T6><+h|_0AdrQXn1~Zk{LM$E*)bJRi)im##Z_r9_lXwAC}0fZX(2dB(9DgDwml
zx-dq|l1H|)lyj1(n9W}HfTEZClyAkcb4g4Y*OgV=Jw*OZ3p57@eAW&~Fh{W@^zn@^
zN0Ba|xhjmG2?M586vTtPl3N;nIzY7aS0X<kgUsqoQ*r>$VVTYxJj4k1SEBqwGzSL6
zTDMFfp-*T@L4X*g{n|>!QOnePaf^vOODmy6rA=9HBU?$qkuYgzNb|3({4IKE?3X(4
zw>s|^-(_$3d!L?kTSxF59;#_r$F32$_$pr$8-m&ESaew9eQ0CUk2D<=S+4eVHjxb=
z7`x2rYJQ|?XKVDpCu)`rWMXM_jd%Y`vA+^^a}&9@OU0<fr6R7`-<H{rG8&Y_eIT%m
z9iYs+{C4{+x(C2a*O0)O5C~!)+Qu-rIJt5M#?c_i)<VwEqs$)%mV3vx02Z;m5$CbR
zJXGu~@^_$I2Rpea2Bdo4M4E>`LUFM0O<9PV6$05_r6%IBi&E(<Oh{T_KkG}eb$~C7
zw~Kk=_-LW!D8=z%k^)i5OQA+pVjPwL87ELK^TJi*{8*Pjg+0LKGsXY}V5CdhyK~mp
z7_utGVh?UOMH6v#r|M-$X|Wr6!W<QVGQ+y!;rY>(l1qxXHe4Fqr0#{!*iLyBjwSH2
zrDh^;J9ZUOl9!61mdd)PADK~Vd)##{DF9hECz{`>`lt<_^XPNeiZT#y;HeUz1~Oc-
z$G61J>r&GDj%#PgEBU|~aj0*l8ak_zmE%dIr28_s#D3IoP1H%%c;_Nj=#bGQMwaPE
zlTT*<SVf7NQIXIh>xQ78aq%bZEQ~$w@gC&@NRis7I1N?MH~&|cN3owcCh&FnN$qov
zCrzNfyvVwNy4TpYv>fyXgg1U0o(XL{!DG?aw}z{D$^)Ot$|lOtp&uFcrex#*v=YqO
z_TbL6sT*I1rIasT(5u;HZ*k4C|90Z8z7)sBHb@t>z}aklEOGRpqbs?H%31}qB#8?`
zgN`eMs`u&*DQ^j2kAYXbVX)7M@Y2Lz-Diq_uVC!l@6*VjRBBN$7ZB2|e^mN|i)XuQ
z&8x(wkh@)>V}ue7{OsN)3Ir?i9FK$+)ggYqD`#JkUa4THJ7P8U)7#c<obBb8WTfXe
zqPr|)(n-To3rFZ2Ba3+gOO-U{{cUS0VP>(TG!nXaCd{y5yN?DF;oPNjuBZc<XgpcG
z%m+=;?BG*Q(x)}!z>|dZJYzI$F0AtewI4~K^~Ipb@{R*AL}H&p!F4<ZDh<#=*kBw|
zIco0+p2D&g2X=(PPA)%ik6I7S0cZxnY5;(eh>uy1NAOS@n(!bEMG(32UI2WQ+CbXV
z_jS$kidsoDY{@gHT(Gq$Q5TsCz7ypqhp|d7($JwiuaIEo3_S_Eq91&<ntlPb5@<;S
zgB0zjA1Oy`s!+u4JB%fvi&G)aq;>Qs)mI2zZ6V25Od|0QV<`)vnY>5s1-;}Gx>AuW
z7Ux>D7%x(qdXkco(b_%L3$zR9yFR<MyZ;bjHDX<7A(3t11T{(g<bCttXF;w?jdHaR
z^gqw7Lxx1K`Ng33DgMBSVk6#_eL<`gOh?S0#p5S`(1goTW+~XJhu$gn@ges%yO6ED
z(<M_Ae2mvkqN<_PZRofrlBUo(*eL^T54iOIg|>~I5ro?Vg)Qkv@*RRXjG8!1Q=3_G
zR~ci=^zSxP%xbo>nHeN-yDK7&{Ivk}%VOfmlrFfaW|>8G=`og#<qRrS4Bd1#BC`&K
zfiua-x>#0^L<mc%IW%RD093MI65Gce)xy_!MNxGPPKG;SU~_fBTHahmkd`}=*-q1f
zq<m3=T>xX4C1x*$Y_-$VO9?KKBnpsSPgS!1%Wy2isug8%4>(m#>^Mf}K88c80dflw
z*TL{XTBG@{#?7=&jl8q~EUCiZZLKnM9E=gRI|;oUy~cEXd6ru=B4ZF4t1mx|?Yz_{
z)aivPoU?zxcY}lwgzphnw$jIIm}6&(%yck}u|Pxd*RE2-nqW(>G0{EKduAkOEj%d{
z{<2AYU9X`oK55-Kp`-JDvdNjDd<YV`_pUs{@uEp~UGJVfx@_o3=x0F8#@0SrOBqHz
zlSza$maACkg&~DPpayL|YK^sq^L++a&%SvECMNBg*+#AcMMAvl4-qOSaD5DorJXxu
zrG*-T(AnGB`i1hvnw6}FVj{!34EC8iEh&-Eh%A$5h(htQJSVQ0V8sC%PGs#;)^B4;
z%tz*5<j8tPpq4mbcQqDZgUI;P02-X>hW)pi^}DlwJde22WKMg(ZkMVJ?ev~d9|h18
z#q%0gIqM^YB+Gx7TCp9$LSxLik92zoqopwrTHxqs2%u##5PE29T7;}S{{@$?8x@kp
zp)ELk=fp?BuM9T?qW9&C*eFkW58#DDCcj%rsK}~)=8A7)Mq%4>g31vtWP8}b1hIxx
zo$7H(qoLsQ6T)hGmk3X8#e|1aPNmND)yu}m1CQ$ZKJhV;Czn2I9@iROryp*hb@FOQ
z_sJGu>l*VIsxzL+9Nff{uxJ%bBJf1|{*A@M?p9ehKJy;;sUV;a(cOdX-6=EUpU1o#
z=l#;zuuOacgWp`TDH5fpb((w|09UjJu!0ySj#nIzkdVGQU$C&za>GzHwLE465s<T|
zlGijK;#!44>H?XqVc7}3FydDO=rg1<+n<8O)CvA6tZ)cy#HhS5hJd~b+Lc>acNV--
zi7DNUB-tvIOOjh`lFN0x0~;)+sU{bgwFM${A<o=;?I62z8AS$;@!d~a0i(#r&`(~K
z4uU$K^vZhGj@C1mi=H{)+<dp{HXp3oD>A;l>N}wxm0PuZ9j{xRzYTx(?$9n5JaaY&
z?{}RL_&@`-Vs-1W7h3Oxpj3P`j=7ufbpB=+u+mm`owj0AQPk(-4$gyw1<qOj4q8AO
zI(maWJucquq&f2YV3dPE7216+t$Ve124LKJ&_loB3s`*OrKPwvc$Rnf?uEK{bj_{$
zRxu)K^oC*{;m{;4TlA->B9`N%z=ObvBDsW2BzG#$5FRQ{B<I@L7}C-Tu~6|-`!+jF
z)`t?ctU@DcZ=IH+)`v`}FnfX%PcLVLTc(50C2^8HCt&z2gn!MNO~>GZSifnHCxmSI
zEDQxbt@FJUfpb(Wcw6OCHDPuc8l;m4#v3f-L8u~+<THhmXU^fgt81fZ(7!OefruOi
zri>6j!tO$t6F|3PwPwH0o8?~*Jv))3DN)Vv@5$^TBjPO-2`Qz%X!boSS9917lFSt$
zQJFh1B8GHPQ&7w~h7AQ|SA1#f6mXAk^+o@Tu?tQ^L2>tJapa%PfUPemC^5W3gAEJs
z_zepqUMbk4^DD)04?td??x-o@lb}Qh;m&iY3zVQd&v>pE=)c@Q+wG6o!<RM|M93Zl
z-Y_Y^^XJbPw$~Kx$W~$Cf)|3(mqNT{=&)h*9`Qi2;96+G3*qR?*KsXM*f4&Ncy@K*
zEu^5tm{vHNK|Yp9;qQ<`5rcd|lVXA$@nF_H)7pb<AgT&SEFbGDGkwR}rd;@H86R}Q
z!OvCYw?FxqZC_F<8%z6mUX(l*HcEcH=o$(MdIa>whoecz@Uj#DS^ocMe&ccSz2Si_
zA;Ml%PnG9p^i2J0+vigN4L9X0V8gL4yuq;Yxai)HHu7jD5ll*4T$8#v#AzccNK5m|
zqpoO-0HLuC%iYPMmmpkSlWuMpfQ53o5kH9I`84nYuT(>L07+7#^)bd(DREn)&JI4(
zdUy2?9hTMZ6mD+iwJ-m_ZJ<_f5j8-3%Ky>}M%2JuH#o3{p~B)516p;a-nS7X+9Rll
zKrtypCQm+SQ3D_Nz#x{wq{&4pIJiO2BH(IjVhQm^%$?cU>1-Ltk+|D7uTA*0hE`Qn
zpxElfQffP-sDXq-O|2q0T@Hx{#EFf=^xn_4%qh>y$>t$u#A2(;B^Rg(IwDV8*T~|8
zS;C>#^pIA)h3R1Plgi~h_xYhrADi%+TY!rT&+*P;V~w|l=l*r99NH3XDR1I1Hi~D^
zGn)bkn^*5PPu;}J#{y!1!9wvQEetpW4MS7mIZn9YT%ZTBtuRnLG3zpk;%5n^217$y
zss0=hPc9k`P+wH2bsxRngW$1ZJjXMu=`5@uI3g;F=Z$AuS{w+D_ba5emv9XWSlgF=
zWN&U&y0rLJW|Rx}4M2pKKQ%?OcbdRoe`Z6Uy7N-}udp1_bd<KXep07IiBd?&NFzp?
z4wzD;&cOJsrZ~{#aPds2FiwmI%BNTEcVK>v_<?b+u4;Jf8zf^->IU(qm6F@@L%SL7
zYH<;J#mG9ktVoyu$MSA6Cw#ucb4D%bS@K%=)?uF7gEa*iv3%pJ*D_cB;7qE8s^&~6
zobsQF=Ld({6wa`LQO>{P*U!?whi?c_qVrA`5J#0gH8_`Fu9|ufPh1c1X75qED^bRY
zx^Bz%R3Yui<o`uqf%mA3Wlyj&`C+&}Ai1hcpsT$)AYiOp7R#<Ow@`m4ET?i=V8ME~
zkGG!!5})9uFZ|00GfrM`XHMwxW6T|ppHhf2$5Bf)4-+GL1xCE4E+ho+ayLeGeE0d|
ziw^a~?JvXMY287RS8HbDwzdp6>;Hh~UxS6jd}@Pa4Lad6NKa;%Ot^M%4DRXp6Txem
zWg6s~AmCoi!KjZYTjbRXHwzw4Cs~7ghiXNu*Q(R?Gw4Fmo^%!$3nH8;Y>?mCuO4UA
zhZ)Yg)+0u#1RBeFI^AvtdoyTrxjyb^(?v#xK4S%i;R<dj^7$(KUMVUv4dP5(q)56R
zZN>g3=s3>W%yQ$HJ<cGl9@F{V1H>dnxYBiP(ot{f!Zh>#FXR9Oo~HBU3OrLCnC<+Q
ze}VQCW3@V?6*z$Sm^JGWfs#;ykVNR4mN`Zs0EuRiLzRK~-<)c<djfkS;@>feU-TuS
z_3zlT@hb^H95*s85|zsa>j$=B6Q902ZN=Wqewc1MW`r{lBAlxQ!M8DpwR3BHlS8F`
zL-_-@uj&*?KKdnESjtdVVCVM3cI9TB0p2VLh)2AARYxXUi3g~$cNh0mOLr#>N$f4*
z40qw^HqcWLb*txvup{&Mv>GQRjgx=9YWxwokhn9!Pu8KW{;t1M|JWx!CR2#5v@n=?
z0K@|@0_Vg*fzvd(eQke&w+!x!35qG7xi0!Jt+3Z4gfd(!jZA}teV4cLVfv!>_}3hu
znmdXn^4?@Gk^94RxTW^my7VbW73cxSyW&$w%bz0HQZ1ycl_oA<)NwYS@mD$DalOjX
zR<xC>%$yYri+eH69Gx0^6C$f#D|?)(eL8~)qCar%iu-EpKgz>Z7rMK6^`{b!lsumC
zS$u$6TYv-WxlykgQQ0Oy+Y>Us^0xig#)q2|2PcnMZgKA};i?s?|2IQkX8OO1H?HgB
zD;;k>(_;eLfjs+Pd(%%GjO=Mp*8DhEcKR0qxYysR4V}+W<9oZ$iYZJ1h&-H^4XUIB
zCEn55ESqwpt!Eg;KSl8Ip+b2pciq3J<9S!_z&d^S_rz^U;97yj=Reusyss_#k-p?@
zZ@EC$sjc}<Gwp2U-;OjeSk5HMC!Euri}$c$hKkMek{`}}EBsR5G4TlE<qD+fo}?Rc
zR{S+o8tcbHp6eHrC$z=KAUYvA`YA$$d3tmWVCIXWMOg_IdioFN*oTVpr6eOdo8!93
zu{y(mwZhC$^nBSmYIaOa{tLEGEgDy!gPwxePCAh)=;W42(Ei#{^JbP(6=IB}!-u{i
zs>+}|keDLUfEQbzz`^9~Juge6L7!ar<`*AfB@N?5VeXGb-QLxzed`44J3Iz~f7WW=
z{@1o5#8@a@sh9R<=GQvsRp}p%h@tZ;ab(u&4cUXr<a0x~2SBDd#Btl=|7AFu{!&nN
zr04yM`8@rl?D8u^M_(n^vp5zs)){D5KNf_Xh<%(0HbF@bXuf$Q>&H$$=DSg61iB=<
zXJ$uC9*>uv6^5patQpi<3Pz)t<K}+Ji_fu1;lCI%t?52-A^hHcFQVp@v`=e!fu()X
z=?n#kv0!Zyp~nX6199xhi+z<E&;4+@fQw+wjE|*2@deIpZ=Sn~!9Q%Km%Dd0CgIz!
zsH|hN5%29hd%Y+zh>u+U(t5CL4!F6Ei4&c98A<rB73~a^{~Ffb#-R7odWVk4R$u{~
zCa%{n(vfH9#AI<+*#kyD`l0t4yndEbRg;KQ->F1J`uL+Cuv5uLoGUW<9J*j>>epkK
zX`nNs9^!_+oDl^5%R_xzkKAf)k4<KaJ^W`-dhB3kUUKk=YiXP$OigTZ{W~dYc34an
zFRTYn>LcUChtl&xAxGQ9<WU5gj=YXhI~|V5M3WBjxvZBl=wf4u{*E7&#>f}`+8A(i
z0g58L3I^*x?=De7`ZzSui8#%98c^*!L6s5C_Si^O#Q{J8@vI~Uzx~&Ot*3I3Q8Qhj
z$oO@Jt^e!lZXb~~`-)dyhc2_vULH-LD6ou=_niow0H4b0G0@OO;|o6Te}RjAUjg1S
zDAU&UT0OS|CvFGU^*^T2zQXDpOU!bam>fy}d|>Uv$q5qkA8;^7OT^@n6MIx*pw(=B
zz*Os?eYkS*wjWOTb{ByCzBaqYJvDuXIa(lgW9C$#82wnuR_ke(2P!o{uw1R3BPq~|
zm+btlL0>1_tI#rs(Tr6x1$46ZIF$FjRk}Ez#G*B`N-NfoFvc533l>jMGgeh**ZQ%U
zq|D#%v*aK70TIO@wjdR~M-;wv69izXerIPR7r|cn!kGV-KPvE~*_d11PK$AKT8BrE
z3?T|%H2pBkDNfyP8P{HGEY;otxY=LJlrrdaAqjc{WY{fIRNPntPij=i(b1<ZMci<J
zgCTBB7i*XGoB@C2w}moIoJAzR05f{q&1tI*1oy<S7ib^UlP<H+&vqfqKk}6Spi9Ge
z3oe;jPWnS5>yWCK=P%QcOeI-Mrp%Dg440J^4N@<-Uk20HcFePJfn+BDTh!hFCH@{W
zrSjkMl3Qm~!jK35L|6WHPjp=q@w~#pM!a9AAh91X+aV-ZRg7iGSZ!d(#HFRE;ldjW
znem(voCA)#5k^1U_iv_2*pBZ<Xd1^T6U6+1+X_Pcrev0Hfy_vVrlHuFMc<Ii7!HTF
zm;oPMW+!GC_40fCbj`;-jT`UE`xDyY1|`2R?sy<%ZQa{|SQs}RR_RIMLlwR&3ysDS
z=ZS*nsoAgwx<}dsIPC-?Q;g8}Y7#D;c(kysL+_k+K8^Di*!jq574y0{+L<VlFvU=(
z9BAX@0|`L_iE1@gro){m!JjOi#7)=y&}Ozd3p$<3o;mTVRFimjv;|OVxNqjmz57nz
zk@EjEQz`7oJJX{JGq*N*r$Or#1Ra%}q`iO8d)h2kQNoxjXmv5k$IB|TkAGXeeB3qR
zC|V}OyU$N*e$aaD$2>c7L*Pi0H4)U)D_By+L@&}rg)Oli+zKZCT31_I2kG@-!xqAE
z8oXAQZVDE^pSSH#DT-z6ILIfgEw%~xocDcTITob{8#0#5LF7Py5CvxBd9mOM+w&!t
zhxJLc4Se`s|21Vhav5g>%d})=a7yrwIRcdoFxg}!#XPwdGO0kb*~P#FFVXrOj#<Vd
zJcK{gzFyD#@yEIEmF8JkyCkzV^-EZs-&0_t39-oQ0{QcR6N4?LEQan{&rwYcwf8@a
z8$EhGkDTfSkMZ^tC0Y^RasC*$q8OLmU~d*F;lXIo{jUMz{Ds&a=5r!!(q4+3yylw*
z=R0JGD_tNiK3C;Gs_?TZ;+;7se~cLF1tz@Du%b!g>?>S9Kcjax%UJhmklS_sV0gP)
z(3*wQVnm(R#GMIHfT0;Pe};>KK5gm#3$YEECP!P+^G>kapr|n%`WYKm_elSywl<Nm
zeWp=zPzC;;>Us{%!!iyrdLB>Z`(3jT`UmT4%C<(WAgRo&Hl3!R8P6)wXad+qXDwel
z|H&|NS9jG&K<`%5y#OC*4`m2~8INva*)7C|K3|Dn-&L-N)@N9hD|0BG%=%K3H|PzC
zkkGyEB+>%`Hy(xyo+q|lTG(iEvdpBRw<qwft)S4o*TH_6uRN>CZiMx?v5;L`0ik=M
z&EryEdD@cQY~IF~AvZ3%|2b}`B^iF@c};dJ`*+O;(G{2J4s$y{9LJhKp00??Uz#ON
z!nS{7!8I8EZ7W2f-gZ*{xr*(xhLIGwl8;Q@#Gn(`7V%crKZ3nKNEB9JAsTLrJ-t<q
zL7lrkdC#8B^MELIy$bijV&CfUNYWIrfD^T~=jdYt&_~h*^&JOvo`bZlhMy=XtdcBR
z+WUveNL(^9(;j&`>DUnG%)6#w#7+#l?J_b;oDH+It#HbwV4|7YD#MYwojvNC#+X6s
zi>kQ*17?3~MLCp2g^ObjXa{6>t>P@jUR-4M_kR8PQ`i$V?0%?fV#sN|SNJBOkR=@f
zSgI(j!t|z3)z+CXppUsYvvuH<_k+4R{?!D{jVQJFeL`{}Iacw&Sc9v>n98?6B1B_6
zJjR<$k~VJx)#CX!f=W+f`MeTvtDS+QN>i1dVpQc&LnJ7IH-rBzSGv)0t6gIH{d#L`
z(M*j)hZ3mcB39}j@x28?8`R0dgYN!#-+>mw1K}Sz@Nw}n^^7?kN~JM{ug{(y!c{pK
zJhzJG^T+Mj)7rM-+WYIro`h|(H9e=B>&K3w(ajd&D>I!7QoFy|D&@|EHjjg{PMvDy
z&bAk>veXldvQ`JG+1>bLOx}rl9EK~Bn)|4SRb|Wjkn-_OZj;;2c8dr<tTo1JU6q+Z
z6xudJ6SXF2xqx>LzoY#c*gFT?_CyC&!>eyNbM(Z9&Fq4J+0#zT4B4&~fxv?PmZI~G
zy<wFgyj8&QLC>z08_P2@bi%pw<`i(ewp7+{0kVA7^L-0`F@ky6gM6&4wfWHB8${?>
z{R`N+J;>nk1THM>fSlR&oEq#~sTT-8OI{$|sml0pYfaPr5FO-minnW4y=iuj>+tcC
zsdjA&`T7@-i%D;f`iSpRZB(`^)|&g#;Zv@K;Y{*`jMn1Q>EG)@FXUF@V*GxT4Bu+~
z{U6ddViO1@^M!2l3Y<I?ehC);*(V4G7PO2^0LOBOSpqWfGn#EDK4*6S!Ht=e#H7*)
z@%J3e{)`Ba>C)kc>2;7Il=c64Xwpxwd)_07+u{#)^mnX{0z_xxbpPF(Fez%m>Y0aE
z!3ocnLm5if9j8NRz1sq`FS~<r%MEI9j;K&==M?NP^#4G$V6`@p6?*DE!$T0W$xrdb
z!>NX;nAtx2O&D&2CkcAfz<7k!!3m?uVHo#yCr^>0pQzSRa->lu2SR>C)}Ml|AK#cT
zUzTJz_B4(9L+I7_yE(Cd?O<+*Eh|>E?K=a-z4tTtzU=t{eR{~2J2XgH18Q5(iKEp+
zlR!ksHyWdF)I^a&g?TmKsT6b2VRP+bx1Vb(%VlE4(@DaI*jn}D^7xtmN7GdXMAdX*
z0i}_Ul<t)7l!gVQQ;_a%X^<2I1QzLTkdTy4r9m2L=|;NYyL)}Vf3s&!KIhDwf!#Z|
zU+X!IdHH8(UYw%AHRtS-BND6p?Y*Y*{Ov&ptpK0%x7iU#S*Kr+trVS{#E`<@j_JR>
z?sPT_v-HLX<=UWgC~dME?hpM0=i*kON-J;Ga*Hz~9dZ7WGN@`uBig_hA~>}b%V)fu
zs!}dXcO~~#t<1_2M4LF~HJsd6)>G<oOC2U~FJDe8OnzQ@oy$7R{yKE$Ybu*fo0hV_
ziD2qxl()(IHI`qiOnQ@=h94?kN0nKrMor_y{B#=`B5+?i6?(-^%6uw);34xKV}g;>
zaPn^#kH4`X_h!^w;mj~^GVm6+T(v0e*@dSPqBxsTf))EZX>V=&=sSE>qiTs4uqJ}o
z3@81M4e*Twmp7tp`mU!o>99_mSq&$1PBUj0^dv=FH=>%ZEHv;G!|Qxi>G{%yF(-br
z9Nq7Zc=GZEeU3HpI?}G0tZJ+a^F0|LIM<!+cLcp1AkeDqcB>d5aF3eTOG|s**IVqX
zx@TW*<Z6p?Jqcyo&5)!GGZm!4)2Mb?ph8L9vGQ~JSRqpVg)P93Ke}2f@nx$qnd-^w
z9UZ!D{2o(zGMZ-D>C130+<pYw+?^?A;D=@YcgZt~@gHS!r({w_o)mDCHB1@IB&ncT
z3nM5uKb;jN!bbIV_b%@$HekGU2;>{AP<q>pP*VjZ`fDz)Jx-OBx|xo6)I?%y78hV-
zD&E4Hh!*|%x7kjtr$O7KXc9(pXu+CD(G+v4+OIj47hIDAdTkeZ1Kg2Az22Ku<$4-g
zLKT>w=ck`Cl@TDG-CFznNHMh#s?iKUD}yjaTGU!ODIf6+2TU|yT>L0#dlIFqD)99z
z?ok!WI*dNw!^9;9U8*_Y9-i%WM^aZ8`Alaa+2OtQav3UwufVbrdtSO%=)LeQ840*5
z7&3?THbV&i)DDTT?7Zee5Rs+1(5U;@bm`Bx-%TlJrW2+L2%LK*D$2JGm@C&~ew-W@
zl1-aX<H?kHLhPohiZ1)hO}BryRXTonMF#QxQRuvgQ`gBY9;7LBk#^9&ufU2}!=lXR
zkw&@zQTg1-GI-mx&nt8mWr>1VQ`|Nmr+_fPm2B?y_+`<ex4us;x|8LUhTwMi%@wqW
zHCT5OE|Jx+96chz3h$3#9pucCRW23I`J=rs`H^0gszUeGSzXM})su^YGj9mafN*TI
zwZp4z8r=6}P*&!--Z6w6Q!n;1NIir^#0mH--l9^Z?L!_?Ma+iy`tWBmfauDCDO%>T
zzq%dNZ0e=ruM+s&gav2ya^)hZSzogUHwyXvUrvslmpwXC9l`RY4(Aj<so=@dtsWxw
zNTV6?vHw!!EY`4MnPS6XlEp&EF*)!XS1ygT+ms9_VT@)fmW?PJ0GrX@5zQ%(bf-tT
zjL3l>r-H3nMggjgYkJoJsMWqBlj~hvE2Sy~Y$5Dk?9YK}1z9EyLJ0vsetomRtMKFo
zXJdUoB7xd)QPQ*#OjumHk2)X9jVD0whBVQ40SnlFS6p%iB_h5>1R}9IEItIol(5^b
z$J2v)BkPFUkpaoxqoBLr(iKc5k<w3v-*c_aQGgO#GMRhNU`n#zuD<=xZ1CL)q5~-W
z#(`M)g$WBJd^uP|ncy)5RPFi2@Cg`@{uZPU^bVOVtK~VUWGZ@75+vzo%;qum=&Xwy
z8P+z#Y2$JH0AOk%U>ik-@lkk8q+o*<n!e+&ddr%^oU+m?AF~IYN|<8R1VU84Ba5h3
zUb#shg5~FzkqUW*GQT1$&S3oMKR3{R7@3{(J@X7b2@I~_%EoXfzX3Ctve_dKS2DnU
z=yGs=RzYKF1T2Z!)~q};Lu~3SR4d|t+Atd}mQzfCjJ9c^uK(wQ&cXxHOba8(u}GO)
zfMpuT=a0#GS>AIlkOJ0$<=6DR7tdh~ouAnOhf+X?Y~$-){kn`{mairqm}iO<L5Ft6
zkQM+q$l-b3Sq{2rVuNDPHQDbL{-9-4wsF_tHZB-8b|md-|J9n2b54c+X(6b%Rceb&
z;*)gSmB{SYW@jB{ILwLH3_hcE!5_eo9)a&4n{|?5aX^|q*5<@JVW?1K6#>6a>jD9C
z(kL(m;vf&oSe%IZuh>^=(pTqn2VnCm*&`|yi>;tF16QU0BZ18N5NB&h2YTG+LU0K<
z@$j@1N0eY=F1#Bi=VVvNHuD@6j8i){!1cfc3?I2wCEOP287Oy)()-=x8#^pKXuEUL
z2g0cFwab;EnD_rLLt^c4TT2k_&aMcn|9jDdPW*jo3=C;A;HsyNEdh*lHRDqM5<sQT
zWEW-diPC#g+~Minu_3mujm`~y6acWm(<mpeU*}eI$(A=j1^6@UF>%94Ri?Ec_Gmae
zuBE>VU$NI%VuRGrToy02@!&>a@;8==^x~g@<jHMs^I;F)QR$O?N=RJumPJT63>idN
zE<H`kNdZQ|9|k1ZN6!rY`mk5sI0k^lYA=|{`pLo{n-$Y0E8r0k6rN1~oMGF_xB^p@
zekAsMGer~*^QDpw7almxvL_T=7Wrh0;Li!g@>V$cFEEJOxX{x)(8^GTj7w`C%ry^M
zAB;;$u6E=kq!W*F8Ocx54p$<C-WIYiz!;p$m59J#lQrqdfw~0^PI?`BB7k<>bgyhg
zQ(<AhC-bO707p7r9^C(hExr&Yu>sl^4|M6V`G?BA?kiv$0I|YqxLbG$DtiBl!3Pr@
zNue1!0C@z`Z~yDz5M08CG}0S^Fp`Sps1fLm+@mq?jJG<dB)Nuj6A!RFdm*jR-tpC)
zW~K8BoMX(tKrLOv=yJi3zY4hNA6bDJWak}i$hF!8z*$l3E$;@_53muempDc5xpIO5
zq9<*x--ICW!%(TKS6;t?qJZOY|4<jdE;v}qg0GlR^s_kOwg`*|?>3p{5KUN4x{k!h
zkS-fbk)2@4YGFQFO}%~wGJj^RF={J|3q(3Dm;UEPl?c6d+9;1BDyUd;J&5gJp(Q$Z
zH;U3Dz=}pZmhty@(LYbX@gjCcqo_GNI390g2lgo-lq$^_W`pnlC-(~YvoB9=2QLTn
z&XYN7VuPX7Hk0@9oT33%=G&|^j4OV7f}m|TcSY@yVgQcT`^9CE4|($7{52BKiz|S6
zQC~CoJII#&IiSGKlK+*K%R%-NFpOPC0+$1mfARmN5vw4@1@Tld8-%McV1YR_)yDQx
z6bnqGz8uN0rZmXl<UQ)0d}Kqj5|r=s3|NF9@pJi!`~M4J8<()V4!GwVhTC&X(zQ^q
z+&2*kjoK1`-FOG_aBEH+4up#M*>I!BHxQK0(hTzN9xAZ07Ev{4ge?IY%w@kDas>++
zu%!K?H1su}f^unZ-mJ{&{)4;0J8^4n5e7;U5?-WV_;rO0JlVo`?7{#0Ak$!FTGJ-i
zXX}q$fudM&5u-aYh5!Qho%c`C@TK|O-zWc^l|J0-{%>j)U$dS=786``**||P#gT~o
zgRN)4-yP^Sl>V6Sc&Zi`ZDnD5dx?FceVgn;46Lp6SMJU)q|IRiCC=WwXw3*Vzjq?{
z_R|EvVML0->~Fe;X0j|UokyLEjCn}FGJPt{uvF1Q1?~_v4f_WeVB5PJa!>P1@#q0I
zM8)*mdr?r6|H0(&zjFc9mpp^O1lFC#s$TMdO`aiY+b+`_v|UwcWbz7B=u?*N2=>vA
z0u@6Zpv%duTxV-Wvw_P|#yVgbT%n(RM$%P5Qk#EUJSj|X=dfTq>T8&H#pQ**z{>Kx
zBeQD}?X?)LB!%@=Wf_NB-CGA30^;kzT)ei+2N3`>zxe$u94r8%rLk@@P$g=}dL0-u
zM3%x3Y7Qj?-3|?M76d&MuPlRtdxDcpvn>r6raV!=9q1SPaFxJQU_EvmiFeeK$%0|}
zKDdnj--!?18+0IogxPyvFhRF5y2EKfv)<^-?Xb1nb0i+#-9--4m=*|aPX9x-*6F~V
z3?>p(`=@vToNiJy_=XK?iNo{x2?YP{O5|7DJmWuKO4B<xeR{wszk7@}P{CY9aIPe3
z22U|^dSY|v;K63RQ!)kc)bWmN$ni_b3os&a>Piyuw1wr(Z-5SxIw&(dfKK^T*y()e
z0t3WkN#cdw8>4D!{OgrV3U%jxZ4e-;xC=^9qKc*H4cK~|-jbTvuuXs!SAj?60;;+4
ztx#hJ5*)Q0%mZgW0H!V(`&Iq*;X5H%%U|$OQ~{-tXWqAm!#3fSafYtVGjecN(5_Jz
z4nPYyHBLWO@&XN?harFY=b@n(8v^J8CtK<7^h6^t>tvE8LjRBsG4w^_z`tI*%wFrm
zy9ePQaU$jh6B2X@)k$-_tEGn3grVF_CMc4cN#;oeBAp@o<1OIU4vKJ|Jq{~a2!FF|
zbn!qBQ0#%bBw!fzz1T1SG3xAepUDO5fIIHhiZ>~6Vu&iCpQXdAEPjABAiD%cZQi=;
zHbs9}J71w1caR464{UWL=W;c$M+d{rn}>tFEGS^)e(m3G9hQ0e-J=n<TVMFsUT-yy
zl>J-r^<)W{u(oqBtfiU9mkl<ch5M$*aByEk#hdTuaRkmr`pCXWaZ_*p%@Y`_>esx2
zZK4MKr#CL;OGx0JtEP<Rnqi3q+rWuQ!W<Yrf-35@hWY-r;Fb%KA3WfE5>k%6p=*ZX
zzg|VVcX;#x<n_OPP8<b}a_2Wb=<dmN1WVRkx@33*r?-W_K2C*QX*Xau%svjmR|f+V
zucUl6^6x-mKy;Gz4~*Yvz0Mg@h~TanEcDDBw#Cj9i!F;ie+?VCR;!`bOanbmGr*!b
z8nh>zX6FWzolpC9gy?io{0~Uku|N8^oGB)%f<V{3F>ogZj}2G+Yuf+LO}`$-Pm#g1
z0=w4-`XMeq;P0e|`frRN8~-vj&2zB7q$}uSfc6p(6_@`tjOPoH4uPQM)#mHae<y(J
zgguu7?0;CMquqUP>kMMV_gcL)(%aXnaIA+1K(;qL`-48yrU-8Egh{x4|8E1R7lHx*
z4r@b^yC<Ze+3!lf^uc(E#r!6o{lkb_H_9agY_f0bHXB&wK{Sozy9@P;r2n;YIO#?e
zFr>fN7B>mNys?j`W6GMorR~3#UM~IYyN3=~NW3?*8T!o&z{vtQpLC_0>(gWWcLdP3
z{MQa!?`<BX!1_!gw$qOV1IFiN()f3jf-)qTBZF8KKN_M`xcY;dDBccA>TlhF);eSI
zjf?&jaE&r1;=l5HQ!~@;OAoC0my?yl?o3p$P6}M6A@pBC&9@bsaa2r*|2y!Eq>=o~
z@QujQJuZj~I>zszbCK15{r+q=ArA!MwcmrL`@fT<<9Of>EN~%N;tWq((81)2efZN1
zsi(q(Urx=4LAGDq)mv2ml27ApP64tJ)->YJc!JAJi}C&L1qnExEj(5FuXN=0XRZ1F
zDV!|YLjz|ia1MgNwvH~QRg4QvvXG^7`(QzLgWi~^gnhi}$8|gGi&GGKXTK-Cb|`G+
zwCg{j`I%=Sdy-j7Mo*V1wjU{jg7zYt+BzU-SxN<`)^@zG*any3Bbr(~{ut$0Hcf?`
zyaX!i0y1PZ3@RmTv}vP)<C#y>I-;b93W<NtD1X_Nw;2@wo`SYSt6B?F1xGobCNWHV
z7vK+t<}cK#mA{s6iHnD_8WeLde8g0Xr%Upd{t$mfMQg3oqHd^yBbHC&9$vqT09lQN
z=5Hp-;Hbo($;lUP-W?!9Z~~!b@rM)2D)H!Y@;@`)pQAu&uo(Nd7h(;A<ISWX)mK)B
z!r3(9a`O1=$RmJ1D2)9i_BXFp;)mqqEl4i^!qKA0KysC5eO^LofQZ_z8%W`3`y-(=
z!Z!EsRO0RA<Z(YTHvqb1A)E_Nw~P$(&+}=<iddHsX!}1x&5V|~X2j)PC}}@_;`fGw
z((tLpPx$1WXVZ9nj!#F9L`I_RkAkktk-H-^$cyIFAYBYfXVYBA#V;W1o{=-i!{yUx
zdyKwBgQx*c|LExNel3qmNh?4s=>3F2-Z-CzSfkE1FdkPNQoZT45t&UR9T(qY#%zEJ
z%_mfg-$?BW6_<~srv06!JNXQn|5Pphz4=ysHVtiDyq(Z&6A^<vV?Iq<4R-}5MC~Qx
zN7>3{OmX=E3R>sIlWTkidEI;(_@kL5fJ8}qJ$5Tk#USsMPm>~Yg8W*ZiGmhopXd$`
znop&M^EkY-92Bo10a;z!I3|JSbE?JDJo?#+%a>Bnda*3F!9(+z)Z%ZCiSa+gYe+&|
z=#8dWRN{B#<lF3;T>*YXwfNXJ?dO5<lTwfqt#m@b9W=)NLDF8{;P^=k8fSYOy8bT^
zszg<_I2{E>4XTfN3XImm#4_)_U$NaM{;a8WIiA$*8_FDIpC2@~RxTW4jBdB(mSvQ-
zDgR{Q?3%ZKQgYe*iv^!(xs5mb2bq>l2$dOBRHHCaUK%HO$x1UX&f1#yMRTjb%vkvg
zzoPVlV@LM1F2`v*HNEJu?Bf|tHCuOi%TP2!^zB)iK#Q74S?KI)TK#=Im7*}7_r(G5
zb(j7hgxDgF%Wp4%%Q*$f-wRKzg)zN;pIqj*a*T`TZvPbEI0ZOXrt9l~t3jCqR*s>+
zzivMP$d3RypI{0nB)kz7nM}F<Kr<@nFZ&F9=Nifda~e57rUJ;KS%sQ_zP%4C$LqPf
zU!MIju6X{TcP&k{Obi**H5yBpOj#EZ6EF^;d@oEyEA1Kx=s@dSlW*s8qyxyMlnp5s
znO!BqFYDBDxDqvpz03qdog3(Z=hPr6ec#VtOmr;ZKWn%WC}(LkmX(RVLfd3Sesix+
z9r})v<B(XA(L918L#KSEtlN3bFDd#F^}|-Fwrz4lS*Jxk&KKGPD9upBMUv`Q?uVc^
zm0JCuZrwtU4Xp!tN~f*QI7f9~8YMkHU<$T>XRufvA+Hz;ygvYuL!MZS>FxR8o7Ca7
z>%;Kl<(96sMpr@k!GKfL*e&sPPt`lV%D?Y3*ROd)9yjsGlqDX6%dZ{Z{W(r&cB+2y
zILs`Z8D%+gx!&#-+Uv@5(gcNZjV_%k44%St3GlPmzXZARLV2e)K(19g-xm*Q+V6#l
zqcG4mVWgVt)$jVCp?b_rz0aVE3MyBHzsoJCEyKbo>RuAiUE~+x@w>9RF6qo<s&cAy
zl<7bJ@bR~sH-4>D8=J}g9GTA<EedsS?q2o{qxykBG{kk}aFvEBXei1Y?6o<J9&oCQ
zs5RPcl<9TUwR~4O$XW@oIBH&{c@nMOf9w=K9SLc_cKZPzz?p2h6!Dku$ep8^7?AWs
z3OIFyEVXw4l4+gGcel*)Gce^$S80#JXNw|;r$cGT51Z`-j~7rtOJ-2}wGTC>gC+ZD
zi}Z@)gX&I#4~!l8DlNeK;0_yLCw}s<X^7tLp9-+wFP%63ZjqkebS#txo__vT8_;Ik
zO?6uzK3;?rvLnR@m%ywr^wXv2C0fxsXJRJjfybu+I=ucwXv~)}0WqhOS=P7;`<;?&
zMTIFNnP<0O*PA66%QbMZZ6I!A`;pwxNRJ2a&enq&vUyL>Jfcd^R%rzGwXS2WFG=w#
zIL~Nth|j!v><vBt41FOW+VJ5T>-Juu8g!NnVr-`yw=x$r7>Ga&iZ*60?q86!<f)7L
zwBZXCOL00{_Xh5KONXA&-{NsMH39cRSr*>)x1E2iFaoY~+hGi-R=%Z%%t`-ri5bY+
zH%&@-k<xF6At9l3F|~2$2HyQvxv-iC-VoPj5a0xb-4Lh5Cq8Zi&XIjP;su1`=`u~}
zn9oL)-r`7?=p6ngF!W3~2si~ET7j>KHurmcYQ@M?JpM({Jrv&EbNA5xW&9IHN_pyM
zyN3=%6-5pWheb<j+PjB`68DH!kTBNf1hb2b#ih~5)An{(%)h>;>qNhQds)g{=bi^F
z#m<|&AuN4cTSIGIrYU0`AzvBSuUhimPl!O&;XB+bgAspW>onPyd#&$WPU%&w&1{(I
z)re~8PKBejDYhtef0`gP$}nNb_<J?UMBfBDewHcQn$OPM=*92klVe<C?`y0LrEi}y
zL{%q(+PGQ`R~th_y2}P<Yr|7{N6Fv9iKlV4_p`Pv2sU%pZW<nSKH3d`8^o_An{ywx
zm11ERJfbGsOnutNbdBrP->skUM0YB|Tol+`XkKe^Rp0S}le_rEe}JtFm<(RS7(anc
zdTix;AYr;H!JF~<N$`QBi~Np2LXe+KO6G9QxI#W~-}lev>HB0`915YuqE0d2A)Zma
zz7v`_+WnXrn|1F3RmLf6YP@ay>nIG-kPH7Wi%5Rgxzm;1`p7~KaV%yc#wZwE5Xtju
zE3FMJN(@K5(n}K6i;vMnK?3s09e<4zAXt-}83UhN5dY+Q?=<ilnD|q~bIhFbb=_4(
zv&1j;m$4{z9{UVEFw}e})V%8%O?eRCwivJ}>*jcdruWoUN4Xv9?N>WVF;OynT&2~l
zvDqCLNKfpVqdpl>^ww}_iw;eb&h4QEZIoz&fjF4Gx8m#a?Pm1@<=5%l+&YU_dXucp
z&#^@aoBgAv?)Wm^6le{esp&!oR%kwMYR;J_sm15I;Z}}!zk5JdR&C<DO{fW>oDggs
zz@nT;dldKsrx~kw$o4F$h1h$<kx~MS_LZd{VOzMor3&Nf<vST07WHVk0!Zbrx$5^)
zh~<?&8!zhfoWGLAiSMOUtZ2=T@qdZ!%O>JWx*GN1jyb31v@#a3;4>3XP#H><;41iX
zU`3(3=kKIwK0o%ldYWejD*zCw5BzHKo;c+yQ;|$en~O^0#6M``<Wp;iN}Y0hmFOn>
zVz{wPa#f3E$^(T-l+W_Zx<-GIGvp6DrY#&l-f`~NNG!Q>{w7P?T#3-7U8YQJs5vB5
zXd0!H^=$18GtO_ecX3O)tk_p>+M<&sNb^&r*#S<-i^UUbQ3;3b{bSKlnTHBZX!Npt
z-<1O#$6NUYn*M}_6VNQhU0Ng)GoMwfoFde4;${#p`%XRRW<PR<SgR#5HE{S$`=c+u
zubRs@JN$VhZRl$#C`|au-Kx0^WwV)xwEN1eH9N*i#Cow@=bn`wtNcw-B*_n7jm$p1
z^2+hFa>a{$-<@uwsm!y66UxY`I=EMVacOs0B6Z_&6K%{x)J&l_x@ZO$+t|O?`f`J|
zV=f@1X~uIp5z>80;#OF5(T-$osHZQ?jj&HFv0i?v_<6`0l_DYUji2L!E+P3#+0Db~
zY2jz2C>4s}Un)|?b-5mTiaDQHB;e2`y0LQnl|7n_QO!-TOFJmINw85fHSkZLCH5pp
z7YhgfLUw!dwe&E85gIC8j1!FI-SYE87lOJes<{PrX&(hQDt0M>w-0jWXIq0XzVtZ;
z^IEUu&n4(%5gMT^1YgP~6tGMBMAM!dU0^uAQp=pK6sLxIn=!9${F&nFxqG3BqMGun
z(!o(NkqI9Ua}Nol0NtzWyYQApJI7<bX6}#l7j)V+b4SU78kNyKjIXK;zbO>xx)b3E
zl%niw+v%D+>B>mQz{B6-%?lG6WU9uQW*WDfScPJc0xSbh_qF$(EoD6cmVqa?cm<dE
zJQf=342V^Rs-h0&%rep!_m3lsERkBWl+pvaYQi+zCrx9Kp9(BmrI0cfga%FCRFtw0
zDG!rZY2OWEx~aLFKTg%IwPk*xgfzc1KME;1^GWIS<_hC|7?!-FvmSI~^~$+Td|?l%
zC)Pq<lsfZDJ~dZ!zoKb86yDK@m4j=u<qKOW(X>e+F@E3X>oIIOMrO4!p?83A#wbG|
z#;ANXk?#10<X5yvwJm-Ws}I3JQ?#+{%~6J+h!SV(H_z4O>do(|tV(@55^M{<!joM$
znsoe->RTi!<>LJ3gUvnK-cZVMc)w4uVN|PX*LAMw|I2UvE9Exiy?wAaaZoYAeCnxb
z4Y2~&`NBMvh3Uw$D3{;5p*F)yHKz8KIj<iZ;%l)MQp`^83NhU8z9W5jEoNyp&F{a2
zAWo4q*Qgjne)SrQ;r#T2AF0@J5QWOz4sF=V6X*S1S|sQ<i^j2-tZQI?VqzeHMC=Th
zuP>>y<oDl25YJAZA|CFATjj6$M51!oTmEJBi8G0w%yWjv^*6R8VpjlfPHATviP$wT
z8VeWk5cEF-q~c$k-;#>m0<_-)t+9Yiy1vZw;)VN8OA@hr@#=6mIm(G}Tk}6GuLlk}
z8Xoon2;fqME6?HJPbpnqPY`>E${2}CJ-6C?d#wwST(?3D>DbAskhs_L9yvi0HNJ+f
z0?4J9CzysZ6y66H9kBeKAm|!PAlsd-$d?wzU+esn#1iCxYx}tO2ITKOoyvT=DY+hq
zKh3v51>-t9+7rbDRlLgLS$_tqm~!uJ@$?m4UzmW`=(5qgyF9*bACXhiqj&^<9K3sA
zGVh^p(~e}!{DMbpXW^-=cAOVwOI=wrV)$oQk>A!>-98HDcg<3DRM(pyZLgcfbhPVT
zjNRn(doCK29dS3%Z=FA!AE#MSDTcAPY7rlA?QYbq?e&(C<4NxEi{dX?`Qd4Ava1)5
z?>f>fv2-3+#}N+Ai<a#=bvd<!(;%LT+`LA5Ll~nC?J*L~TKXOTB5dt|mLpmAz7YB+
z<j?zW^5~mO*BsIU#{5fOIKf_C9?qHo`%F%cQ6^pnX&*|rC?73S!jCftc6#*QM(Z9U
z;TW;KZj^54$d??+`n~#eE?rLPB{JwgnU`l&)7eSrzhVbFi+G8K0ESw4OxSU<*3<xn
z6EhK=`D{+3fI??{Vvc0)xEU&bWBxZ5LO-8$Ym$2V&F0b~R6NWO1vPSC5n7ZK?y-lx
zsuV0xtwdE#u}naj_-l6ByZ7kZvMq8fgIKGkof?2rLd42QSL7|djFU3aB*oQ|BhyA0
zVy^9Hzx{b|8T-pj%F@+}AN5ESA>A**L^^#YKC$N|swFi7y?uKR>M!D&$Zc9I5~Uh?
z3>A_)Q!S%yDx!&=?^z~pdJlbNgBx33;y-e*@Uz6a5A@}TN<KGueU^m2z!!IZyTu>U
zsd_(s{^q*I|514FQY&Onw>=>99HZp6#pwP)fS19*Ob2I-UPxN*C8Ij^v$Gk;TBb>>
z$5a;N{@Rqsk#D<CTz@{Q`6d-yyPM~7=oLZf((Ttv$84b1=`I`(Qmf92U&Z3z=TB9V
z8&Avgn=$>Nr+Gt!<1bOfL&(7!8F#wY)o~FkwSuH0%8HbAPPr+|B$<5O{)6;$ir=X|
zelVpGiuL^;e;$`tKdl}-SD(xAVlFpO{Y79QC*VXx{Bzy8^ztE<(n4=cT&%|kSx4f`
z^m3ElvTvEa?<*f+m-HWG9hvbM^&Tuc?p1P&51$08BRa9FLWD_A^WiqX4_+8QrW#vJ
z#dkP@DqlE+kWp{;0>bHn+ZjseVS%*ycCi<<eRYJ#m>j8Jtd&5vOk+#K*A*DLb5J7$
z7Z0Z;X%qIRER^JQ;Zi}Y&rw9F;Kl?nBf7AwK7Hq7j3;&RllzNpt#cTu2<lrpPE-~r
zh<HjKmqXn2EE2}H-_m%-u#XzIA~}9J(fqJl^|XSXk=I6Kn+hPsH%<S*QssyL5*N1o
z_UY@27k~lk!)A0W7&O5BZ5hPd5^*ckCx4}G4RW2HvQT%Ynm-TKXU6fB+6{-eM!~|x
zZC;}c)n~ccNHIb<SyxE<3Wl-6)IfsV{0*`KXRXn3{+$pVcu23VHGzHWFvLR(MVP`b
zY3he>Q{FC+nvwMKG<>&2xox=P*_)DbkoDf@-m;q&8%2c5VL7G&E0o$P@6&~`?QFCr
zd~9E=>I1O6fPCnAS=higzNR?~RJ?otmmK>F?n`V6Ciww^0V$66YeAuBXE?!>PDkdP
zY`_b_YXD#54NeS%K(<3?A7?}HCz_OW^@28VjL8BBhYC!ku$)LJXWdjqNlL`ZRbCL#
ze}rLp=C<f0u9Fx6rLI2Il@sM4g#YrH8!gcoo>@AdBo2|<)ebk5+K9;7v&<1MXNpSg
z`A2R2AzNo1_%HGEr0E1`UrFLz<nS--mc(&m0?o~aqKh%QO634iQzQj{0ubxGzrtwE
zDl}&iExR-B-x)~Y1|y~eLbIw$aTsNL8v4V-!7|W}Wi3W))Cu`^9^)eA@=$sH6ignY
zWAG?iIV)gfuJA3N8p)Ty0yFUgobabwsd54|)gy7OK&>vkoXfCu4ADvhNV4r(`b^Ii
zI@C-AlXp1w<KzCCR$FgS2E@IG|B^s#EqJeNb^Z}*x_Zyltqp{6dC}1MRT-XHHJ>E@
z`(dnB6buw@XR;zB0|6X=IT^8%#<wJ2Iy5)z`TgG*nMXn;aRgmolYzcz?~$!$rXy>V
z$O%xH7mjv`2*i~F#YI%&wg0M0O?m(u<t34m3=Efi$I-mxA66<;kx*(idqs~S7wINg
zLQL}hD#9~s18|L=l!t?>uFHWNUUXgIFQu->iqKzGrw_{gNh}5IXfYiSe8%wn)vdS5
zJl0TBxWPUI-H+8>rFwvHL95Rqh&777=)Am<c@&h|B>mUdZ!oOo&M~bW(aK!nT%>Lc
zZY%Q%(Sy>yS*WdMenQe{N;V>@3&dsn26t&Boa*0kz;Pn4scPgN<%Zxg=r@lAR6~R3
z`nu1o>*!Om&q`@uIx~If{`#)R5Nqlh@c>-o*IHA?VEV4pzQ8Y8)1E~vpnQa1ilsmM
z#9}`QJe9wTw<ANN(N^6ItNlI!>A}k`ChdIU&x+CNQ&>UdPKjO)iG7-z_ZY#S93PC=
znNA<VI4ty~REPLljQAjG7;-g#5Qi?CHSV7b_Wu6H=8TCNQmUR$jHTQyv5-eo@)9Ul
z-sJ!je1r}>#_?!5k4m~^JZcy`av2|7)lk05#5qXmmkBRXB1(4PP&HSfpQdAfhnH@`
zX1rPz*%Sa-BW#BVhGY<QGUWJZ+^5Tb?CV&+h5v$MJ{RK{s+A59qn6Ez=}=`mIIA~8
z)3ksasNAS=5}TALVfb7;SZ~wi;L(jo_XVfn`GXr%Nc*y|rja|qR(+y3`wCoCq@_{c
z8^$FT8RU5=vfh6B+1ij?NN#k^pm!;cA2dZXj?uT~5X1puc^hn)7NQw1$44P~qs2@K
zFV=D5Jo>1m95h7@u(c~G;9-LctHH{}KL?K*2zylZ{NJ9vnHXuyP^Bl;gxwftK7|Wf
zCYf0Z&UB<Z3)H_>K|6Ef%Gv7XTF!5VFOvlFuvxN~2zCpU)S|LiUpb|k;D`i<EYp$i
zj7Gy1LVm<9$op?AdS}eB5L>8)_xj{USM#ogZRKpb7h)ENzpL~LP$*lrsA7Ux=;FH4
zFb<gCyxU|Gw~YK1TE-ob+F<dRGR;<+r|>&xt64`ki}+d+HBqMU3zNo;RKSouTc>DS
z%0THw)(;C8rK`3pnQ?oEdE({59*UFU+I{K5A6LAz+~mA8MgI8tit+*SIWxO%5Ropm
z?>mtSVoky_%G6e_JUcP^1oWd=Df$H{b>n=Gy$k7|yfv+gIolFe_TQ0oIp1t$hakwp
zN4VZ+;UEb(rNcS%E`3djMd*EoW!aryg+sz$5y+3NO)R$3A^$AG^ed-BPWh`Sziby|
z%VqD;SM~KQWX>(Oi)U4J=Eo7Hcia~rfN9xuKGh|<w{P)d`OTMxlg({`>x|><>Q~kw
zT^!qIbd8+Go525UB;tb3Hs8(^j|$bFi!V>z7>aaE^*mvpUij|wsmvPA=qvg08H;uT
ze8=qm<prm<I($d6h(#}F1>Ms?4l$=ky^6x_nB%z*aWkmh3zI{yw2cwRdLNTIi$7J#
zG~&744E@F+>#xtW5kb{a5}Mf2u&GmIOO!4_e-m#-5g|z}WT=Qug^HZp8H35A9<n`*
z`bT&k{*SeY{S3n-L`utez)AQp3@&bXg?Yy`@fmOg;-Y!;RDV*x23t1&a)_TJURSTH
z!L8|qdK0ID&?&2ksiM7wH9=c}@-v=O^ZSb5vQK661JDVbGS8bgm2Y~2=TmgsZ6ET9
zF^WZF0Fn;PzG>WuV;yq7W*NHi=DQzv4N$~HRR9+APGra<ykA<P&jpcqNrQvwtFpr%
z%sZH=8_`US*Vm$oh0mQKq+fYn)?pjzV<L|1hIVh5OzzIM(+8kI8+f1)Q*JKCA=2v3
z;;C%I-z!|z>M55567Nw9mh^r_(hnXjLtl1loH#{~8?o0EyW!9`u&2;X3Ol&eYIEwa
z`Hg&C?Q%gIOGB4Yf6A`cS!g=wl2Z_)!Z_5AMAv*+Q;$!OVp}!zWVnveDFKZ@yA-)V
z6!#^|m2@ofeAnohXMCrg_A6!2`EJY)9&GC;eres961)w&NwK_P<ROET3)X4nf41Ih
zQ`H2TOD~i5uN5uJgjn6RBOu~^T8hRZO=GV`UlPJ8QpTq(b7nfmNPNebKwQ^X{iA%X
zjF-5ut@+cEru(U`xG={|4tn0#1vBW+0PbKfsFK@3tm;MA7~7+{{rpSS)-={fL6bZ&
z@ro+H8aFeU$2fEq)B-ijpX|!gIEKLM*EPHm;LpoDf9WE5b4xXZP3x0g5kpqjjmL>J
zPzyA2q9<usMpLtrsS}x6C2YHMpUbyNDnDvZd5FgRRQl}LdrBm2zh!EONY#J2eD=)T
z4j7YD_4BRu#PH*bq8!{QF@OIPec<bKorYU?QUV(gd)kbN%wO|Q(`TeynOTTryfcsZ
zyrX$+a6<0e5M}Kx%u=j8{b)Z&q|o$8-S7E*K4>rhRxI9EsJT*50!C_}KlrH*k}jhz
zGQ~lz<}81lorhSO<?~Y!nS{efxf26MGT{)n$E}k%W72nIg`5mio4O@qxH$2%vUzTu
zdy82&&s#tK5(t<W{+X8DoXnEy70*3Y`inh}TgP7Q=h3r-y+oPyxb2HyO^>+Vl+KdM
zY3SF}gr_Olh0>g8H^rvhC7Ob^IYP|s9<A(~QZLV1j=k#CO+|P1&EJp5g)>s)Y^_6x
zPITO7YGSuy9XAxHO{7uDFM4r_2mY3<F6YQm55v6<xziT4ak_J6pmMV~ZM4?%g0OMD
zG(V{_^kE!&{Hj7^b`!DunEs|H`mS|KVinqH#JLT9`D}U#t@rgzNc1}+`r@a!ZsR+?
z(Q*O<-=1}F{Ms5W6QSN<sLbA)!LUihDVCBWD%WFiDa**NA{rJJF=Azu^}63}pAjsk
zgK<r0*Y-usC)03q309Sk!U0bValI58E1(9sZ0n|^<6NNHzYx}5+V|QkYH-b28OP*!
zeCV=p+a3?#&L`P8FC*t!y|Pw|aS6Pr4z#HE-*8l8KGQSvoHB5i>I+?^U(RK|^QxzF
z&$CV!W@%^8Eb~qs3J}%Izc$<+ZpX=0D=V-uXDdiOJ)Yvo4GVL3sDE+1qq>(V>oWhQ
z=OJR3Q1z7Br}{TARsqIEl1Y%+H$80uzc_L)mWurB=uMU(+k~o4BeHn*^pIidu?Y!<
z>1yo8Qu9``&(V*@M~#Dah^sXR?H}h_1}!K=(;lMKZF%R>dn^ZIg`BsOhhO{h-eErT
zB(EZh81*=Uid|I0NVlp8(=(O`ky+6UQ124)yyy_S`)(8M$*QEN(Kkk`*M9c<8>=;J
zgxbD7>OPHE`#2W3BE)uV1X&{8lm4<o^MgMukvQ5%Ni$mY_wPeo^Fzxbc(mCHYLl+X
zF^+B5P)`w}ITT-ho!rxetVeen9Aqe;Q;%Lzea#eE6w*Dw8Nn@`k@-1ex;@Dmt;&R^
z>C(PPKLUM-$mbz=(M#;Ns`xJ4CCr(_x#b5yo)Sv<6!p<`3)z`YekfsAUvb|L-m8$@
z>quk8#N-IGkE?O(VId?6rHM_hAV57fsvje{<g6{bUtiHWFa`2{>Sgzj_2)yl$>nSC
ztcA55ivE9IS-Nl(AXp3})x2k8Ej;T`T$+Q|V=YAQP?V-(!q_kwKpxWg8)zuTN{4Aw
zILk$y<-*|w&y~T<`In49ozAF`IMkxYnZq2>qG{Y`m6)}Vr9)9RGBjh=WB_%@Ej!?n
zT3_*ZV9J~G=%$e$P}1a`SpfqUf&>EgiRL?5G#8GICl=mQwpn}x>Tk5@`mw_DkUtf!
zT=_YAr|6~rO_(ORgz$NbT3_e?LGIo4f|Hl6sM>8jG-DF_w*ObsMj2}g!pHQ$e^&M6
zrkY+dnk~7s{nC%1cIom})UxyCZ5~~E3l^267VY6w0H3YD_b7S9VbNj{pHAap+|}My
zvrhkb%czSPo)Ctt7pH1!R*J)cd698IJ-xyy&)K+#$IFW%?->aCEq$=2w^y=2p<rEO
z2_<rL+cXiLD;th@#L#?c%has{pKD$ZzwDUv;;Rxh43l3Qv+cquIsEL#0aaS~tUSBG
z)1&z1G0g;8{x&gxyezUYYC6w;Xw^5<3neo}YZXo2&3XOpt#?Om`~EX!KEH<^`^j?J
zzV2Q@&lby*Hq>+V28EBK(ocLd7mwVlxB@5+@;)r*TzhO{hB!+8J~Z4PB1bl?RGTN5
zOA*6rtDQO8c0QrcnG}slUr;Bc52(Gm^L_M-O%T)b{dRfl^JhI4-|$yZN%O%Fx!f(`
zHN&E&&?!<^(dn*A_sCt)U!_O?{g907HU3~@!R{9}$%>VqcQsOb26UpYv0rJt;v&o!
z)UCFx4RCBgwt856Cf>R~VaI4eI_-t%ICSbB?X_ydErvO`u9v48hFsyd<i62e%(eX`
zq(G$5R1~+A@Ok=`CVcw-WU$X(YRtUW!&@#X`TCRaa|`U=H>OUXH<ELftV!?>Ul4k{
zef{-~Q!G?ErQO{g3dz|e4WQ^Hm-Shi$4eS(ez@vJp15f{w_Ndi@uq}O)Xz66!m#&s
z)cs+`&hd_&z%p$_yuV__tM?Eb&#;Y{Wu*Hb3Z-@1HB+HNc(-gvQv_pZl`1A-iSxXq
zo^nr(%rl8E)t;{K?|w#pJ!a{ir~cGPZ1YzMuA~s3lvSO~Y4@wO6za=EtsNI`rxV{Z
zyuI`9iTQful=-s3d8Js^A*|(uqucTxoM}9x_bqrr4)aszVj=X4gU{7Dh*wafjCh$5
zpq$osg1Kt3EVT=lk7R^zFKij5nCLDRpD8lFm>3Uxmr~_m{oof3k8P_uHG3ai`4k(i
zb++HAt~L(g+Wu6#fCpmUUihf^$eO&d+|Pl^L-P0}c;=`i@)V9n;{HhrlaGntlX^#r
zP)wv#xC(C9-bk!@zSrjnxIT4X3A5}2O=pVN$c>iK?~z64pB#~AOFtm!kasNccHAN*
z<IO#1mbj>gi;>Ow@deY!eO|tbg-WN)TyL#yd93Vr^J?gaUy!>)pUt;^@GW)jI9;hr
zJM-+wt}Ry1mZ^Ho=Eqwj_nDds!Adq}g~t?COMBRR3P+M>d<GG3YzwlSmYk|{MH!%_
z<ul~UVeu_(Sg0F|BWm`)4d8A+w3P**n|X%jxsw>#EN%8W<Z<`p&-AVL?H_fH%O@P!
zk5)YwC#({fa4-8^yw<=k5K~KQp`~C)^GP9{gdVabyn)sxPv{BIHR_LFkozX^S31Qn
zm<htmR7SE}@u;<4V<UOB_*Yd(T8~!wlVjy7ypUZXvr`ZGBOpPS)UR1BMwUai;IC;d
z)0)eLUBa4Cu|Zp3xXLgzSHDN~QFv7TIj4x>PcfYVB^guSta#s~ACm2;th=WrHdMlq
zaOWFRZ@G!S=HwxT#@S7o75}tgnuxO+qzm3i^;>88P(JVeIdou`?Ov~O+d6(Hy7e*Q
zraN2IJODrC6PdHv?c1E`o;gy=Ldmx^yp%QRE+NLFs<mq6(=rdDiwdba@@5$4ea)A5
z&QX~TuaPdC-v}JvNNn+-2Yp135>pd9hKD;12&L}s%;Vu|6G?B?3_@l#5cbnQk;e#e
z*sk!YOBgkpb=T%{YhYv$^+>(+9a;Qq<i_>(+{DZ7Ha~{xp|bTjT`6nK{JZqG*YUY}
zcsc9uc~1B(zZr1YL*B`12azf5#}LpKEfXV^PxmHnhQG>aoR6pUED^mB2=Fc1Yy227
zUfwTOkj!T6FGjL)pI1Ubjy+~Kb6B_>cQcATT;VvX*p<!=HQHwLPUg<py_(S~G&;{3
ztc*>vQov|wv}Ks9^OioOoesw~84zCA;i2+N-aEQg__{Q7{|@K*)FAgUhA?d{#=D8a
z8Q(Lpr{x|CiQPT>RBw{#D|B2re<oV!%{{o!e9?+xNf3@XJ@Z>>gY&EVav1&2d~1*_
zyiU1rF@aCo{^C;jxh-Giw6R&_90{MU7ia6R#^Cy&0K0v^RhRL#!&y61>>cc8z4ESo
zB2P|qkM_+gN=Wo|P1wLMK3e4utQ)p|EuP3!v-@qb@uL9_$#O;GG=~C8`XdT+hEF@E
z8#ZWlA$B+ecGMnko*VsU5Kk=c{~j2i!z-_1PV8ydJ`mI5%z~0&T!#OSp_$YR!C0uJ
zc<G7I31Zh5<DG0ek9CZY;lGtLXhSXX+4CO^Z?>Y?PZ3AzXUxBgSuAz@Ud@%!?inKH
zf7{_89l6Y?u=INF!^Pqq?mRp&oJHIay_}6{398cktVL`hyTp%=QK&PEsw<{KTp*w1
zvYpsoK{cLRq#!CVXX>5M5uSzBcYiovu{KOXtDBNpGBto)@DunhM;gi+B66V1NPZJo
zZSD7-zfg^rmsSk1;5=gdc=`vY36r^{I#X|U2&;pLmoZax$@-7N_0jBFY}H+1E<3nF
zwdcGAPY?@~BF67m5@p#FU8)(MaWdG;Kt&HnUC@EMNYm835DQ*KsFmnWaS%|_F4;lw
z2%+`4FT#03Z%mjrEYwT;vTHF^^|X0hNfir(?I4N3G&RIneS++#22*$Lde*+ruCW$V
z#Gy1Ruk)U@VnH>iVuT9PjC7UNt-<u85Vs@S?YZiSn6Ddop_(;s!E3~VQ>#SfOgAKs
zL`W55qNz$#AOlAG8TM%mn!G$OZ2)3{j+;aye=$L!8V4_}A!0$)wxx?depHD@x>A3v
z_zq64Mr#l7N;X<U-hxPU$aVp18fxf5hsKGidTCF#8=7kBB*oAR^%90CwMH|@ABzGB
zG^~Pj&oGk;clpRFMolvny$FUz#(BPOje*|6_1^4SlHnz2nk0MTNj2j&Cqwyb=wa=C
ztQTHP{*$zLvEXrtly&5&F>RrmKW~8xI;8AZ<nfq~pb^t`6%5XD8K~mCi%}avJg%8K
zs*#Fba2wL^UqXcHCG2Tx&kzghBE}<MNU|>r$)kQ_Ote&y;M*-;x~l8cC>_kjP5!!3
zIt-Ei6fu5!9^T5HxciM!(?o@n5;7Qkw9%ze+7E*dH<V#f3qvfnL?cRx@v}JNOV!jD
z{$fIfYWBPZC+LvYG4n;dG{t0y`z(}+o#9-ZIa7Eh#F$CbT>ZpcMS|I{C5&{+gh|s>
z{lrvdH=IG*ntYohv9tyT{ch}`t`e7OScyikQh%1X^^@GmqmF0K3f1uN3j)nv@pXOG
zz%8%eqwvc>RWIR8Q<Fw4ppH=M3*>T6h9rXKeo#O}3c8a3b7tyHquFk_2h<}4?>?4j
z1i^gWA<R9?)6E!7hHU(X!V^Mcs3GNhjt3t~aQk4D>IQE>%Wl@aK*5A!1S@1W9Muz@
zFI%*Q@nUK5<iX>NQajrb+(hh&1K(ho$&i7TLT?4J)JyQ9)I!Y;t%o2#kf<Pyvg8$k
zC6lRO1XxYCmL_2X$&gpGP+uY_A~ocjbQ7X6Q=J(s{Ffi5`78LKT^csMg&LXSD2qI`
z#?$OWg9@|<zhU5ENJ8~*CU;^>Cc~5%1I1zg?sseb<jRpa2QHoH*U&eUr((e+lR-))
zRKep`ZfH|gIl=6Sg4M9Ry$oi+Bk}fSC{#1WFF5I6m`F{8)W3$#E!YIzzRSZ-Q+pDu
z23*kSuY$O6`BDiqSSL}lwTN=rD)R!&WjS_1rEKbI+l*BQtTHDN7v062;SYVHZ|op#
z=n#ACf}P4$r)Arx03KWnb&_u#K4Aj0VRn!WLg*YdM7N@G4G<nF)c7b~g4Wc_5Bv@}
z88QrHij%=zdTV334ZlZ2t%gApQkc)hoH!CI>Zi5*QAku8SQjQL60ujppV?k|`l?mI
z;Kq||@bY)@4=>3Fv15v1IQTmAUARyUIZaIfu>dDxeEySXp)pe^uxz*(5~ZN&1N-D3
zOK^X}iZ&#Zd(3w#7$q5^Xt{f*g=(e(Tvqu=U)*n|SU?82O9UODfQ<a`Tp6M60+C3R
zh92T40Uy^{Ab1IN3z-%LoZC|(rc<QOw<kv6Qa{2fI7P5ox!5rH4ZS0RuKp^Q^l@1O
zKF&f1I2in7pph(R-3Nn0HH_E5NAax5Oi`<kC6gbO`jf<Wm~ZkgTCKDcX^FsP>A1}#
z{&W1h4@wiT5G+-0Vnknr;r?7ypfFd5`5Mca$uI0@tXSY+2Z2L}h+!98j>NheF_BuR
zL@u|QNBj!Q`{AZ+nK<9NoiK>uX4{-_R;KweXzf|~^OGy>g|hC=&SEontS$FgW6!?_
zoeakApDmAC;-dZ@{P}9&e$&b}vP)%Mr&z>Ev%GtG)}FBSvfL|zHNV2(9jWVl(BSJR
zl?$4jo)@GzQDWHT;f>?buiA0T1G5717i<*Emoaa&%=u8l=~G3<8KWaK7TWVFFLsg%
z4w?nGr%meH?9uDI`*-c4ITOiBrhEz+#vGN}cY?O{iYyh!HHpwIzclfC$uMbphfaq{
z9`=usqW<>j@eqtT<%t-}P}Og95F)*$yjtIWv(Nv+78vIM<Flf-NoF|-zlIGew?{VY
zih>6W9Lc?C=XbJQW{%9>E6wllSLoce#)?>0JES+R-~PT5sDv!t(Q`HNlq}WcX&Dhp
zZ_;QG%Q0Ul7Y=-5d$@dfQZ}Hi>zE?=peR%DmB5>C=u|6SJ4>YIG1zMQe#c`R!j;GR
zZqVpc)>FDK6a_pxxW~l%0#Opk9r+_;7VNC(M<a@l3&2x@pPo*q%+8NAI~()w3de9N
zy1LP|UO(P@@%NvyHoBx<6e$E(q2CJDG*3Mp{i0^s`vY^yzM4te`9cpE+g8r&Fau)~
z%cSKr+Vba<iQ$arH`_fQ2!ok$1zw*w=Kkt1RyW_?`xa*DeN<gqaf}|<zcxDAO@7&D
zG|8O1JQURFEP;sqNzc#c>qdtWd4Hdgh7du^Cxl?XKC0j`QJZP==jazvf&E6cqCD3u
zNQk|Q?FxjM(d%QJ!<FA~DGBFk>ushyw?Dp46h;cy!TwGQe8Kyz7|WEwQ{ypD^witJ
z4<+JZOd{%*6L<`D+j7}Uckt^Gd@lJlBm1+*j4C?Km|aIwY9-159ISipojFqD`v<S-
zcHFn$vGy)UbCxrWli#$wT^VJ5mifqKQcP$2$cNl<Il;zm$R%)4ZG~5rS-%J6H1#c_
zosp61$<n&r+F$v3JdvOg+Jdb+Bdq!P9J^5~PvwWF7iZlD<J{(PDnoWc=VQb{AjyP$
zeBh2ZFHkNNw}i^LzYgRwbmrlH%Le2IreM1J+W_R2K!)sa&pn@dgz8bk2zWs@pSw@b
zR3uvQiX5(Q$`1kq%V+Ox7cA%D;NCii6>M&qrvanm<}8jPd!(m!KeDva8?A&We3(7%
z{TQmJs&n<rrhl^K5!D?xr2Z89n)l)}fi78#-OXvYLG60!+q^Zc*qz@m0<JMB_!8*!
z^P(r8sFDh}apML@-iA^N<UeobjP4d+6*c-os8%BXbDmI+@Q9<I!~WC6^Iqds|8vEd
zo#B+MbB<(wOi?#Z_MwYm&Q0L;ijwVQUN5exa=o0Cir#K#R$#Lt`REQ`7~oXC*doLv
z#UmYePP$N5jo}zk9Xmc?L%&ytnl89#xSgfGxPQRi&{4i=4eGaP72wcDKT0zEdNr=Q
z5%<VL#ccR)opFg8dMX;F^Lstkw!QMht$Tjaf?2J8?B_eTQG)R9@%H8M5+Oa0U$0`%
zM-anD$TqOK0`_Zn_>&iqI+knL^%ez81VY4m@=<sw*-+o<+q)Dco<@`)5B)B5!5k7n
z79dnRv28pWB|d*wZ+k0wkz=GT#bRgEz>>_k<A_}|hk0_lJ+s`)PZ?<-wBGcxRX3dB
zu*`1)>2yuRLT8veRYF2d(CDI|<h}9C9Kkr1x3ZR4ixSfZvxvisCHG*tIekyAPtxu0
z)_!8jBA&YajSbc@jCqXT$~bxAy)Aw!=w)bJ(Lkb{W68Ngv_#Y{j5S;IcB*yz+^e&>
zExjSrJAO7);t4a&<aOzR4hi*_H60Pof>u)@{NChEeyyI7p;-Ig)%WnOBxP=jC9ha?
zJPx=i12w4}bKLVAlCe5ahYZfM4|G~A2bIaI<~>+qh82T}E~H*6b#C^5(26B1e=PmA
zK~5AKny1YXAUe^&^A2+-^+)b{hHvJH?VI?!!!7Nkx1Ua!v55nbSw(%>=WOPZ@2rMD
z9S2CgEF8aULLI(YAALIL_N5HMUa?6fxv<)Y=LhM*5y#Os2pFcPHL(=ODVrfT7V^~z
z><O-Z=3m3siv#JA{dw--Xc%LSExS3!3y^9ff@7848(;&x2ChWPX>!*EWx25TU31@>
zKc4qe^eo2`v;w~xL8N@glgBr|fdEglbb2n2U~<oaeB4(cJN{xXRy?BNJAS%6jOn5=
z;8qNr%b6w>Id)~i?ohO98a%|cObgi5LGH;?%u-7qdrUE<#2T&OXT<Z534MKc@_w}9
zVk3E4ar;xfd1Q^!1<3@}v_?wY>ZeQ*z^_pujE|tF2Ee=VV6G5}&uuv?JJ(yg2B1sm
zw+#;9TAuM<0=^pPEzOF9zIr~k5B1!bVwuExR4|V4+8+W=4%T~pUj4MR`9K)LKaq#(
z9&z4FvUk%SyZpD-e=PM5e)fMgJ!M!_&)0~kfP_m)OM`TGNvCv3cXu}e(!F#l-6=?S
zw}5naN|)6B@9yt?zs)oE?5R01cXrOXa~x%Zk_wu!#F_f#b>342sOLNKNFB+VtKaIs
z41>;<-&BsvNoST-kGxo@{}9diakw_cMY^BWMipJX@3aSr6E9jTUw!wwkUyd4jb3(0
z`+QS9*+HF0xXNy?e!}6EOi&jgi#Jy^ADX(^AFp~{147p^w4i@cX$z~2%rRiI(5{Hr
zjK^m0aR(x)L%V3Bxp@Z}nQ#8)#{{We^6^apV_RTso2em$%9pB}(Mj}1`?kHgmyx+$
zd*@IhK>rwit3{1bU-3Rm*TAP?*k1_8&+a|$T7{Eg0zW$NaDMse;ffQzj8v;+MvPo+
zNd|?(1$Poo0Nc<!m}CFJN1IsT@0`4|p#^g!;{dx2*7R<3;>~<VdtCdeZPqhVv#a@i
zC|U2w5a9r_=QG)Nz_wdvF29t*E!A*y=5faql>BR}13ZNwi*O*KGQNWIoRwvuMsAu_
zl~j*#mwPsR__M2K^)VfiGvU$I6MJ;n`#_!;SHD(s*`*o}`|uRn-F*W-oKptJ+x#W*
z@DwkenEI;WE!JPgj)cc&4`{6-v#|#qH(%eBnO>ar()mC#OIs~l57yFOUweEzSE_%D
z=jq`^742z1jKoEpT_A1Tp6MdQg|0B0&+=WcIXgOZ&t@w1192-;SC0yp<!FOi_QTm3
z%4hsb!=y+`PY*Kc=zrT?V@~}1-xK<MST+nPiL++`Bqdk1ROk~Y`7BKG3!7a%3H+9$
z)-%r|<2}x8m!||XtY1>f(;)s=naN!8*y7nU4w6-6p1*#UxTblhe_LZa;wx~JDVixu
z#J}ta3w2PKZ~37AjoxwC;7^%|XwtoY8>YX5UhPto!}=6eCuJh}%PAt83f>@v6vb2&
zDGk@2o$EV&8=o#dl4X*$#TJM4WjWsc(dbmgBM_PvJ{!KvX0q(G&wy#r_|jrS!tADB
zL8m1jy+GXiw+z{`R#Pu>3v6|6SaGy`=)Q^*s1*$nmseBP!E63%{IescX@gV&mu!0-
z{6&<AK#8X?H>R`Rnp^x}J#3gfOLm8U6)mQif67-#iMzK3lqA{Mwjk8Z!<u^$HtX>3
zjt4Een7_6pchSzlLTo4gZ(maLcOpC`Pcd1wj+Ehe0KSf-!&@*Ws+d2Q<B)ZF|2Kej
z>Bi@!3^#l3#UN*X=%qImXZX8pC5^@#*RFuP%cyk6i#h5$m){d8p^Gaz5s*H3A&#h(
z1y=+#!eH}16S^&2J)iQ<qqHO&F5wvoTvokM%kjTGB*7OknEk6s*0eaAD83feAu!14
z63WXy`R)ByeV&Ft&#Rn|6BHTU&35>Vqiw~_nR~&#d^?EwbF2&Cv3a_TVBFaO5MaE1
zF`p|2kg1!at-7|9oSZh+0{h4;?EuF2`pu#bOklNCo{Lb}!@L{s0yh(}9nhGqaHKs<
zPSbKFiA^ZH_RoW-N*?xHC!H{t6vL6^PeoiqNhqO??G<z*S`>Rx^@xV<9b6+U6Sx^R
zAi8u4oE#3^+yW<Chia{~J2ReOm5*ypsEsq)&DZ?RUz)Av>eNkD(XtYTUg}*+POfr$
zEDum>7!NAKsx0E2S=V+N8=pQc%8Y;_RGNE;DrgAX2j@vsKWY>Eb%ksQCN7iW{0%3Z
zJB!{Byk8<sog=XG+$8An^*=Wc0iz^QiP6co)}S}-Jn61Z+t1xptfC6=mFlbsc%Uvd
z<%o|Qe*1DMgx`}p=G&xW%Sv%{xQd;2?v=7h<YnrF<GVsa_p<ymznm&EOUwRt={oIe
z%9qY}!ZTf&%;Quy>awp3GLKgJGHGxRC`6q_Iv6myP~E9TLd<sSW4o5qHjc#yJGV1y
zNh1hCe(p5;)OT(_<lXVfnJSk0YXp#s_0ee@);}mqek-0Rtg}m%*UYN57~TVSTsqsU
zKRYV8i~VuesNl@+Hwo07BF<3=i|QK>qL)+WN`Le$^ypp*MpUy`i`Lt7-WDz1CenLf
zmph#1u#uxvHc8=jrEFaHIql5ABAI<caEg1!=rO!^cH*8qT>fG%midUHF5%mE<_R*)
z|E@;Pno9B37WZ!=g1Ea`_NdcAKpVeaLTOV(Hb}#~sB*FXJ&{p00yCu$SxYF`noHuc
z1JhgTMouR|8zBbHEPww`pYa)?p*^Pmq{F4h*ikwRm}tPnQgR&JVceNEd3h$H<N=?W
z;D32L^tt-r5mj_tpn;W@MH4<1+!C2S)=L<?Ab6tBzD>W%(~^cr_+oUhRF3Icax@<J
zxhF=$dKoVL3pr`oSYPa+`iu_4#<a6ZZZRlvlRfbXpSUu~<YdbAxGUe8oj@q$P!jf<
zeIVn9a1tsWs!AqCWCb|qi<|+sK>5%Xf9y|k@LCe@jt&0(1Y~;2ufZ3<ND4r<2uTw}
zc4KyCiXkY_A+>~11pY`oaNhgHE%!oBW-CHIJAjcqoP_2;dt8SEictA_{bn_ePMR!C
z`n%epC`@QZaapi-z>{o9RuD(tU`5w6W!~o)+8JcwN-BVY#$r@6&1+dWmE3uc%w^se
z<4ciZa|ndsZtAwd3aaxxL<5NkkIIp^&B+vxaWsOj%6biu3}n!36skgWWPpoxnR}-T
zwD6K}Y~a6RC4|*WKM_8FIaA&Y^+Ca!JN#-9JlvDljg^^g|9#FqLtv&ZaJEwntRzJe
zqGB3(8l{AiW;L^rSl)zZeSrShSm0(${l{+?1ZMJ)TbnMQ4sk2*<aN>9=1rjId}1Z#
z*N-3H<+Q(P76Pu;HSzg8pn$mHd8jS@LzcVY;#WGuZDV&c^UaB!MkM*QfTbLM!>0RQ
zvy1#XRji6%RTV26Zg>0nm*w6!wM!`hD#6R3i?A+?&cvv}H97L?T**Tgo@1&7*y3z@
zyJGD+f6$pBzy8tc`989VUw8?tGv5X80?&B~RdWNF-cHm0;OvfL3TWPmiN=IrUj}?;
zto)lRB@(vc5pk3Quhbs_Is&g-iD-}&NN&k2mkSZgp5wjbkYg>T6;YDm3iB7jx$<7A
z!$}KJZE-#m&_UNRH@ldDp$=K<@YBaOqdi^6RQOb^m6;+vc)GxRVyuqa9fdHcRUoW^
z$8of<DXxFq^;X!CqN%_o)Gj{EdvqmzQjQ&F+w;>9+e9`{w`$_(FV_t$`<73f^n%IH
z0H<k^^A+>Q_#RnVl9c4$cZm^~c?~dxCcv53a_R9J>s{Rm326i4Lqn8+c$LpFV|5_F
z3(`W1Q4$URi_xK3?MR0d(f}*6l7a25jbDwCGpY=LiOb#UZJ&6N{4`DVlH<kZ7e0}A
zCnx}bL+niL8Oxic4p|QHsNJ!HfJNjH+|2l75FG!<nAOctkp<?8q1Ugku(eD9aj+QG
zPQqYDUPInc7RX2o7<rC$QPjI&>bM6JbcRaG@_PWAr}O2EB-CRu_Rd2`5X*(ZUUF7x
zxq0FnNZWdcy9&ypmDGTZ{~VdH{0KEPr>&vfiEdi39CNgh)Gl9#79G4K$r?n!M_1PX
z8(b$^yR*Hi1alhni)J}&^#F>$aac|(PO?z9rck(<<PA`hoI;b{JDqWhfSQfR;LRUQ
zElY~OshI}}Cy_M#0huj+KBCo?cU8DfyWZ;Lnre?4Q9RiTg8bO(h5$D9hhJoh2r<Ih
z=zMh8yN1OMb0*4YLw(T|%(0^d)=1l}y-f(as;I}=a*IDPPNhcw@v8y8#R`;6jW%=}
zV8_>qI=OnfkGgle0Q!~={`Y2(h)Uc-h52u4uk9^~`!4QxsDbycKNG{3h2#?@IR1<!
z!V02{Gmdd58fEBmD2S^wo}x4$+Z}ft1|TW676ve1X}po<qmgeIYo~%*5V*?R6x=uC
z-`6=^@$?p~cIV$WNZz)B<uZ_tXat5_%Kav?CX)(3EqC5lH-LZ*CHXA4n>gk>O#Te{
zQe685s0mNSNbhm*vBDe+p&xso)d~?1Xqc2`wKc}`1GXBV^F5U2Ni~C+SU?^}xA0Mz
z&L@^rp2^EMB^OD*=$`3f0)G9)_S}`~c)_|GeW<G(-B3Xf(@$pD=kGU9cP^a;^1rEK
z%VS}lJ$x|#yHEGY?kpv?9H7{GK2`vt)OLHn(adY4vi*2BsofcTT|MX`_STQl>j$Xu
z1B;kNEB^qnICyS$bi!?j4V~)u6gUd&1l>e6ey-(K?i~jGUs2r`{Bn&nf8`vGS7l>_
zR$rKnWILz@V~OieLgz31<USllhP8p8%kjF4!6Scm*VIC}3(#iqqZbhknk9Co8oF|v
zS*%>kEx?mFbvn}iqB$CA&RCVINBKxX;p_YsF5IVi;tB6EH7KV%p8E}FoEMBH>C*Gx
zQ%%$5Td7&3D&d!=h|7-o4?Lb?O)1uo8dT%>>ywPSPtMC_?<fDLg{bvoraab#Y2#7N
zm64(BJ_gfpI8l=QYTOHUP19ca)cg6m3^)9rv_4ySa0!Y`{l7dsc~a7_`Lu_sqC2_o
zAz=(!gbsu%^!;SXT+(tCtPn@%x4`YH-ErZfXjPi)+4K+1E`nMDW8zmYv(LR;@utT-
zamLD}(<KsCEzoLM+5c!A<UMRh`00Iuh%!0GRPasF_TY{B3lrP@qT29hhSaL3pLL`{
zlFX;{IsAze`uDfZva5R`<W*l!T~fH_Q7xXyTVHy`o{d{G{b*s4tJ+@cQ5xZh{wpqr
znagqDN&T310`%Y#Y0!sAF?@TeY|n2&O)Q1*61jgq^bJ<0kF7dZ1Nu8EzaA!Q{QS`r
zMiCs!0-`QgPf0-sI1pJ#9v9PJD<LvPtOgg{=RQBFR&L%tEnERGF1bk#h!vsAxJ10~
z6k98pxPkwyN2xV_ZD@oH+-Ega486<slDF@Uo5JYy@-;(8-b4S%#KM#IVBZj%7?p;l
zNC9$^;JH#K{klo^Gr@J~Z^eRDn|FIJ<Aa3hbQYI);J{zub)TLq(BH(d(J0oZ>a6g5
z)e#PG`h1f$^kN$sncd_zEQL_GL^$BW*FU$RKB-2?gb(p*-!gsb*DqGRfL)JQ{}vaA
zJzgEQ+-%coYvWZ3YiL|sn_1IsVOu~t)MytLhvx%y>{#i)A{^Dn;{(+&T<8N@c_1Rb
z(4oDRa%V0Mt)OWKIn>sgX|<keH|n|9Z_1Kh8$a4G2AlqfWh)5CGA)_|ss#vAev$o>
z62~ZCn4TsGFIV7Es8`(iIXrTT{W(|$CufExUrV6Y<?<sWCD`>t<BTZR$}fmfr_RFs
z1oPzEnKJeW1nPGMR+D>`RetR6l}ephe_q!!S(@%54)u^Fp8w>&gcK{KvK?)1$GG&h
z!mC|Lx2#H#+^BESC<@nI$`Ax(dcL|4xHhec7G`XP&ni_f7C{!aGh~&garrhbNUOHO
zN$iJ-#rN??wk`kT>wTG|QhA%L4KAUF*Aw%p@Udl|3KRoF_7qEA@!5Rc;NoF<pK|*1
zMabHGChlDaE`h<_*yxJ=%Fn_-ND`@kB$7U(W@Knr@S0SE!q$#;v{%XMqlF)L_oiZB
z3)vzVO~lD6y;b~t#3kLaHYRRWKghSE&~s~JsZn&K^35vlVRX_%g<%gK#eN7yD?y7k
zMSNdGb!gXBL)|aMHeKZvsEo_>Z~2-LM$y$UO<vPa4$4*(cbTokB`Z$4>5Ku#%VoBq
z7}ap50#6Cm0adQ~=>7CF<xKPL_%Ss3`nBHP6bL`LS?blP$b-Dxd{-x%;jj6)%8wwK
zZ}Gj_Y-n~h1R#oVVxX<@qCJ@uMx@UPc*YNtCt<&NQe;2t!VP4i-&^!%!hbp4eUGBK
zm4n6(e%H%SG$ho<S+YveDxbFvxJP@Cq^$e+vZ3BWr{8v*jjK?dG<U8HAHE#Ng8yo`
zH$cuxF*x0KJ(J~~SQ9@_D?1<ZfHF2u;@j9A@p+|rb0h?%arM*8SfXHGKjC*f2Tvav
z=9P4E6p7V{F?(ac$jCdZy`=REO3I=+%U<(E$b1n5Si}AkBfiFx(l3K+f4YUEAJd#D
z(rBAw`3%K?aga^7Ms#B5m8L%BWM(e%zTuPcqDjnCATT$Q9D)mWYBbBLJEp<QQM^&8
z+U$<m>=OLMYx-%(kRv$Z$;<57c*$8On<&(saejr!5O>Wf<9d~cRL2Sfg89o9f!eTl
zC}M*agxggE$@mJQGYMTbJn9O@4=46zeWHF%eK#RCS$Ns@X`};~8z7w+59>sH#;mFA
zop-ISUlob|RymFxjGMVGggMqf;q_K$p5c#T6dOkw6*AqOLSN(P3QpIo<691_0U>iQ
zQYgCKy((83W3)WQ_tC$@d&kQ$Pa>cg&yD(nl&d)wMWV$@Ua*n%ts_9v&X$E3=$iUT
zHv{tiMT95=Jo=L@KD6?oH%SFKA5vyXZ5OLM=fjAPJULY%=oWzNXox+to=K4D;C3+u
zIszI0AaY?9@Rq;SZNapo+8x!MdF4_d(U{Z7S+~Thq}k<9i|^Ma<3Oph{8DPsMjWZq
zG{PIfvw6T&aNjE0!MNtoDUvg{IuN2-{91<)t;v9VS&<$c&s81e^VxSKuIVwqA9S4E
zsN$pFz&m1wuOKC7c0U`Kw{xQ%L>+Y#o=ah@+3L^s{{8raar*}*5>ta?;}e2B`JF;<
zU!2*1!7VNl2gX7=uQ_HA=A(J;nT|C6Z+Qtot44!`vt-PH5V5GVOKgwWctvtYn?bF0
zUvrVM-WeNNCwO}n3@aM56i;UvEcLVR5$B*J_0ALMTsr!PRe2bHJu7P3BpOx-1mUQX
z1sEXQ7uD21w>Z(~1poqKY(Yn#Sh&0Vsjvhu$bV!+eZvp$R)frGAV{2j533Nskw7e?
zV5|w~k|eVl90@dXfHzQU5&mujUlyK+9r4+67#Ail&BN50sHUl7ok&hN13m?8eWUz5
zS=R2q&h$+p_fh`i8Py0#tXLPqzN9W%WUTAv)~eZWFHMpl)I0kg$;g2Yw{}B2uep7&
zjpXyb+CZh|emo+ln>H38V$P!bIkF4snJxa|ihRAEt}A4-AJc!mkFKkb%sfiP+c0Sm
zpfJNHKMjLA_bR^6>$KXo2+p<fc-G3ThW}B@eVc#%V}uhvrf;D$gLLyO5TauO=J%wk
z=H=0<;oj5r3!o_nSi^9aNBvzu@M6Hozl-R!Z{roDY5sbLrE5k$9-UnObd<EQ{o{qB
z$-?hu%TFox2!v6g0)q9}q3<8}j5dpHsRCw3CL_d0`buQNx{;q%Ks7#CO>8k@f>Gt!
zib=~Xl4Kvm#}8$Ef^_;o4)pv>D>i_60=^N7QRL|T_D3y`Ru1AIJ8nbOk3+!bi_a|B
z?1%(aR|qQ<eUiDih{uKJ0Ho)AMdt#BN#lUT<E3n7VNku)>`N9&{y5_5Mh)(^ULaJ`
zeBq$HIx~bFtj;e<hf{DfLqLYcbT`r0lWNKG!<wr*T71Lx)0hA36ygR6sFvBc2;LNR
z>-b{i5D1ae(Jxzj(QF5pxQ7BA7-m+;Dn~fmG4PnzXEi0YZ<{VR#00#qmLS!1`=zM2
zpKi|ex+HV&T_K}n%<$`1H?<EPh~;51$`r(=r)mmN6AY(6;QDGOgkeLW)vgj~Cyi-C
zmRz{{q+{^PC6UY#B0hl(qbyZrLjv43FAj})wD-s0Ka~1o9J;hAHwjOdore{Xs=G1_
zlQ&)?{ngDQU5-SqbsKs0o<0%>=%xJ*r3M4lVNRa94tJ9ki&88h<XZ>y9g0ULexJEK
zxePH1jvI3LnRb-Rz(CwNk?j0@&~5a+flC$;u}Yr4D`05#5f&&CT56TF!)$@BwZq_q
z0FEvdpiCTq%Iu!-+Z9j_%E4_@@$b?dn&8|Mq3g;>=t3)PIq?S4rEL-m-$NQg*R={8
zCF6|g-W$w%cd895MFc<ObEaMs!;HUy552n$^G&H@j4}-lzQX2eg4hhOf{ypw(FG!9
zV1QOs230#K82hnkGyD(wCH6bbcz`XeGWQRcZ6vzXaI4;bssff&gmr5r585P48vZ|u
z?1uk)LQp4>{D{$}Ui={fY8I1rqXhG?ATkF&tX>-bmL8T(S$G1{bR;a0N-T38pm|LV
zcQX@ZH6?11<d`U;r2pXjlcpSQKB(dO!zeyYbvL(6PAXR($V`_Ipsd~)`Cgl>yqQ}j
z-l5d?kOCeWyh;jH6cEd4fVE~tU<WEQp~35X4l|XFt~eb4#PxND+cn831s#Vwlo+y*
zX@fysv~B!y__==ulfvExaL~zmVf#ciI#6nF<cn%)7G!d1<~vbJm#FOuF>(=9#XzbY
zRIB8-4sNaKd4l$5X1}dLD$Jj4tSYP0qmF<4`Zr9Kuw!9W!cZHWU_x%HBonMkP@r7w
zl>tF-QZG_DEXeV?{2-3FeaoeG+w$cDDWVpwf0%jQ5piUl2DnZHhx9Fn^)P#zs>QDd
z+6R<FEtij4<;v>;qqIv+3C}S)g&M`|to5onQ`E12FK1D1Czw-E@6?UXOI0HM4KU9Q
z&d}A~%1E3a_msf*yVn%;Nx<NxR?pqUAv@h}3lgzL=Hwy{(!z;S)J4fU+t!Yh+sEdn
zoA_csP<QWQW|}8sSBRWYBATiE#yVQU76D<3PWqUgkm7xw`oQqkRi+_DIEo5h(z$P)
zPL){3&ECNQZwLL!14=+in(?XYXrXU#4qGHMBwf#xYL*V0s!2I^zoLDPW+ZasJ*X{-
zOM^<cYGZRd8!P+{a#qzrZ!lSwc*WzTMs`my{MSWZdJRw5|L-8`n#z>B;fGOLHWyGo
zf@9EUoDylO_Q`{rcKU(=(#_B}rY#m6;3ms4e<|yTSY4cLbZJb#KsFFU*p2?M!y*;g
zP1HLQUOer)c6qVm5>jE8a+7QVPSAOF-uz~Oy)Bv3PR9Q6*Qp5`GMPTEcqOCK0bz=q
zxmhw`V{U{AI<=K=llam_MYg(>Ug<05ni1w<Zylr|m#`q#>kWMG+Y2~Q6+5;aD`*a;
z@x}nYE}2kf;x8ELcWymRv$rQ{xL;4abTqIzmXnF5T~|wGnfAR4<#owtGZfLp;R5ez
zw}S@xFz`m$gT^TJsvl0lqdKOeZMA1|X&h~$OqOS<)uVI$#t2pw*l=qll&mzgeYAw3
z+Sz>5zx$WzdvHkOs-@s(gb;_T?+B<vcb51k7XtGv>@MU^{g;d<yn<?y>#R<$hT|Z3
zzLXF<F|$*|5?XlCbqv-k-6u5>zCvK`u;}}gE=o+N>Gs*PcN>Dc73xY{z7~t`cN+Qt
zS?OP1)6D4h0et--c2bLp$ld&X!Ik6=c$N=BGj0J{)}mZw3$b>SVV&<9ztzz;{Ehk@
z)09IHFU>QvYUF^xNX`}GenL|1Y`-r-aT^j9DQ<wMBf{!w($$KBe}YTc4C2v{i}0jm
z*M+j#a#r*qkPkc5PU@mSADaSMc3oN7$)9}rZ>+(<_HR__*d3sp;FGc|fHv5zew3+E
z#d$wOtbLwC2P?U=fI_}!b|Bb23~eQqFo^+|22Ekz3EVIr>k`PP7HTJFH)B_)0fiH*
z70_nPA^IuGMZvK*K-0I5s3WoXkF$)TQN?{fq?gWOR#r(9zEN`B3w2cEi^IT~;wr_N
zA^q;d=Vm}hCSLZKO~Ef%v1?t(r~HNmogyV4@!(V9lAkXjn2Rg|F668%8rJSC-0&&!
z@haL;*z--moKt@62qg#?fOBSB!)V=nw#T(#Mb!~G%YEoD%x@y_#kstf?^N;K4>37U
z<WF_~sr(Cpk&-b~85O`O<Ra>HW>z)~(<cNcqMf$d*?(VRTd#R47|`eX=R9jv$Jk{A
zzSm)PV!LhML%eUOpv#WIW6F7wB%-(nKN&66Hxuh<kCST&sNdyj53G$uQai*|voRSN
zwkD)7Sb=lCkGM|zxWViDO1(vjkAg?TpPvl60Ia9Nw+%nuN(7=0MJIhJ3-1CoM*V5i
zAkFJMd~X?QGB{a8ByNbLBja=>ALQu;r}F|hztKsX#kqWhTg>j<$-n7e>>MzCD@esi
zO$GP8fblMIpRey-`QSZ4Nal6@{X6=hd*HKdGaJ0?_3T}t6h`}Y>wWB9McbzT;t7J)
zh5=TN(g#8SvYpg~Jr_yvWv2N=VA3pJ|98QZ4j&KpJu6FoN8ka+LmJ^e<C|v)jMPL%
zvxa(hXzCMEd{jKAKE8}lF`O(<vuQ=>EP%5!JdNo#oKR{99#3xj5v?vY_9--(4a3q2
zGL~12A9vJ=yXnOP>8$dJ60;L>S?Fdhyx~(4&WcoUkjpFM-Q;9imhGsa7;Bw%J4Qt4
zYygZ*(@#FV8%XPR^(}&*;md4+DF&AJzzIJ_W8$`)Hm>^^sJIn4u3GG9k7{9*p8<7R
zwVNNXA(poTllV<;^Gq;J|E4Qb*QAW86ICA3P?v%_WPaZsh6;lE7NCVRHc3t_sK}mt
zJD=@xuz99p!u3x}a$q7q-+H@)G_wHJ@5iR-QNaYJIO4+F#sHs*vewEex<Ty`RFx)_
zfmA*V<pgz^Sq170`GzhxWZksxfKowIc>@1A!-(JxmU^3Up!pRUI8Px<g^U^DEdRyc
zAFfyG$3QLpYOFif`ye0&96TDxe66-3`Y35K8-D*%4C>nv2oo1rnmOb<VKhPMZa7e|
zv?}L5erkfsVW3MubF5XkXDY9$ES$Y0eny&s@7WsjJiQJXr6$oMR}|-5GKvgcIlkmD
zXo!RJM+G8EfUH!=k@iql^tA>GN0DGNn2+$N3fB^TLZ_Lk{9a-h^zW|jw;0T`3I(s3
z*B%40xs+oDHE+2`Z`)mn0!G5D4+Xc!1IX&;Qk<mFcKAe2s+k2DfVj5c`ZSAFUJdZ1
zH$bQo1{fG0;{D0Zdo4BcojAF)lV?p>u<*<4h9GE6N%2rcqVYe`!h(wFjxU&F%D*RW
z+G+{~TyW*zllrqd<?X&5`$i~*hsfLCD;C`ogV)`|lOkni`EBAPzA>6WNbx||pQUzx
zr9KL@LBMPuXJB{@4SKSUSeH~J)gyF3A-?@qduocf5(fe!skp}2J!7>9Afczv+2m_j
zJb7tN{%JxU(?=|Xm<P_wDt#T3)zM}z3!cshXflv2n|#y@jb)kI%ZE&L$P&Y(C2EEj
zN>IYu;yuEn54oMlxIl{n-!$q}_lQYo6lGc3#d@dyM79$a#rtrV3sv`ENcoO7V!22B
z&C(i^f>|V>m-MycBXh(uH=sqqqMybxW&r6ik|WQcL6|zz^f%fq4xlyL0$LWQa?T&}
zkVkuo=UD7%KGKl<;h*dWS|T@9h85x*x8F-yqeX}y`WrH0=i*7z;Fqu9L46l{J_!+(
zV;@w<{ykx0JYSXT|1{|)WT>eS=hgr_<SUz@s2q+>CRn>Ro1k^zKd;rRo_q?kQH<+g
z%I>K&$7`QMtmt~jz=1pVGMQboiWOpU@x!0tIe({x>eP*-wCFvj0C_c7b?Nk+(o(8F
z9>X4l+np^14vA__^l$%7s|+Z7-&KqNrdq=ft$_&YU>PnlRMugCST^H7(#y$)ftk2o
z#WBI6@5TpvgOlM`^il-`;3O_8BfFJC8zA__%nWI(SzwpAh;HgV9wWk>Z6VFpDIh5y
zsQ&LNDslP`qgV3FTN<kB2vwlJfzu7biKVV8V4_kjPYb(9<rGPFVucK`o@CJU?9_UK
zI+~HO4&~CsreQPn*89H|8zEOftRzXYlUk-qyuyG61WOg!TU8iw)&k8OVVF2C)^>NX
zbw1Iq#67xK1<OD!*+jnYDkE4UR)&izJ(<WmtOv6()926w;gX83Gf=geWx;GP&@%zs
z6q<Ceb|!2^%Ai8V%||oBBwzcU6e4i?`Hpm9YmwlllW(IazXd3s`40;IpLZb$77++t
zw$eIfpsH<X?S+T=rKo-eL9lu}pxR3JtXsg*8lzBF)e&yLnH7TpMJ#ZgBA+0Qv7-XE
zr#jbZ2g4Zetni`gT@d+KZ>in%U&w&K7mQ$rhnd`JAT2VSnsv8Ey{RMvw7}~BH^fsP
z6SjRYy~}Nbr;{!qh$jU7oeGEUNW_R0v$3?qX;;EjTiXq*aR~u!ui7~~Dij6MLIJho
z6&%rvU|A6v<qoOEtG`KLBAd@sn%BwQ40C>mjSpC#!LWVv?OBPz<BI|!aL>wKyf)Fs
zG!WW7Jd;o`)&G(GjjMa|bIyYz9}K;JJ^Bz1%Z(I2TtK65BWSeYQ^0Ib7eW|X(A+4O
zPRt@n2xP|X`+to85Y&5sEam*2se=R>w3Qv712(#8je%%9xY0Hq0o9cbvc99JfooKq
zD68@Qzz|FW-Wl1xq~*#Ii==p1>F)6`v6`=bGQKTO27-IwD#s-#nDVPNWpqe<i*CYi
zb^S$_CVC;s6F+%9fq;>r@DS%U#PVz)oAnQ6Ghzdv*PH^El86;QfGOhG7#i5#DVNEE
zt!<qa-|~%V+e7{hkRH!e+bHJ{vrBK?QTXWwVyHdJSJzlBu-ZY{;s&nKb;cKGTeG-8
zyh#BEReXOB(lP|(ZB)%(Q-R7Wrt;{(6fna%6*GiCvF{6$!+0*n{&iDkZ(DGzn^cTK
z8HWlq>rp^b&$sQCDSl$6x=EcpdM7PsW%y_TSns``Sdq$l0TGugulVSp;d9Diafk!H
z%rTz`<JPq)5VjTJP3Csgun>=_GiD{9?wkTL<eAP~cowt5F+!PhJ`rZaU{tE48*GPl
zooSjCtab?G*OIn5FF@a&P1cg4qyaO$Q)olg>Ed-THicLpGil46fPb(`?)`cgU>?R2
zow1(Xi>P{PF(A-RfohqX8t#ooE)Tda#xMU{t^jO4APv=G3lP8zKC>BH?~7)AOd>gW
z!(r7BNT?3xF2P<;uhjQ}gc^O(ON0#=JGC+D-(XKhN}VJi1({@f!(E;!4?|t|cAvXz
zMOT`O;t5hg-S{AXVAeamBp{>70U(^xsXh7%OO#hxo2jSN>nD}@1o6ZAa;f$;`@Hat
z!-x8zI=Vob{oTj`d|Q|H&K}oXOWjLI%b+hh5!kFkYBga3A@z^Pi<H>_eRgoRl2c%j
zWs)PJQy}SODKtqwZu2=P*yS7o38oG-(1Ki13QYP)ZV%GK4A)2N<tWj`SIX!_V~p9o
zx4Xoi(A}SjXB=(IZ(9711KaWTc4^S}iJ>6AQd)RmBSr`=(C6&<Z-Y=)!X|1l6O}0H
z)HVk6FsVj3d#nrEAwVuq1&H`n`ml<_c0<SOTMXaSMgWcBt3eh3B{Gsqen1Zq;FCWC
z;gR#8dOM}Bv#~PF2`*1#|6r^F)Zq34&oOrW2XxoF>hsL1VIUrrNM6e#8>9{kYIw>_
z{4}ssY5AC25enlkS~;y5vHUAQ*vVY5Q4aQAG&6Hm5v<k$5Qccqu|y-Hyl6e;2zt)#
zjCc?9NILS3hlim<Zy2R?k68s&jg`F=xJ>F**N<1!k0W|Pg=aKXtR_*SS0Z)QTRbz;
z^NvsJQBI{;ZQ@lJ5hc5Lg}a`q!X1NUm|W%5H{g?vzGM{%8Pb@QlM+^6i@m<nYa;~>
zb94#e=ARZ6lsUv<<h~55yS`sBK*?7P{}ODdRm((6ho)k*_0{k`&i{`y3KjJ2TxQ#8
zNF<RhT&jXqmLSQiO|Fsy-xP6_qsq+hv(x)4?i9QJ{Q56$P31T|rxZM%sb6TdU<V#k
zikEA`2wRUCg>6JSgdo-Ij=Rf-ACU>(Q*SsSlADR23#9kCF})1KRq!i5mu#HGBh~!1
z;j6QPmEf5hC%;z+A4_A^-rB8KDeB!7Nvjxq`(55`JKDFCy!WQSDi{PUxU;>;y5;&i
zNPxJs--*ru9cVAn1-~}hm4{!!`CNgV9-YSJ@XI%g>#7r4dbi6<C!gy1(mbPiZ^{v<
z+?&FoBFtRvhSuHj%&6P_BDW{8*=zBkH3SOqh^J0i`0GOsO(%iBRm&Tc<Gahxwc956
z9>y4-kOhhkrH*XWzh?W(>1{z?zG5pi-&-bRb{N0n`s29u)$w%@US^S_1RCyp=F}3c
zpbu}N=x|4)GJR>CI`fS}dHVlM)mv2v5>sr1k3ag85*|Wq&mefdZ#MShU5ELMj)+X+
zkZ(_Y(npQn;ALCA^|zt=IrS;TT;ez&<XbY&AlwdN>M2zY2O6s|_$MTqx~7w~$*^n4
zsJ=5tjRsR)`(2dabRn)8eQM-t?Ydjbi`A)+ORmT`4X`4t7&uA70+lt15Tso*-(b)a
zLNF;(^-svjs4{Q#R~WW5#@mDg>?wnK>5m+cSC^2|u+wSiF+=ikke#>w^ZfQv?7P41
zM5d&vA6z=b`6R)=^l(0^9n|lB6nmT?wF+$ud2Mt2@It8!4_6TVGQrI(EI|t!-z<^J
zWyvW`uZUgitsg{x48o)FoJ_z_H_BJdS@@$voLL+EV?2MZBxy>j0_RIKgvG$VPYq<>
zPp%x0_Firv!HL!|emI???|3tIKC50rcgP=4*Io8WC!$1kBzN0#Cs!^<@eq`>XDi`Z
zk(eVJou!b(ushE`_Tn5ZI0DDPMsN44N5<+uCmv38XW`a9yei=KcMIV=d#zsbHseeB
zH@!jk%>_;tdOMjBhG1&gALWGw({!k>6ZAgLlq3j9Jl#2nDpUWif8(W-QRf?m9W`+3
z>J>z*O0MD@@|_}bX?IuI4d>>UFqrbPUy+>et@kv^(B=kXw1K&y{YQ!~PEF!yX26h}
z;!Caj%#ERWfVJc+-q_T^aWH-q<;4Aqy!kK7otk=H9!ZAg(l7fjR1cIAv-*glc7j?h
z)ZCKm4Cw8D?Y%WImwwZKVQU>MaZG>Er737mqaB(>`4TtMy7@KH{1?{18tx&hIurAA
z1M?<(!=aR3Bj!Uj-mHH)j3R|dGuGZ83#@F5IffNt+g|k-5r^BMF7kKmXp{}?yYMDy
zF-*&vD$xcdP~b=8&i(R)$i|Z)M{GWwsa~t(?~e&)jde0-aR~X}D3eVD33-bV3%E2>
zH-je^B-7uXew26mW_ci1$YnLA++1x@qJ&c}v3ct}-hxm5o*^w9@ty$ZejTaV%xpe3
zH(L3l>bY!=Q^kUDn<~(3&iUqhS>yzxPNf}p?m~^3B11Bl6y6pjjC~a7M*VyauMhOI
zk$ESxy}8OGiPCHx5UTM-j{ynOOLskuh5j`28`6{G&Oc6iro3-R3{};;`VXuOId7iU
zDw4d9N7%*pd81jcYni68a_k|vC+7NvA4T>Kx&M;a_@x_<aIx(3Seju|%_@j~I!fOw
zkuLup5{Q<`?ju;^hmY)~w0cq%c0H~5`{kw}UO03R<coenKC2Ma*K@QiYV^d8b=5R%
z%eZB(MHYpWu(%~H{V4Yq;oih?g6J*{2hk<eJoNLXxfaRqr(IXI#T3g3%)&Unw?#|9
z==Ya#^kEn~_DuV`CQ!c2Y2*4sHHA<)8WS0bJu-mNtE|;616n8@mrB*NH<(97IX}wm
zb<-lD&)O&o$B1A&1n*HZy@Nj6nmV?SEB|g5nvBvQyeA#VnI4#AX3!>=)fgZkR`@CP
zc2sbF^-MwAWvzO5jr)j;HM}FHBRCv)us6tgwK@onhm~>ePth^S@dH;_K-5%p+W=a3
x%~%O@&ufKXxje<vF`?K&{ct)>1)?;(_z&Mt^kT5|lewQh_^h<I+4|DL{SR(D2j~C*

diff --git a/core/src/main/resources/bedrock/block_palette.1_21_50.nbt b/core/src/main/resources/bedrock/block_palette.1_21_50.nbt
new file mode 100644
index 0000000000000000000000000000000000000000..7bff9ce8e1d86052f67c62985efdbb8eb8c08efe
GIT binary patch
literal 192451
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

literal 0
HcmV?d00001

diff --git a/core/src/main/resources/bedrock/creative_items.1_20_80.json b/core/src/main/resources/bedrock/creative_items.1_20_80.json
deleted file mode 100644
index 02feea34b..000000000
--- a/core/src/main/resources/bedrock/creative_items.1_20_80.json
+++ /dev/null
@@ -1,5812 +0,0 @@
-{
-    "items": [
-        {
-            "id": "minecraft:oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:birch_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jungle_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:acacia_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mangrove_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cherry_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_mosaic",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:crimson_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSE4JosCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCwBjb2JibGVzdG9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWTUvV6XCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEQBtb3NzeV9jb2JibGVzdG9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWT4opb2CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBwBncmFuaXRlCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQAMQTVCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBwBkaW9yaXRlCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQIbDOcCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCABhbmRlc2l0ZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSZKhusCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCQBzYW5kc3RvbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSp4zgCCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlDQByZWRfc2FuZHN0b25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRbqVHTCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCwBzdG9uZV9icmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRr0ZT/CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEQBtb3NzeV9zdG9uZV9icmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRnLis3CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBQBicmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQNLzfSCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlDABuZXRoZXJfYnJpY2sIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQ5h0xwCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEAByZWRfbmV0aGVyX2JyaWNrCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWS9J0B2CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCQBlbmRfYnJpY2sIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRPbkJeCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCgBwcmlzbWFyaW5lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:polished_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:mud_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:spruce_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:birch_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:jungle_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:acacia_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dark_oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mangrove_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cherry_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bamboo_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:nether_brick_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:warped_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWR+T9kTCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:spruce_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkEnw5egoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:birch_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWQL77/BCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:jungle_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkA1zgtgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:acacia_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkHg/kTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dark_oak_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWTwjOCeCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mangrove_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWSfweCSCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cherry_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lk/9bTZQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bamboo_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkzIpPywoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZDQzVbEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQsAaW5fd2FsbF9iaXQAAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:warped_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkkf+/3QoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:normal_stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mossy_cobblestone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:birch_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jungle_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:acacia_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mangrove_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cherry_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mossy_stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:polished_andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:red_nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:end_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:smooth_quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:purpur_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:dark_prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_bricks_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:polished_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:mud_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:wooden_door"
-        },
-        {
-            "id": "minecraft:spruce_door"
-        },
-        {
-            "id": "minecraft:birch_door"
-        },
-        {
-            "id": "minecraft:jungle_door"
-        },
-        {
-            "id": "minecraft:acacia_door"
-        },
-        {
-            "id": "minecraft:dark_oak_door"
-        },
-        {
-            "id": "minecraft:mangrove_door"
-        },
-        {
-            "id": "minecraft:cherry_door"
-        },
-        {
-            "id": "minecraft:bamboo_door"
-        },
-        {
-            "id": "minecraft:iron_door"
-        },
-        {
-            "id": "minecraft:crimson_door"
-        },
-        {
-            "id": "minecraft:warped_door"
-        },
-        {
-            "id": "minecraft:trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:birch_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:jungle_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:acacia_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:dark_oak_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cherry_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:bamboo_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:iron_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:warped_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:iron_bars",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:white_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:black_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brown_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:red_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:orange_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lime_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:green_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cyan_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:purple_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:pink_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:tinted_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:white_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:black_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brown_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:orange_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lime_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:green_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cyan_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:purple_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pink_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:ladder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:scaffolding",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWTkNl0JCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQwAc21vb3RoX3N0b25lAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkQJoxlgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNAUAc3RvbmUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWRHh04KCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQsAY29iYmxlc3RvbmUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkVRZB+woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhEAbW9zc3lfY29iYmxlc3RvbmUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:spruce_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:birch_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:jungle_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:acacia_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dark_oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mangrove_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cherry_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bamboo_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWQSiInOCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQsAc3RvbmVfYnJpY2sAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkoF89tgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNBEAbW9zc3lfc3RvbmVfYnJpY2sAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWSkoAE4CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQkAc2FuZHN0b25lAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkWfF7pgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNA0AY3V0X3NhbmRzdG9uZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkbKRChAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAc21vb3RoX3NhbmRzdG9uZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkBlrvqAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMg0AcmVkX3NhbmRzdG9uZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkRWFXuwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNBEAY3V0X3JlZF9zYW5kc3RvbmUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkom8neQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxQAc21vb3RoX3JlZF9zYW5kc3RvbmUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkd1ZaWgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMwcAZ3Jhbml0ZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkISH4iwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxAAcG9saXNoZWRfZ3Jhbml0ZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkqxEDMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMwcAZGlvcml0ZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkSYs86QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxAAcG9saXNoZWRfZGlvcml0ZQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkq6BU6goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMwgAYW5kZXNpdGUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkTSXY8AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxEAcG9saXNoZWRfYW5kZXNpdGUAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWQiYHKTCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQUAYnJpY2sAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWTk/0LfCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQwAbmV0aGVyX2JyaWNrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lk/hXQ7AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAcmVkX25ldGhlcl9icmljawADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkYJNxrwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMw8AZW5kX3N0b25lX2JyaWNrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIECQBuYW1lX2hhc2gAP8n+Ya6BWgMKAG5ldHdvcmtfaWRlj0/sCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQgPAHN0b25lX3NsYWJfdHlwZQYAcXVhcnR6AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkMae+2goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNA0Ac21vb3RoX3F1YXJ0egADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lk+kMHGAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMgYAcHVycHVyAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkKOSOMAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAcHJpc21hcmluZV9yb3VnaAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lk8igLCQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMg8AcHJpc21hcmluZV9kYXJrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkSFbyEwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAcHJpc21hcmluZV9icmljawADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:crimson_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:warped_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:deepslate_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mud_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brick_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:chiseled_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cracked_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:quartz_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWQ5kni1CgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQcAZGVmYXVsdAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWTDw813CgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQUAbW9zc3kAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWSTvQGECgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQcAY3JhY2tlZAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWQIM0OwCgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQgAY2hpc2VsZWQAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:end_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWSH021WCgYAc3RhdGVzCBUAcHJpc21hcmluZV9ibG9ja190eXBlBgBicmlja3MAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cracked_polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:gilded_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:chiseled_polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cracked_deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cracked_deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:chiseled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mossy_cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:smooth_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZB2wApMKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGUHAGRlZmF1bHQAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZB7E+eQKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGULAGhlaXJvZ2x5cGhzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZFQnDaEKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGUDAGN1dAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPO4A3IKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGUGAHNtb290aAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRhNYiFCgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWTqXJr1CgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlCwBoZWlyb2dseXBocwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWTQRGkFCgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlAwBjdXQAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWTvAHWDCgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlBgBzbW9vdGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coal_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dried_kelp_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:waxed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:emerald_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:diamond_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lapis_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:raw_iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:raw_copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:raw_gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZEupC1AKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQcAZGVmYXVsdAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZM97+l0KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQUAbGluZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZCbTfssKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQgAY2hpc2VsZWQICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZJss8V0KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQYAc21vb3RoCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWRFIsoGCgYAc3RhdGVzCBUAcHJpc21hcmluZV9ibG9ja190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWTDNWOvCgYAc3RhdGVzCBUAcHJpc21hcmluZV9ibG9ja190eXBlBABkYXJrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:slime",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:honey_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:honeycomb_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:hay_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:netherite_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:lodestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:white_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:black_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brown_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:red_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:orange_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:yellow_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lime_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:green_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cyan_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:purple_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:magenta_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:pink_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:white_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:black_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brown_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:orange_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:yellow_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lime_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:green_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cyan_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:purple_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:magenta_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pink_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:white_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:black_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brown_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:orange_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:yellow_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lime_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:green_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cyan_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:purple_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:magenta_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pink_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:white_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:black_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:brown_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:orange_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:yellow_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:lime_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:green_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cyan_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:light_blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:purple_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:magenta_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:pink_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:hardened_clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:white_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:black_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brown_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:red_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:orange_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:yellow_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lime_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:green_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cyan_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:purple_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:magenta_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:pink_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:white_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:silver_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gray_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:black_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brown_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:red_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:orange_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:yellow_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lime_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:green_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:cyan_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:purple_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:magenta_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:pink_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZLD8ox4KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQcAZGVmYXVsdAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZPSAFFsKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQUAbGluZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:packed_mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:mud_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:nether_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:shroomlight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:crimson_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:netherrack",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:smooth_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:soul_soil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWQmkQtoCgYAc3RhdGVzCAkAZGlydF90eXBlBgBub3JtYWwAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWQId9pLCgYAc3RhdGVzCAkAZGlydF90eXBlBgBjb2Fyc2UAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:farmland",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:grass_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:grass_path",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:podzol",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mycelium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:quartz_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:nether_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:ancient_debris",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:deepslate_iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:deepslate_copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:polished_diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:polished_andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:polished_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWTekU/mCgYAc3RhdGVzCAkAc2FuZF90eXBlBgBub3JtYWwAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWSTgcqmCgYAc3RhdGVzCAkAc2FuZF90eXBlAwByZWQAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cactus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stripped_birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stripped_dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stripped_mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stripped_crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWTok1JCCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkBDABzdHJpcHBlZF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkEALMfAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AQwAc3RyaXBwZWRfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stripped_cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stripped_crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:stripped_warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:stripped_bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:spruce_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:birch_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:jungle_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:acacia_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dark_oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:mangrove_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cherry_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:azalea_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:azalea_leaves_flowered",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:birch_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jungle_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:acacia_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mangrove_propagule",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cherry_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bee_nest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:wheat_seeds"
-        },
-        {
-            "id": "minecraft:pumpkin_seeds"
-        },
-        {
-            "id": "minecraft:melon_seeds"
-        },
-        {
-            "id": "minecraft:beetroot_seeds"
-        },
-        {
-            "id": "minecraft:torchflower_seeds"
-        },
-        {
-            "id": "minecraft:pitcher_pod"
-        },
-        {
-            "id": "minecraft:wheat"
-        },
-        {
-            "id": "minecraft:beetroot"
-        },
-        {
-            "id": "minecraft:potato"
-        },
-        {
-            "id": "minecraft:poisonous_potato"
-        },
-        {
-            "id": "minecraft:carrot"
-        },
-        {
-            "id": "minecraft:golden_carrot"
-        },
-        {
-            "id": "minecraft:apple"
-        },
-        {
-            "id": "minecraft:golden_apple"
-        },
-        {
-            "id": "minecraft:enchanted_golden_apple"
-        },
-        {
-            "id": "minecraft:melon_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:melon_slice"
-        },
-        {
-            "id": "minecraft:glistering_melon_slice"
-        },
-        {
-            "id": "minecraft:sweet_berries"
-        },
-        {
-            "id": "minecraft:glow_berries"
-        },
-        {
-            "id": "minecraft:pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:carved_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lit_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:honeycomb"
-        },
-        {
-            "id": "minecraft:tallgrass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRMAbWluZWNyYWZ0OnRhbGxncmFzcwQJAG5hbWVfaGFzaC3PXpAXXYswAwoAbmV0d29ya19pZOh33DMKBgBzdGF0ZXMIDwB0YWxsX2dyYXNzX3R5cGUEAGZlcm4AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:double_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRYAbWluZWNyYWZ0OmRvdWJsZV9wbGFudAQJAG5hbWVfaGFzaHVcUQvyXwGKAwoAbmV0d29ya19pZMx1sfgKBgBzdGF0ZXMIEQBkb3VibGVfcGxhbnRfdHlwZQQAZmVybgEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:tallgrass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRMAbWluZWNyYWZ0OnRhbGxncmFzcwQJAG5hbWVfaGFzaC3PXpAXXYswAwoAbmV0d29ya19pZErptfIKBgBzdGF0ZXMIDwB0YWxsX2dyYXNzX3R5cGUEAHRhbGwAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:double_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRYAbWluZWNyYWZ0OmRvdWJsZV9wbGFudAQJAG5hbWVfaGFzaHVcUQvyXwGKAwoAbmV0d29ya19pZAbadmIKBgBzdGF0ZXMIEQBkb3VibGVfcGxhbnRfdHlwZQUAZ3Jhc3MBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:nether_sprouts"
-        },
-        {
-            "id": "minecraft:fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dead_fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:dead_tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dead_fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:dead_tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:warped_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:yellow_flower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19mbG93ZXIECQBuYW1lX2hhc2jWbU1pF0OUGAMKAG5ldHdvcmtfaWQgO3hpCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:poppy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:blue_orchid",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:allium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:azure_bluet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:orange_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:white_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pink_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:oxeye_daisy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cornflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lily_of_the_valley",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:double_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRYAbWluZWNyYWZ0OmRvdWJsZV9wbGFudAQJAG5hbWVfaGFzaHVcUQvyXwGKAwoAbmV0d29ya19pZOemRt4KBgBzdGF0ZXMIEQBkb3VibGVfcGxhbnRfdHlwZQkAc3VuZmxvd2VyAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:double_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRYAbWluZWNyYWZ0OmRvdWJsZV9wbGFudAQJAG5hbWVfaGFzaHVcUQvyXwGKAwoAbmV0d29ya19pZOFugoEKBgBzdGF0ZXMIEQBkb3VibGVfcGxhbnRfdHlwZQcAc3lyaW5nYQEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:double_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRYAbWluZWNyYWZ0OmRvdWJsZV9wbGFudAQJAG5hbWVfaGFzaHVcUQvyXwGKAwoAbmV0d29ya19pZN4O+/gKBgBzdGF0ZXMIEQBkb3VibGVfcGxhbnRfdHlwZQQAcm9zZQEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:double_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRYAbWluZWNyYWZ0OmRvdWJsZV9wbGFudAQJAG5hbWVfaGFzaHVcUQvyXwGKAwoAbmV0d29ya19pZI3w4GMKBgBzdGF0ZXMIEQBkb3VibGVfcGxhbnRfdHlwZQcAcGFlb25pYQEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:pitcher_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pink_petals",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:wither_rose",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:torchflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:white_dye"
-        },
-        {
-            "id": "minecraft:light_gray_dye"
-        },
-        {
-            "id": "minecraft:gray_dye"
-        },
-        {
-            "id": "minecraft:black_dye"
-        },
-        {
-            "id": "minecraft:brown_dye"
-        },
-        {
-            "id": "minecraft:red_dye"
-        },
-        {
-            "id": "minecraft:orange_dye"
-        },
-        {
-            "id": "minecraft:yellow_dye"
-        },
-        {
-            "id": "minecraft:lime_dye"
-        },
-        {
-            "id": "minecraft:green_dye"
-        },
-        {
-            "id": "minecraft:cyan_dye"
-        },
-        {
-            "id": "minecraft:light_blue_dye"
-        },
-        {
-            "id": "minecraft:blue_dye"
-        },
-        {
-            "id": "minecraft:purple_dye"
-        },
-        {
-            "id": "minecraft:magenta_dye"
-        },
-        {
-            "id": "minecraft:pink_dye"
-        },
-        {
-            "id": "minecraft:ink_sac"
-        },
-        {
-            "id": "minecraft:glow_ink_sac"
-        },
-        {
-            "id": "minecraft:cocoa_beans"
-        },
-        {
-            "id": "minecraft:lapis_lazuli"
-        },
-        {
-            "id": "minecraft:bone_meal"
-        },
-        {
-            "id": "minecraft:vine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:weeping_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:twisting_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:waterlily",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:seagrass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:kelp"
-        },
-        {
-            "id": "minecraft:deadbush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:bamboo",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:snow",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:packed_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:blue_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:snow_layer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pointed_dripstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dripstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:moss_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:moss_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dirt_with_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:hanging_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:muddy_mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:big_dripleaf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:small_dripleaf_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spore_blossom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:flowering_azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:glow_lichen",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkCh8lSAoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHM/AAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:amethyst_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:budding_amethyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:amethyst_cluster",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:large_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:medium_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:small_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:calcite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:chicken"
-        },
-        {
-            "id": "minecraft:porkchop"
-        },
-        {
-            "id": "minecraft:beef"
-        },
-        {
-            "id": "minecraft:mutton"
-        },
-        {
-            "id": "minecraft:rabbit"
-        },
-        {
-            "id": "minecraft:cod"
-        },
-        {
-            "id": "minecraft:salmon"
-        },
-        {
-            "id": "minecraft:tropical_fish"
-        },
-        {
-            "id": "minecraft:pufferfish"
-        },
-        {
-            "id": "minecraft:brown_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkbdt3CAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw8AAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkSrMl9goGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cwAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:egg"
-        },
-        {
-            "id": "minecraft:sugar_cane"
-        },
-        {
-            "id": "minecraft:sugar"
-        },
-        {
-            "id": "minecraft:rotten_flesh"
-        },
-        {
-            "id": "minecraft:bone"
-        },
-        {
-            "id": "minecraft:web",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:spider_eye"
-        },
-        {
-            "id": "minecraft:mob_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:end_portal_frame",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkqXH7RgoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGUFAHN0b25lAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkeIBb6QoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGULAGNvYmJsZXN0b25lAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkDZ2cFQoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGULAHN0b25lX2JyaWNrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkOR/cTAoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGURAG1vc3N5X3N0b25lX2JyaWNrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkqdwlHAoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGUTAGNyYWNrZWRfc3RvbmVfYnJpY2sAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkFqqPggoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGUUAGNoaXNlbGVkX3N0b25lX2JyaWNrAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:infested_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:dragon_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:turtle_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sniffer_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:frog_spawn",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:pearlescent_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:verdant_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:ochre_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:chicken_spawn_egg"
-        },
-        {
-            "id": "minecraft:bee_spawn_egg"
-        },
-        {
-            "id": "minecraft:cow_spawn_egg"
-        },
-        {
-            "id": "minecraft:pig_spawn_egg"
-        },
-        {
-            "id": "minecraft:sheep_spawn_egg"
-        },
-        {
-            "id": "minecraft:wolf_spawn_egg"
-        },
-        {
-            "id": "minecraft:polar_bear_spawn_egg"
-        },
-        {
-            "id": "minecraft:ocelot_spawn_egg"
-        },
-        {
-            "id": "minecraft:cat_spawn_egg"
-        },
-        {
-            "id": "minecraft:mooshroom_spawn_egg"
-        },
-        {
-            "id": "minecraft:bat_spawn_egg"
-        },
-        {
-            "id": "minecraft:parrot_spawn_egg"
-        },
-        {
-            "id": "minecraft:rabbit_spawn_egg"
-        },
-        {
-            "id": "minecraft:llama_spawn_egg"
-        },
-        {
-            "id": "minecraft:horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:donkey_spawn_egg"
-        },
-        {
-            "id": "minecraft:mule_spawn_egg"
-        },
-        {
-            "id": "minecraft:skeleton_horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:tropical_fish_spawn_egg"
-        },
-        {
-            "id": "minecraft:cod_spawn_egg"
-        },
-        {
-            "id": "minecraft:pufferfish_spawn_egg"
-        },
-        {
-            "id": "minecraft:salmon_spawn_egg"
-        },
-        {
-            "id": "minecraft:dolphin_spawn_egg"
-        },
-        {
-            "id": "minecraft:turtle_spawn_egg"
-        },
-        {
-            "id": "minecraft:panda_spawn_egg"
-        },
-        {
-            "id": "minecraft:fox_spawn_egg"
-        },
-        {
-            "id": "minecraft:creeper_spawn_egg"
-        },
-        {
-            "id": "minecraft:enderman_spawn_egg"
-        },
-        {
-            "id": "minecraft:silverfish_spawn_egg"
-        },
-        {
-            "id": "minecraft:skeleton_spawn_egg"
-        },
-        {
-            "id": "minecraft:wither_skeleton_spawn_egg"
-        },
-        {
-            "id": "minecraft:stray_spawn_egg"
-        },
-        {
-            "id": "minecraft:slime_spawn_egg"
-        },
-        {
-            "id": "minecraft:spider_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_pigman_spawn_egg"
-        },
-        {
-            "id": "minecraft:husk_spawn_egg"
-        },
-        {
-            "id": "minecraft:drowned_spawn_egg"
-        },
-        {
-            "id": "minecraft:squid_spawn_egg"
-        },
-        {
-            "id": "minecraft:glow_squid_spawn_egg"
-        },
-        {
-            "id": "minecraft:cave_spider_spawn_egg"
-        },
-        {
-            "id": "minecraft:witch_spawn_egg"
-        },
-        {
-            "id": "minecraft:guardian_spawn_egg"
-        },
-        {
-            "id": "minecraft:elder_guardian_spawn_egg"
-        },
-        {
-            "id": "minecraft:endermite_spawn_egg"
-        },
-        {
-            "id": "minecraft:magma_cube_spawn_egg"
-        },
-        {
-            "id": "minecraft:strider_spawn_egg"
-        },
-        {
-            "id": "minecraft:hoglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:piglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:zoglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:piglin_brute_spawn_egg"
-        },
-        {
-            "id": "minecraft:goat_spawn_egg"
-        },
-        {
-            "id": "minecraft:axolotl_spawn_egg"
-        },
-        {
-            "id": "minecraft:warden_spawn_egg"
-        },
-        {
-            "id": "minecraft:allay_spawn_egg"
-        },
-        {
-            "id": "minecraft:frog_spawn_egg"
-        },
-        {
-            "id": "minecraft:tadpole_spawn_egg"
-        },
-        {
-            "id": "minecraft:trader_llama_spawn_egg"
-        },
-        {
-            "id": "minecraft:camel_spawn_egg"
-        },
-        {
-            "id": "minecraft:ghast_spawn_egg"
-        },
-        {
-            "id": "minecraft:blaze_spawn_egg"
-        },
-        {
-            "id": "minecraft:shulker_spawn_egg"
-        },
-        {
-            "id": "minecraft:vindicator_spawn_egg"
-        },
-        {
-            "id": "minecraft:evoker_spawn_egg"
-        },
-        {
-            "id": "minecraft:vex_spawn_egg"
-        },
-        {
-            "id": "minecraft:villager_spawn_egg"
-        },
-        {
-            "id": "minecraft:wandering_trader_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_villager_spawn_egg"
-        },
-        {
-            "id": "minecraft:phantom_spawn_egg"
-        },
-        {
-            "id": "minecraft:pillager_spawn_egg"
-        },
-        {
-            "id": "minecraft:ravager_spawn_egg"
-        },
-        {
-            "id": "minecraft:iron_golem_spawn_egg"
-        },
-        {
-            "id": "minecraft:snow_golem_spawn_egg"
-        },
-        {
-            "id": "minecraft:sniffer_spawn_egg"
-        },
-        {
-            "id": "minecraft:armadillo_spawn_egg"
-        },
-        {
-            "id": "minecraft:obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:crying_obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bedrock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:soul_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:magma",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:nether_wart"
-        },
-        {
-            "id": "minecraft:end_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:chorus_flower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:chorus_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:chorus_fruit"
-        },
-        {
-            "id": "minecraft:popped_chorus_fruit"
-        },
-        {
-            "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZF01rO0KBgBzdGF0ZXMICwBzcG9uZ2VfdHlwZQMAZHJ5AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZPiOc4QKBgBzdGF0ZXMICwBzcG9uZ2VfdHlwZQMAd2V0AAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkGnlaAwoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBABibHVlAQgAZGVhZF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkSnHuagoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBABwaW5rAQgAZGVhZF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkmkHyegoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBgBwdXJwbGUBCABkZWFkX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkdpUDxgoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yAwByZWQBCABkZWFkX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkYNWvYgoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBgB5ZWxsb3cBCABkZWFkX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkZSxBQgoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBABibHVlAQgAZGVhZF9iaXQBAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lklSTVqQoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBABwaW5rAQgAZGVhZF9iaXQBAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lk5fTYuQoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBgBwdXJwbGUBCABkZWFkX2JpdAEAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkwUjqBAoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yAwByZWQBCABkZWFkX2JpdAEAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoxTOVIjqYOYIDCgBuZXR3b3JrX2lkq4iWoQoGAHN0YXRlcwgLAGNvcmFsX2NvbG9yBgB5ZWxsb3cBCABkZWFkX2JpdAEAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sculk",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sculk_vein",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:sculk_catalyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sculk_shrieker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:calibrated_sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:reinforced_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:leather_helmet"
-        },
-        {
-            "id": "minecraft:chainmail_helmet"
-        },
-        {
-            "id": "minecraft:iron_helmet"
-        },
-        {
-            "id": "minecraft:golden_helmet"
-        },
-        {
-            "id": "minecraft:diamond_helmet"
-        },
-        {
-            "id": "minecraft:netherite_helmet"
-        },
-        {
-            "id": "minecraft:leather_chestplate"
-        },
-        {
-            "id": "minecraft:chainmail_chestplate"
-        },
-        {
-            "id": "minecraft:iron_chestplate"
-        },
-        {
-            "id": "minecraft:golden_chestplate"
-        },
-        {
-            "id": "minecraft:diamond_chestplate"
-        },
-        {
-            "id": "minecraft:netherite_chestplate"
-        },
-        {
-            "id": "minecraft:leather_leggings"
-        },
-        {
-            "id": "minecraft:chainmail_leggings"
-        },
-        {
-            "id": "minecraft:iron_leggings"
-        },
-        {
-            "id": "minecraft:golden_leggings"
-        },
-        {
-            "id": "minecraft:diamond_leggings"
-        },
-        {
-            "id": "minecraft:netherite_leggings"
-        },
-        {
-            "id": "minecraft:leather_boots"
-        },
-        {
-            "id": "minecraft:chainmail_boots"
-        },
-        {
-            "id": "minecraft:iron_boots"
-        },
-        {
-            "id": "minecraft:golden_boots"
-        },
-        {
-            "id": "minecraft:diamond_boots"
-        },
-        {
-            "id": "minecraft:netherite_boots"
-        },
-        {
-            "id": "minecraft:wooden_sword"
-        },
-        {
-            "id": "minecraft:stone_sword"
-        },
-        {
-            "id": "minecraft:iron_sword"
-        },
-        {
-            "id": "minecraft:golden_sword"
-        },
-        {
-            "id": "minecraft:diamond_sword"
-        },
-        {
-            "id": "minecraft:netherite_sword"
-        },
-        {
-            "id": "minecraft:wooden_axe"
-        },
-        {
-            "id": "minecraft:stone_axe"
-        },
-        {
-            "id": "minecraft:iron_axe"
-        },
-        {
-            "id": "minecraft:golden_axe"
-        },
-        {
-            "id": "minecraft:diamond_axe"
-        },
-        {
-            "id": "minecraft:netherite_axe"
-        },
-        {
-            "id": "minecraft:wooden_pickaxe"
-        },
-        {
-            "id": "minecraft:stone_pickaxe"
-        },
-        {
-            "id": "minecraft:iron_pickaxe"
-        },
-        {
-            "id": "minecraft:golden_pickaxe"
-        },
-        {
-            "id": "minecraft:diamond_pickaxe"
-        },
-        {
-            "id": "minecraft:netherite_pickaxe"
-        },
-        {
-            "id": "minecraft:wooden_shovel"
-        },
-        {
-            "id": "minecraft:stone_shovel"
-        },
-        {
-            "id": "minecraft:iron_shovel"
-        },
-        {
-            "id": "minecraft:golden_shovel"
-        },
-        {
-            "id": "minecraft:diamond_shovel"
-        },
-        {
-            "id": "minecraft:netherite_shovel"
-        },
-        {
-            "id": "minecraft:wooden_hoe"
-        },
-        {
-            "id": "minecraft:stone_hoe"
-        },
-        {
-            "id": "minecraft:iron_hoe"
-        },
-        {
-            "id": "minecraft:golden_hoe"
-        },
-        {
-            "id": "minecraft:diamond_hoe"
-        },
-        {
-            "id": "minecraft:netherite_hoe"
-        },
-        {
-            "id": "minecraft:bow"
-        },
-        {
-            "id": "minecraft:crossbow"
-        },
-        {
-            "id": "minecraft:arrow"
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:shield"
-        },
-        {
-            "id": "minecraft:cooked_chicken"
-        },
-        {
-            "id": "minecraft:cooked_porkchop"
-        },
-        {
-            "id": "minecraft:cooked_beef"
-        },
-        {
-            "id": "minecraft:cooked_mutton"
-        },
-        {
-            "id": "minecraft:cooked_rabbit"
-        },
-        {
-            "id": "minecraft:cooked_cod"
-        },
-        {
-            "id": "minecraft:cooked_salmon"
-        },
-        {
-            "id": "minecraft:bread"
-        },
-        {
-            "id": "minecraft:mushroom_stew"
-        },
-        {
-            "id": "minecraft:beetroot_soup"
-        },
-        {
-            "id": "minecraft:rabbit_stew"
-        },
-        {
-            "id": "minecraft:baked_potato"
-        },
-        {
-            "id": "minecraft:cookie"
-        },
-        {
-            "id": "minecraft:pumpkin_pie"
-        },
-        {
-            "id": "minecraft:cake"
-        },
-        {
-            "id": "minecraft:dried_kelp"
-        },
-        {
-            "id": "minecraft:fishing_rod"
-        },
-        {
-            "id": "minecraft:carrot_on_a_stick"
-        },
-        {
-            "id": "minecraft:warped_fungus_on_a_stick"
-        },
-        {
-            "id": "minecraft:snowball"
-        },
-        {
-            "id": "minecraft:shears"
-        },
-        {
-            "id": "minecraft:flint_and_steel"
-        },
-        {
-            "id": "minecraft:lead"
-        },
-        {
-            "id": "minecraft:clock"
-        },
-        {
-            "id": "minecraft:compass"
-        },
-        {
-            "id": "minecraft:recovery_compass"
-        },
-        {
-            "id": "minecraft:goat_horn"
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:empty_map"
-        },
-        {
-            "id": "minecraft:empty_map",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:saddle"
-        },
-        {
-            "id": "minecraft:leather_horse_armor"
-        },
-        {
-            "id": "minecraft:iron_horse_armor"
-        },
-        {
-            "id": "minecraft:golden_horse_armor"
-        },
-        {
-            "id": "minecraft:diamond_horse_armor"
-        },
-        {
-            "id": "minecraft:wolf_armor"
-        },
-        {
-            "id": "minecraft:trident"
-        },
-        {
-            "id": "minecraft:turtle_helmet"
-        },
-        {
-            "id": "minecraft:elytra"
-        },
-        {
-            "id": "minecraft:totem_of_undying"
-        },
-        {
-            "id": "minecraft:glass_bottle"
-        },
-        {
-            "id": "minecraft:experience_bottle"
-        },
-        {
-            "id": "minecraft:potion"
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:splash_potion"
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:lingering_potion"
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:spyglass"
-        },
-        {
-            "id": "minecraft:brush"
-        },
-        {
-            "id": "minecraft:stick"
-        },
-        {
-            "id": "minecraft:bed"
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:soul_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sea_pickle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:soul_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:white_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:orange_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:magenta_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:yellow_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:lime_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:pink_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cyan_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:purple_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:brown_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:green_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:red_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:black_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crafting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cartography_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:fletching_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:smithing_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:beehive",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:suspicious_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:suspicious_gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:campfire"
-        },
-        {
-            "id": "minecraft:soul_campfire"
-        },
-        {
-            "id": "minecraft:furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:blast_furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:smoker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:respawn_anchor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:brewing_stand"
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lk8Z3VowoGAHN0YXRlcwgGAGRhbWFnZQkAdW5kYW1hZ2VkCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkpiv8BAoGAHN0YXRlcwgGAGRhbWFnZRAAc2xpZ2h0bHlfZGFtYWdlZAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkFu+pdwoGAHN0YXRlcwgGAGRhbWFnZQwAdmVyeV9kYW1hZ2VkCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:grindstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:enchanting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:chiseled_bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lectern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cauldron"
-        },
-        {
-            "id": "minecraft:composter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:trapped_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:ender_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:barrel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:undyed_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:white_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:light_gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:black_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:brown_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:red_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:orange_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:yellow_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:lime_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:green_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:cyan_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:light_blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:purple_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:magenta_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:pink_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:armor_stand"
-        },
-        {
-            "id": "minecraft:noteblock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jukebox",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:music_disc_13"
-        },
-        {
-            "id": "minecraft:music_disc_cat"
-        },
-        {
-            "id": "minecraft:music_disc_blocks"
-        },
-        {
-            "id": "minecraft:music_disc_chirp"
-        },
-        {
-            "id": "minecraft:music_disc_far"
-        },
-        {
-            "id": "minecraft:music_disc_mall"
-        },
-        {
-            "id": "minecraft:music_disc_mellohi"
-        },
-        {
-            "id": "minecraft:music_disc_stal"
-        },
-        {
-            "id": "minecraft:music_disc_strad"
-        },
-        {
-            "id": "minecraft:music_disc_ward"
-        },
-        {
-            "id": "minecraft:music_disc_11"
-        },
-        {
-            "id": "minecraft:music_disc_wait"
-        },
-        {
-            "id": "minecraft:music_disc_otherside"
-        },
-        {
-            "id": "minecraft:music_disc_5"
-        },
-        {
-            "id": "minecraft:music_disc_pigstep"
-        },
-        {
-            "id": "minecraft:music_disc_relic"
-        },
-        {
-            "id": "minecraft:disc_fragment_5"
-        },
-        {
-            "id": "minecraft:glowstone_dust"
-        },
-        {
-            "id": "minecraft:glowstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:redstone_lamp",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:sea_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:oak_sign"
-        },
-        {
-            "id": "minecraft:spruce_sign"
-        },
-        {
-            "id": "minecraft:birch_sign"
-        },
-        {
-            "id": "minecraft:jungle_sign"
-        },
-        {
-            "id": "minecraft:acacia_sign"
-        },
-        {
-            "id": "minecraft:dark_oak_sign"
-        },
-        {
-            "id": "minecraft:mangrove_sign"
-        },
-        {
-            "id": "minecraft:cherry_sign"
-        },
-        {
-            "id": "minecraft:bamboo_sign"
-        },
-        {
-            "id": "minecraft:crimson_sign"
-        },
-        {
-            "id": "minecraft:warped_sign"
-        },
-        {
-            "id": "minecraft:oak_hanging_sign"
-        },
-        {
-            "id": "minecraft:spruce_hanging_sign"
-        },
-        {
-            "id": "minecraft:birch_hanging_sign"
-        },
-        {
-            "id": "minecraft:jungle_hanging_sign"
-        },
-        {
-            "id": "minecraft:acacia_hanging_sign"
-        },
-        {
-            "id": "minecraft:dark_oak_hanging_sign"
-        },
-        {
-            "id": "minecraft:mangrove_hanging_sign"
-        },
-        {
-            "id": "minecraft:cherry_hanging_sign"
-        },
-        {
-            "id": "minecraft:bamboo_hanging_sign"
-        },
-        {
-            "id": "minecraft:crimson_hanging_sign"
-        },
-        {
-            "id": "minecraft:warped_hanging_sign"
-        },
-        {
-            "id": "minecraft:painting"
-        },
-        {
-            "id": "minecraft:frame"
-        },
-        {
-            "id": "minecraft:glow_frame"
-        },
-        {
-            "id": "minecraft:honey_bottle"
-        },
-        {
-            "id": "minecraft:flower_pot"
-        },
-        {
-            "id": "minecraft:bowl"
-        },
-        {
-            "id": "minecraft:bucket"
-        },
-        {
-            "id": "minecraft:milk_bucket"
-        },
-        {
-            "id": "minecraft:water_bucket"
-        },
-        {
-            "id": "minecraft:lava_bucket"
-        },
-        {
-            "id": "minecraft:cod_bucket"
-        },
-        {
-            "id": "minecraft:salmon_bucket"
-        },
-        {
-            "id": "minecraft:tropical_fish_bucket"
-        },
-        {
-            "id": "minecraft:pufferfish_bucket"
-        },
-        {
-            "id": "minecraft:powder_snow_bucket"
-        },
-        {
-            "id": "minecraft:axolotl_bucket"
-        },
-        {
-            "id": "minecraft:tadpole_bucket"
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:skull"
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:beacon",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:bell",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:conduit",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stonecutter_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:coal"
-        },
-        {
-            "id": "minecraft:charcoal"
-        },
-        {
-            "id": "minecraft:diamond"
-        },
-        {
-            "id": "minecraft:iron_nugget"
-        },
-        {
-            "id": "minecraft:raw_iron"
-        },
-        {
-            "id": "minecraft:raw_gold"
-        },
-        {
-            "id": "minecraft:raw_copper"
-        },
-        {
-            "id": "minecraft:copper_ingot"
-        },
-        {
-            "id": "minecraft:iron_ingot"
-        },
-        {
-            "id": "minecraft:netherite_scrap"
-        },
-        {
-            "id": "minecraft:netherite_ingot"
-        },
-        {
-            "id": "minecraft:gold_nugget"
-        },
-        {
-            "id": "minecraft:gold_ingot"
-        },
-        {
-            "id": "minecraft:emerald"
-        },
-        {
-            "id": "minecraft:quartz"
-        },
-        {
-            "id": "minecraft:clay_ball"
-        },
-        {
-            "id": "minecraft:brick"
-        },
-        {
-            "id": "minecraft:netherbrick"
-        },
-        {
-            "id": "minecraft:prismarine_shard"
-        },
-        {
-            "id": "minecraft:amethyst_shard"
-        },
-        {
-            "id": "minecraft:prismarine_crystals"
-        },
-        {
-            "id": "minecraft:nautilus_shell"
-        },
-        {
-            "id": "minecraft:heart_of_the_sea"
-        },
-        {
-            "id": "minecraft:turtle_scute"
-        },
-        {
-            "id": "minecraft:armadillo_scute"
-        },
-        {
-            "id": "minecraft:phantom_membrane"
-        },
-        {
-            "id": "minecraft:string"
-        },
-        {
-            "id": "minecraft:feather"
-        },
-        {
-            "id": "minecraft:flint"
-        },
-        {
-            "id": "minecraft:gunpowder"
-        },
-        {
-            "id": "minecraft:leather"
-        },
-        {
-            "id": "minecraft:rabbit_hide"
-        },
-        {
-            "id": "minecraft:rabbit_foot"
-        },
-        {
-            "id": "minecraft:fire_charge"
-        },
-        {
-            "id": "minecraft:blaze_rod"
-        },
-        {
-            "id": "minecraft:blaze_powder"
-        },
-        {
-            "id": "minecraft:magma_cream"
-        },
-        {
-            "id": "minecraft:fermented_spider_eye"
-        },
-        {
-            "id": "minecraft:echo_shard"
-        },
-        {
-            "id": "minecraft:dragon_breath"
-        },
-        {
-            "id": "minecraft:shulker_shell"
-        },
-        {
-            "id": "minecraft:ghast_tear"
-        },
-        {
-            "id": "minecraft:slime_ball"
-        },
-        {
-            "id": "minecraft:ender_pearl"
-        },
-        {
-            "id": "minecraft:ender_eye"
-        },
-        {
-            "id": "minecraft:nether_star"
-        },
-        {
-            "id": "minecraft:end_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:lightning_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:end_crystal"
-        },
-        {
-            "id": "minecraft:paper"
-        },
-        {
-            "id": "minecraft:book"
-        },
-        {
-            "id": "minecraft:writable_book"
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQIAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQQAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQVAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQWAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQaAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQbAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQcAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQgAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQhAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:oak_boat"
-        },
-        {
-            "id": "minecraft:spruce_boat"
-        },
-        {
-            "id": "minecraft:birch_boat"
-        },
-        {
-            "id": "minecraft:jungle_boat"
-        },
-        {
-            "id": "minecraft:acacia_boat"
-        },
-        {
-            "id": "minecraft:dark_oak_boat"
-        },
-        {
-            "id": "minecraft:mangrove_boat"
-        },
-        {
-            "id": "minecraft:cherry_boat"
-        },
-        {
-            "id": "minecraft:bamboo_raft"
-        },
-        {
-            "id": "minecraft:oak_chest_boat"
-        },
-        {
-            "id": "minecraft:spruce_chest_boat"
-        },
-        {
-            "id": "minecraft:birch_chest_boat"
-        },
-        {
-            "id": "minecraft:jungle_chest_boat"
-        },
-        {
-            "id": "minecraft:acacia_chest_boat"
-        },
-        {
-            "id": "minecraft:dark_oak_chest_boat"
-        },
-        {
-            "id": "minecraft:mangrove_chest_boat"
-        },
-        {
-            "id": "minecraft:cherry_chest_boat"
-        },
-        {
-            "id": "minecraft:bamboo_chest_raft"
-        },
-        {
-            "id": "minecraft:rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:golden_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:detector_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:activator_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:minecart"
-        },
-        {
-            "id": "minecraft:chest_minecart"
-        },
-        {
-            "id": "minecraft:hopper_minecart"
-        },
-        {
-            "id": "minecraft:tnt_minecart"
-        },
-        {
-            "id": "minecraft:redstone"
-        },
-        {
-            "id": "minecraft:redstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:redstone_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:lever",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:wooden_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:birch_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jungle_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:acacia_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mangrove_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cherry_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:crimson_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:tripwire_hook",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:wooden_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:spruce_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:birch_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:jungle_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:acacia_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:mangrove_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:cherry_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:crimson_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:warped_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:stone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:light_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:heavy_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:polished_blackstone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:observer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:daylight_detector",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:repeater"
-        },
-        {
-            "id": "minecraft:comparator"
-        },
-        {
-            "id": "minecraft:hopper"
-        },
-        {
-            "id": "minecraft:dropper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:dispenser",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24DUBQBAA=="
-        },
-        {
-            "id": "minecraft:piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:sticky_piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:tnt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZCGfjU4KBgBzdGF0ZXMBFABhbGxvd191bmRlcndhdGVyX2JpdAABCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:name_tag"
-        },
-        {
-            "id": "minecraft:loom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:banner",
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 8,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 7,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 15,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 12,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 14,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 1,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 4,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 5,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 13,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 9,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 3,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 11,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 10,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 2,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 6,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 15,
-            "nbt_b64": "CgAAAwQAVHlwZQEAAAAA"
-        },
-        {
-            "id": "minecraft:creeper_banner_pattern"
-        },
-        {
-            "id": "minecraft:skull_banner_pattern"
-        },
-        {
-            "id": "minecraft:flower_banner_pattern"
-        },
-        {
-            "id": "minecraft:mojang_banner_pattern"
-        },
-        {
-            "id": "minecraft:field_masoned_banner_pattern"
-        },
-        {
-            "id": "minecraft:bordure_indented_banner_pattern"
-        },
-        {
-            "id": "minecraft:piglin_banner_pattern"
-        },
-        {
-            "id": "minecraft:globe_banner_pattern"
-        },
-        {
-            "id": "minecraft:angler_pottery_sherd"
-        },
-        {
-            "id": "minecraft:archer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:arms_up_pottery_sherd"
-        },
-        {
-            "id": "minecraft:blade_pottery_sherd"
-        },
-        {
-            "id": "minecraft:brewer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:burn_pottery_sherd"
-        },
-        {
-            "id": "minecraft:danger_pottery_sherd"
-        },
-        {
-            "id": "minecraft:explorer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:friend_pottery_sherd"
-        },
-        {
-            "id": "minecraft:heart_pottery_sherd"
-        },
-        {
-            "id": "minecraft:heartbreak_pottery_sherd"
-        },
-        {
-            "id": "minecraft:howl_pottery_sherd"
-        },
-        {
-            "id": "minecraft:miner_pottery_sherd"
-        },
-        {
-            "id": "minecraft:mourner_pottery_sherd"
-        },
-        {
-            "id": "minecraft:plenty_pottery_sherd"
-        },
-        {
-            "id": "minecraft:prize_pottery_sherd"
-        },
-        {
-            "id": "minecraft:sheaf_pottery_sherd"
-        },
-        {
-            "id": "minecraft:shelter_pottery_sherd"
-        },
-        {
-            "id": "minecraft:skull_pottery_sherd"
-        },
-        {
-            "id": "minecraft:snort_pottery_sherd"
-        },
-        {
-            "id": "minecraft:netherite_upgrade_smithing_template"
-        },
-        {
-            "id": "minecraft:sentry_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:vex_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:wild_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:coast_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:dune_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:wayfinder_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:shaper_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:raiser_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:host_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:ward_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:silence_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:tide_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:snout_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:rib_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:eye_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:spire_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwAAAAAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAABwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAIBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAHBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAPBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAMBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAOBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAABBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAEBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAFBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAANBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAJBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAADBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAALBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAKBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAACBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAGBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_star",
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yIR0d/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 8,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yUk9H/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 7,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yl52d/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 15,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y8PDw/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 12,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y2rM6/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 14,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yHYD5/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 1,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yJi6w/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 4,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqkQ8/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 5,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yuDKJ/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 13,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yvU7H/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 9,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqovz/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 3,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yMlSD/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 11,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yPdj+/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 10,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yH8eA/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 2,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yFnxe/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 6,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9ynJwW/wA="
-        },
-        {
-            "id": "minecraft:chain"
-        },
-        {
-            "id": "minecraft:target",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbgNQFAEA"
-        },
-        {
-            "id": "minecraft:decorated_pot",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uA1AUAQA="
-        },
-        {
-            "id": "minecraft:lodestone_compass"
-        },
-        {
-            "id": "minecraft:wither_spawn_egg"
-        },
-        {
-            "id": "minecraft:ender_dragon_spawn_egg"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/creative_items.1_21_0.json b/core/src/main/resources/bedrock/creative_items.1_21_0.json
deleted file mode 100644
index 4bd0ab60e..000000000
--- a/core/src/main/resources/bedrock/creative_items.1_21_0.json
+++ /dev/null
@@ -1,6214 +0,0 @@
-{
-    "items": [
-        {
-            "id": "minecraft:oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:birch_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jungle_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cherry_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_mosaic",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSE4JosCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCwBjb2JibGVzdG9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWTUvV6XCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEQBtb3NzeV9jb2JibGVzdG9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWT4opb2CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBwBncmFuaXRlCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQAMQTVCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBwBkaW9yaXRlCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQIbDOcCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCABhbmRlc2l0ZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSZKhusCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCQBzYW5kc3RvbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSp4zgCCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlDQByZWRfc2FuZHN0b25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRbqVHTCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCwBzdG9uZV9icmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRr0ZT/CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEQBtb3NzeV9zdG9uZV9icmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRnLis3CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBQBicmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQNLzfSCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlDABuZXRoZXJfYnJpY2sIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQ5h0xwCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEAByZWRfbmV0aGVyX2JyaWNrCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWS9J0B2CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCQBlbmRfYnJpY2sIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRPbkJeCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCgBwcmlzbWFyaW5lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:polished_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:mud_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:spruce_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:birch_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:jungle_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:acacia_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cherry_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:nether_brick_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:warped_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWR+T9kTCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:spruce_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkEnw5egoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:birch_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWQL77/BCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:jungle_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkA1zgtgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:acacia_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkHg/kTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWTwjOCeCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWSfweCSCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cherry_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lk/9bTZQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkzIpPywoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZDQzVbEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQsAaW5fd2FsbF9iaXQAAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:warped_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkkf+/3QoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:normal_stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mossy_cobblestone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:birch_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jungle_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cherry_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mossy_stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:polished_andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:red_nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:end_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:purpur_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dark_prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_bricks_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:polished_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:mud_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:wooden_door"
-        },
-        {
-            "id": "minecraft:spruce_door"
-        },
-        {
-            "id": "minecraft:birch_door"
-        },
-        {
-            "id": "minecraft:jungle_door"
-        },
-        {
-            "id": "minecraft:acacia_door"
-        },
-        {
-            "id": "minecraft:dark_oak_door"
-        },
-        {
-            "id": "minecraft:mangrove_door"
-        },
-        {
-            "id": "minecraft:cherry_door"
-        },
-        {
-            "id": "minecraft:bamboo_door"
-        },
-        {
-            "id": "minecraft:iron_door"
-        },
-        {
-            "id": "minecraft:crimson_door"
-        },
-        {
-            "id": "minecraft:warped_door"
-        },
-        {
-            "id": "minecraft:trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:birch_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:jungle_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:acacia_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dark_oak_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cherry_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:bamboo_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:iron_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:warped_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:iron_bars",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:white_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:black_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brown_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:red_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:orange_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lime_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:green_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:purple_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:pink_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:tinted_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:white_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:black_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brown_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:orange_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lime_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:green_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cyan_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:purple_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pink_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:ladder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:scaffolding",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_stone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkQJoxlgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNAUAc3RvbmUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoBAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2h5CXtW7vlQVgMKAG5ldHdvcmtfaWRDGyj2CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkVRZB+woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhEAbW9zc3lfY29iYmxlc3RvbmUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:spruce_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:birch_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:jungle_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:acacia_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cherry_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2js6EexuKuzrQMKAG5ldHdvcmtfaWRSsMxaCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkoF89tgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNBEAbW9zc3lfc3RvbmVfYnJpY2sAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV9zbGFiBAkAbmFtZV9oYXNo/GMI0MZnrhsDCgBuZXR3b3JrX2lkFP8WmwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkWfF7pgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNA0AY3V0X3NhbmRzdG9uZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkbKRChAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAc21vb3RoX3NhbmRzdG9uZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkBlrvqAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMg0AcmVkX3NhbmRzdG9uZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkRWFXuwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNBEAY3V0X3JlZF9zYW5kc3RvbmUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkom8neQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxQAc21vb3RoX3JlZF9zYW5kc3RvbmUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkd1ZaWgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMwcAZ3Jhbml0ZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkISH4iwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxAAcG9saXNoZWRfZ3Jhbml0ZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkqxEDMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMwcAZGlvcml0ZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkSYs86QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxAAcG9saXNoZWRfZGlvcml0ZQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkq6BU6goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMwgAYW5kZXNpdGUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkTSXY8AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMxEAcG9saXNoZWRfYW5kZXNpdGUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3NsYWIECQBuYW1lX2hhc2hO/Da4jU2v4wMKAG5ldHdvcmtfaWRG/qphCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:nether_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja19zbGFiBAkAbmFtZV9oYXNonymoa2zbbqMDCgBuZXR3b3JrX2lkquvR1QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lk/hXQ7AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAcmVkX25ldGhlcl9icmljawADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab3",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIzBAkAbmFtZV9oYXNoMw3274NQmpMDCgBuZXR3b3JrX2lkYJNxrwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMw8AZW5kX3N0b25lX2JyaWNrAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:quartz_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrBAAACAQAbmFtZRUAbWluZWNyYWZ0OnF1YXJ0el9zbGFiBAkAbmFtZV9oYXNo9JMj3upfsbwDCgBuZXR3b3JrX2lkn2g2VAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone_block_slab4",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWI0BAkAbmFtZV9oYXNoNA3274NQmpMDCgBuZXR3b3JrX2lkMae+2goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfNA0Ac21vb3RoX3F1YXJ0egADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lk+kMHGAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMgYAcHVycHVyAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkKOSOMAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAcHJpc21hcmluZV9yb3VnaAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lk8igLCQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMg8AcHJpc21hcmluZV9kYXJrAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stone_block_slab2",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lX2Jsb2NrX3NsYWIyBAkAbmFtZV9oYXNoMg3274NQmpMDCgBuZXR3b3JrX2lkSFbyEwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20IEQBzdG9uZV9zbGFiX3R5cGVfMhAAcHJpc21hcmluZV9icmljawADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:crimson_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:warped_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:deepslate_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mud_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brick_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cracked_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:quartz_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWQ5kni1CgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQcAZGVmYXVsdAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWTDw813CgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQUAbW9zc3kAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWSTvQGECgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQcAY3JhY2tlZAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stonebrick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRQAbWluZWNyYWZ0OnN0b25lYnJpY2sECQBuYW1lX2hhc2ii9DAAVXKptwMKAG5ldHdvcmtfaWQIM0OwCgYAc3RhdGVzCBAAc3RvbmVfYnJpY2tfdHlwZQgAY2hpc2VsZWQAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:end_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWSH021WCgYAc3RhdGVzCBUAcHJpc21hcmluZV9ibG9ja190eXBlBgBicmlja3MAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cracked_polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:gilded_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cracked_deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cracked_deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mossy_cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:smooth_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZB2wApMKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGUHAGRlZmF1bHQAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZB7E+eQKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGULAGhlaXJvZ2x5cGhzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZFQnDaEKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGUDAGN1dAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPO4A3IKBgBzdGF0ZXMIDwBzYW5kX3N0b25lX3R5cGUGAHNtb290aAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRhNYiFCgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWTqXJr1CgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlCwBoZWlyb2dseXBocwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWTQRGkFCgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlAwBjdXQAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWTvAHWDCgYAc3RhdGVzCA8Ac2FuZF9zdG9uZV90eXBlBgBzbW9vdGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:coal_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dried_kelp_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:copper_door"
-        },
-        {
-            "id": "minecraft:copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXBAAACAQAbmFtZRkAbWluZWNyYWZ0OmNvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO9fXio+svKVAwoAbmV0d29ya19pZMCoRjEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AwAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaC/JEFOWnmEcAwoAbmV0d29ya19pZC6YiiMKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:exposed_copper_door"
-        },
-        {
-            "id": "minecraft:exposed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYBAAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoYhDFUysN7qUDCgBuZXR3b3JrX2lkMzwGJgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQABAAACAQAbmFtZR4AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNolFIBYLYU0IcDCgBuZXR3b3JrX2lk4UqptAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:weathered_copper_door"
-        },
-        {
-            "id": "minecraft:weathered_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZBAAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2hFnEC282a1tgMKAG5ldHdvcmtfaWTk70oiCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:weathered_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBBAAACAQAbmFtZSAAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2jB3o8enlv1RgMKAG5ldHdvcmtfaWRih2pOCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:oxidized_copper_door"
-        },
-        {
-            "id": "minecraft:oxidized_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaBAAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaOJpG/XFexVwAwoAbmV0d29ya19pZPhi0J4KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:oxidized_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCBAAACAQAbmFtZR8AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaBRfNhyndve7AwoAbmV0d29ya19pZKY2cnEKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbBAAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO0JUKUHqNU6AwoAbmV0d29ya19pZJC3ZuMKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDBAAACAQAbmFtZRwAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaDmC92M2RO+HAwoAbmV0d29ya19pZH4og2AKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcBAAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoBHHxCpkUzpgDCgBuZXR3b3JrX2lkw2XBGQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNoWmd6B+hWwiEDCgBuZXR3b3JrX2lk8d4ZQwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdBAAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2gH9Fi3JCF4egMKAG5ldHdvcmtfaWRkGU6TCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFBAAACAQAbmFtZSYAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2hXfilVFDAiYQMKAG5ldHdvcmtfaWQqTGC1CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeBAAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaNA/q9qAy6Z9AwoAbmV0d29ya19pZDgExS8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaEbeMT605GP4AwoAbmV0d29ya19pZOZjpkkKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3AwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaIsW5pmpJEuQAwoAbmV0d29ya19pZHetwrkKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:exposed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4AwAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoOvrLJ0UowbgDCgBuZXR3b3JrX2lkZj7cPwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:weathered_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5AwAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hh+42XlsWvGAMKAG5ldHdvcmtfaWS7Cy59CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6AwAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaLpTIsnfluiCAwoAbmV0d29ya19pZB9/jS8KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AwAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaFnXvXY5OinzAwoAbmV0d29ya19pZAcKtHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AwAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoHJdq+Pph6hMDCgBuZXR3b3JrX2lkdge7IAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AwAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaMj49OvlTpgCAwoAbmV0d29ya19pZN/r+roKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AwAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hzuO+Sg9LYQwMKAG5ldHdvcmtfaWQ7AN7iCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcHBlcl9idWxiBAkAbmFtZV9oYXNo41TimHOsMWcDCgBuZXR3b3JrX2lkJnZvAgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:exposed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIBAAACAQAbmFtZR0AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2g++f1wYLLCrAMKAG5ldHdvcmtfaWRLdMmGCgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:weathered_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJBAAACAQAbmFtZR8AbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMEtsYfwRTXlAwoAbmV0d29ya19pZAp51LQKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKBAAACAQAbmFtZR4AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNovnrBQZs8nDIDCgBuZXR3b3JrX2lkPsj0AAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLBAAACAQAbmFtZRsAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoGTg6TYllMiIDCgBuZXR3b3JrX2lk9m0WhgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMBAAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2gI6xkPcvBDVwMKAG5ldHdvcmtfaWR7BRcACgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMsUnmp3/VqVAwoAbmV0d29ya19pZEoworoKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoBFKxY3fjVq4DCgBuZXR3b3JrX2lkzrJ6aAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:emerald_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:diamond_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lapis_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:raw_iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:raw_copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:raw_gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZEupC1AKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQcAZGVmYXVsdAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZM97+l0KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQUAbGluZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZCbTfssKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQgAY2hpc2VsZWQICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZJss8V0KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQYAc21vb3RoCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWRFIsoGCgYAc3RhdGVzCBUAcHJpc21hcmluZV9ibG9ja190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWTDNWOvCgYAc3RhdGVzCBUAcHJpc21hcmluZV9ibG9ja190eXBlBABkYXJrAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:slime",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:honey_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:honeycomb_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:hay_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:netherite_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:lodestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:white_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:black_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brown_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:red_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:orange_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:yellow_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lime_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:green_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:purple_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:magenta_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:pink_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:white_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:black_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brown_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:orange_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lime_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:green_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cyan_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:purple_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pink_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:white_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:black_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brown_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:orange_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lime_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:green_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cyan_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:purple_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pink_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:white_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:black_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:brown_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:orange_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:yellow_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:lime_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:green_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cyan_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:light_blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:purple_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:magenta_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:pink_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:hardened_clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:white_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:black_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brown_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:red_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:orange_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:yellow_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lime_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:green_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:purple_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:magenta_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:pink_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:white_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:silver_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gray_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:black_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brown_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:red_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:orange_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:yellow_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lime_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:green_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:purple_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:magenta_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:pink_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZLD8ox4KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQcAZGVmYXVsdAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZPSAFFsKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQUAbGluZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:packed_mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:mud_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:nether_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:shroomlight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:crimson_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:netherrack",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:smooth_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:soul_soil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWQmkQtoCgYAc3RhdGVzCAkAZGlydF90eXBlBgBub3JtYWwAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWQId9pLCgYAc3RhdGVzCAkAZGlydF90eXBlBgBjb2Fyc2UAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:farmland",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:grass_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:grass_path",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:podzol",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mycelium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:quartz_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:nether_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:ancient_debris",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:deepslate_iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWTekU/mCgYAc3RhdGVzCAkAc2FuZF90eXBlBgBub3JtYWwAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWSTgcqmCgYAc3RhdGVzCAkAc2FuZF90eXBlAwByZWQAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cactus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stripped_birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stripped_dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stripped_mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stripped_crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWTok1JCCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkBDABzdHJpcHBlZF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkEALMfAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AQwAc3RyaXBwZWRfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stripped_cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:stripped_warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:stripped_bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:spruce_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:birch_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:jungle_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:acacia_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cherry_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:azalea_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:azalea_leaves_flowered",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:birch_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jungle_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_propagule",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cherry_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bee_nest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:wheat_seeds"
-        },
-        {
-            "id": "minecraft:pumpkin_seeds"
-        },
-        {
-            "id": "minecraft:melon_seeds"
-        },
-        {
-            "id": "minecraft:beetroot_seeds"
-        },
-        {
-            "id": "minecraft:torchflower_seeds"
-        },
-        {
-            "id": "minecraft:pitcher_pod"
-        },
-        {
-            "id": "minecraft:wheat"
-        },
-        {
-            "id": "minecraft:beetroot"
-        },
-        {
-            "id": "minecraft:potato"
-        },
-        {
-            "id": "minecraft:poisonous_potato"
-        },
-        {
-            "id": "minecraft:carrot"
-        },
-        {
-            "id": "minecraft:golden_carrot"
-        },
-        {
-            "id": "minecraft:apple"
-        },
-        {
-            "id": "minecraft:golden_apple"
-        },
-        {
-            "id": "minecraft:enchanted_golden_apple"
-        },
-        {
-            "id": "minecraft:melon_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:melon_slice"
-        },
-        {
-            "id": "minecraft:glistering_melon_slice"
-        },
-        {
-            "id": "minecraft:sweet_berries"
-        },
-        {
-            "id": "minecraft:glow_berries"
-        },
-        {
-            "id": "minecraft:pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:carved_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lit_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:honeycomb"
-        },
-        {
-            "id": "minecraft:fern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:large_fern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgBAAACAQAbmFtZRQAbWluZWNyYWZ0OmxhcmdlX2Zlcm4ECQBuYW1lX2hhc2gnE9sd0LzHtQMKAG5ldHdvcmtfaWTS9hG4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:short_grass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNob3J0X2dyYXNzBAkAbmFtZV9oYXNobWQghLH0bLcDCgBuZXR3b3JrX2lkJWOOqAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:tall_grass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfBAAACAQAbmFtZRQAbWluZWNyYWZ0OnRhbGxfZ3Jhc3MECQBuYW1lX2hhc2ii5MyZJpv4sgMKAG5ldHdvcmtfaWRRfeH4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:nether_sprouts"
-        },
-        {
-            "id": "minecraft:fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dead_fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dead_tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dead_fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dead_tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:warped_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:yellow_flower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19mbG93ZXIECQBuYW1lX2hhc2jWbU1pF0OUGAMKAG5ldHdvcmtfaWQgO3hpCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:poppy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:blue_orchid",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:allium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:azure_bluet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:orange_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:white_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pink_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:oxeye_daisy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cornflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lily_of_the_valley",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sunflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRMAbWluZWNyYWZ0OnN1bmZsb3dlcgQJAG5hbWVfaGFzaAMxYQLoqlZ0AwoAbmV0d29ya19pZA10iSoKBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lilac",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReBAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxpbGFjBAkAbmFtZV9oYXNoD3nrQJuo7NkDCgBuZXR3b3JrX2lk5W+uFAoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:rose_bush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhBAAACAQAbmFtZRMAbWluZWNyYWZ0OnJvc2VfYnVzaAQJAG5hbWVfaGFzaLoiFk8LVpGKAwoAbmV0d29ya19pZMZPv48KBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:peony",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiBAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBlb255BAkAbmFtZV9oYXNoR4dYc4QquPADCgBuZXR3b3JrX2lkrTe7RwoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:pitcher_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pink_petals",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:wither_rose",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:torchflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:white_dye"
-        },
-        {
-            "id": "minecraft:light_gray_dye"
-        },
-        {
-            "id": "minecraft:gray_dye"
-        },
-        {
-            "id": "minecraft:black_dye"
-        },
-        {
-            "id": "minecraft:brown_dye"
-        },
-        {
-            "id": "minecraft:red_dye"
-        },
-        {
-            "id": "minecraft:orange_dye"
-        },
-        {
-            "id": "minecraft:yellow_dye"
-        },
-        {
-            "id": "minecraft:lime_dye"
-        },
-        {
-            "id": "minecraft:green_dye"
-        },
-        {
-            "id": "minecraft:cyan_dye"
-        },
-        {
-            "id": "minecraft:light_blue_dye"
-        },
-        {
-            "id": "minecraft:blue_dye"
-        },
-        {
-            "id": "minecraft:purple_dye"
-        },
-        {
-            "id": "minecraft:magenta_dye"
-        },
-        {
-            "id": "minecraft:pink_dye"
-        },
-        {
-            "id": "minecraft:ink_sac"
-        },
-        {
-            "id": "minecraft:glow_ink_sac"
-        },
-        {
-            "id": "minecraft:cocoa_beans"
-        },
-        {
-            "id": "minecraft:lapis_lazuli"
-        },
-        {
-            "id": "minecraft:bone_meal"
-        },
-        {
-            "id": "minecraft:vine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:weeping_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:twisting_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:waterlily",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:seagrass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:kelp"
-        },
-        {
-            "id": "minecraft:deadbush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:bamboo",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:snow",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:packed_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:blue_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:snow_layer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pointed_dripstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dripstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:moss_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:moss_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dirt_with_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:hanging_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:muddy_mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:big_dripleaf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:small_dripleaf_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spore_blossom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:flowering_azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:glow_lichen",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkCh8lSAoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHM/AAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:amethyst_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:budding_amethyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:amethyst_cluster",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:large_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:medium_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:small_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfc3RhaXJzBAkAbmFtZV9oYXNoKjyNUBjcfZsDCgBuZXR3b3JrX2lk+LsycgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:tuff_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfc2xhYgQJAG5hbWVfaGFzaIhCGdlIsnMUAwoAbmV0d29ya19pZN1dUL4KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfd2FsbAQJAG5hbWVfaGFzaMyeeu1IRf03AwoAbmV0d29ya19pZDkIrosKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmYECQBuYW1lX2hhc2iVliOT8OTQ9AMKAG5ldHdvcmtfaWTLNKOiCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmYECQBuYW1lX2hhc2hyaLe/KEVZ0gMKAG5ldHdvcmtfaWTcX3NrCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc3RhaXJzBAkAbmFtZV9oYXNo8yuah8QI1dcDCgBuZXR3b3JrX2lkjLoU4AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:polished_tuff_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc2xhYgQJAG5hbWVfaGFzaLXdb48YvAsHAwoAbmV0d29ya19pZAnJ7W0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfd2FsbAQJAG5hbWVfaGFzaJVZj6QYWXUrAwoAbmV0d29ya19pZLU7dooKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:tuff_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo/hbQ+mXSK7wDCgBuZXR3b3JrX2lk6gmIwQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:tuff_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0AwAACAQAbmFtZRsAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNoWJpkAurUfKwDCgBuZXR3b3JrX2lkUMcjiwoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:tuff_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaLqPMjVCv5dIAwoAbmV0d29ya19pZOmeRhcKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaIL0IyNCOsonAwoAbmV0d29ya19pZJW4T5UKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_tuff_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AwAACAQAbmFtZR4AbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo3oQw6gmxYuADCgBuZXR3b3JrX2lkm3D8AgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:calcite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:chicken"
-        },
-        {
-            "id": "minecraft:porkchop"
-        },
-        {
-            "id": "minecraft:beef"
-        },
-        {
-            "id": "minecraft:mutton"
-        },
-        {
-            "id": "minecraft:rabbit"
-        },
-        {
-            "id": "minecraft:cod"
-        },
-        {
-            "id": "minecraft:salmon"
-        },
-        {
-            "id": "minecraft:tropical_fish"
-        },
-        {
-            "id": "minecraft:pufferfish"
-        },
-        {
-            "id": "minecraft:brown_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkbdt3CAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw8AAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkSrMl9goGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cwAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:egg"
-        },
-        {
-            "id": "minecraft:sugar_cane"
-        },
-        {
-            "id": "minecraft:sugar"
-        },
-        {
-            "id": "minecraft:rotten_flesh"
-        },
-        {
-            "id": "minecraft:bone"
-        },
-        {
-            "id": "minecraft:web",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:spider_eye"
-        },
-        {
-            "id": "minecraft:mob_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:trial_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AgAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaWFsX3NwYXduZXIECQBuYW1lX2hhc2iNLRPB4ACz+QMKAG5ldHdvcmtfaWTWFYHGCgYAc3RhdGVzAQcAb21pbm91cwADEwB0cmlhbF9zcGF3bmVyX3N0YXRlAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:vault",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AgAACAQAbmFtZQ8AbWluZWNyYWZ0OnZhdWx0BAkAbmFtZV9oYXNoCAp9n3IAyqcDCgBuZXR3b3JrX2lk6/P+vwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQcAb21pbm91cwAICwB2YXVsdF9zdGF0ZQgAaW5hY3RpdmUAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:end_portal_frame",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkqXH7RgoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGUFAHN0b25lAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkeIBb6QoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGULAGNvYmJsZXN0b25lAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkDZ2cFQoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGULAHN0b25lX2JyaWNrAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkOR/cTAoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGURAG1vc3N5X3N0b25lX2JyaWNrAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkqdwlHAoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGUTAGNyYWNrZWRfc3RvbmVfYnJpY2sAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:monster_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vbnN0ZXJfZWdnBAkAbmFtZV9oYXNoFMxMALksxVEDCgBuZXR3b3JrX2lkFqqPggoGAHN0YXRlcwgWAG1vbnN0ZXJfZWdnX3N0b25lX3R5cGUUAGNoaXNlbGVkX3N0b25lX2JyaWNrAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:infested_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dragon_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:turtle_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sniffer_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:frog_spawn",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:pearlescent_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:verdant_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:ochre_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:chicken_spawn_egg"
-        },
-        {
-            "id": "minecraft:bee_spawn_egg"
-        },
-        {
-            "id": "minecraft:cow_spawn_egg"
-        },
-        {
-            "id": "minecraft:pig_spawn_egg"
-        },
-        {
-            "id": "minecraft:sheep_spawn_egg"
-        },
-        {
-            "id": "minecraft:wolf_spawn_egg"
-        },
-        {
-            "id": "minecraft:polar_bear_spawn_egg"
-        },
-        {
-            "id": "minecraft:ocelot_spawn_egg"
-        },
-        {
-            "id": "minecraft:cat_spawn_egg"
-        },
-        {
-            "id": "minecraft:mooshroom_spawn_egg"
-        },
-        {
-            "id": "minecraft:bat_spawn_egg"
-        },
-        {
-            "id": "minecraft:parrot_spawn_egg"
-        },
-        {
-            "id": "minecraft:rabbit_spawn_egg"
-        },
-        {
-            "id": "minecraft:llama_spawn_egg"
-        },
-        {
-            "id": "minecraft:horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:donkey_spawn_egg"
-        },
-        {
-            "id": "minecraft:mule_spawn_egg"
-        },
-        {
-            "id": "minecraft:skeleton_horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:tropical_fish_spawn_egg"
-        },
-        {
-            "id": "minecraft:cod_spawn_egg"
-        },
-        {
-            "id": "minecraft:pufferfish_spawn_egg"
-        },
-        {
-            "id": "minecraft:salmon_spawn_egg"
-        },
-        {
-            "id": "minecraft:dolphin_spawn_egg"
-        },
-        {
-            "id": "minecraft:turtle_spawn_egg"
-        },
-        {
-            "id": "minecraft:panda_spawn_egg"
-        },
-        {
-            "id": "minecraft:fox_spawn_egg"
-        },
-        {
-            "id": "minecraft:creeper_spawn_egg"
-        },
-        {
-            "id": "minecraft:enderman_spawn_egg"
-        },
-        {
-            "id": "minecraft:silverfish_spawn_egg"
-        },
-        {
-            "id": "minecraft:skeleton_spawn_egg"
-        },
-        {
-            "id": "minecraft:wither_skeleton_spawn_egg"
-        },
-        {
-            "id": "minecraft:stray_spawn_egg"
-        },
-        {
-            "id": "minecraft:slime_spawn_egg"
-        },
-        {
-            "id": "minecraft:spider_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_pigman_spawn_egg"
-        },
-        {
-            "id": "minecraft:husk_spawn_egg"
-        },
-        {
-            "id": "minecraft:drowned_spawn_egg"
-        },
-        {
-            "id": "minecraft:squid_spawn_egg"
-        },
-        {
-            "id": "minecraft:glow_squid_spawn_egg"
-        },
-        {
-            "id": "minecraft:cave_spider_spawn_egg"
-        },
-        {
-            "id": "minecraft:witch_spawn_egg"
-        },
-        {
-            "id": "minecraft:guardian_spawn_egg"
-        },
-        {
-            "id": "minecraft:elder_guardian_spawn_egg"
-        },
-        {
-            "id": "minecraft:endermite_spawn_egg"
-        },
-        {
-            "id": "minecraft:magma_cube_spawn_egg"
-        },
-        {
-            "id": "minecraft:strider_spawn_egg"
-        },
-        {
-            "id": "minecraft:hoglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:piglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:zoglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:piglin_brute_spawn_egg"
-        },
-        {
-            "id": "minecraft:goat_spawn_egg"
-        },
-        {
-            "id": "minecraft:axolotl_spawn_egg"
-        },
-        {
-            "id": "minecraft:warden_spawn_egg"
-        },
-        {
-            "id": "minecraft:allay_spawn_egg"
-        },
-        {
-            "id": "minecraft:frog_spawn_egg"
-        },
-        {
-            "id": "minecraft:tadpole_spawn_egg"
-        },
-        {
-            "id": "minecraft:trader_llama_spawn_egg"
-        },
-        {
-            "id": "minecraft:camel_spawn_egg"
-        },
-        {
-            "id": "minecraft:ghast_spawn_egg"
-        },
-        {
-            "id": "minecraft:blaze_spawn_egg"
-        },
-        {
-            "id": "minecraft:shulker_spawn_egg"
-        },
-        {
-            "id": "minecraft:vindicator_spawn_egg"
-        },
-        {
-            "id": "minecraft:evoker_spawn_egg"
-        },
-        {
-            "id": "minecraft:vex_spawn_egg"
-        },
-        {
-            "id": "minecraft:villager_spawn_egg"
-        },
-        {
-            "id": "minecraft:wandering_trader_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_villager_spawn_egg"
-        },
-        {
-            "id": "minecraft:phantom_spawn_egg"
-        },
-        {
-            "id": "minecraft:pillager_spawn_egg"
-        },
-        {
-            "id": "minecraft:ravager_spawn_egg"
-        },
-        {
-            "id": "minecraft:iron_golem_spawn_egg"
-        },
-        {
-            "id": "minecraft:snow_golem_spawn_egg"
-        },
-        {
-            "id": "minecraft:sniffer_spawn_egg"
-        },
-        {
-            "id": "minecraft:breeze_spawn_egg"
-        },
-        {
-            "id": "minecraft:armadillo_spawn_egg"
-        },
-        {
-            "id": "minecraft:bogged_spawn_egg"
-        },
-        {
-            "id": "minecraft:obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:crying_obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bedrock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:soul_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:magma",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:nether_wart"
-        },
-        {
-            "id": "minecraft:end_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:chorus_flower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:chorus_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:chorus_fruit"
-        },
-        {
-            "id": "minecraft:popped_chorus_fruit"
-        },
-        {
-            "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZF01rO0KBgBzdGF0ZXMICwBzcG9uZ2VfdHlwZQMAZHJ5AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZPiOc4QKBgBzdGF0ZXMICwBzcG9uZ2VfdHlwZQMAd2V0AAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:tube_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQBAAACAQAbmFtZRsAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoeDNAK18yUo4DCgBuZXR3b3JrX2lkloN1vgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRBAAACAQAbmFtZRwAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaAI2mwMlvcNbAwoAbmV0d29ya19pZBlkxKIKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:fire_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSBAAACAQAbmFtZRoAbWluZWNyYWZ0OmZpcmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2gg1gLeXLmKaAMKAG5ldHdvcmtfaWSp3W57CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTBAAACAQAbmFtZRoAbWluZWNyYWZ0Omhvcm5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2hnZSLRWUwGhAMKAG5ldHdvcmtfaWRSK6ccCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dead_tube_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaB9+lY3hAkNNAwoAbmV0d29ya19pZF0hKKYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVBAAACAQAbmFtZSAAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2iHyDn52AO8uwMKAG5ldHdvcmtfaWQw7yCaCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWBAAACAQAbmFtZSEAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNotwkk/ITrsjADCgBuZXR3b3JrX2lk56mXUgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dead_fire_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaG0qHxbIrBEyAwoAbmV0d29ya19pZFvnH88KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaL7D8bu4Fm+0AwoAbmV0d29ya19pZEALRLoKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sculk",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sculk_vein",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:sculk_catalyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sculk_shrieker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:calibrated_sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:reinforced_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:leather_helmet"
-        },
-        {
-            "id": "minecraft:chainmail_helmet"
-        },
-        {
-            "id": "minecraft:iron_helmet"
-        },
-        {
-            "id": "minecraft:golden_helmet"
-        },
-        {
-            "id": "minecraft:diamond_helmet"
-        },
-        {
-            "id": "minecraft:netherite_helmet"
-        },
-        {
-            "id": "minecraft:leather_chestplate"
-        },
-        {
-            "id": "minecraft:chainmail_chestplate"
-        },
-        {
-            "id": "minecraft:iron_chestplate"
-        },
-        {
-            "id": "minecraft:golden_chestplate"
-        },
-        {
-            "id": "minecraft:diamond_chestplate"
-        },
-        {
-            "id": "minecraft:netherite_chestplate"
-        },
-        {
-            "id": "minecraft:leather_leggings"
-        },
-        {
-            "id": "minecraft:chainmail_leggings"
-        },
-        {
-            "id": "minecraft:iron_leggings"
-        },
-        {
-            "id": "minecraft:golden_leggings"
-        },
-        {
-            "id": "minecraft:diamond_leggings"
-        },
-        {
-            "id": "minecraft:netherite_leggings"
-        },
-        {
-            "id": "minecraft:leather_boots"
-        },
-        {
-            "id": "minecraft:chainmail_boots"
-        },
-        {
-            "id": "minecraft:iron_boots"
-        },
-        {
-            "id": "minecraft:golden_boots"
-        },
-        {
-            "id": "minecraft:diamond_boots"
-        },
-        {
-            "id": "minecraft:netherite_boots"
-        },
-        {
-            "id": "minecraft:wooden_sword"
-        },
-        {
-            "id": "minecraft:stone_sword"
-        },
-        {
-            "id": "minecraft:iron_sword"
-        },
-        {
-            "id": "minecraft:golden_sword"
-        },
-        {
-            "id": "minecraft:diamond_sword"
-        },
-        {
-            "id": "minecraft:netherite_sword"
-        },
-        {
-            "id": "minecraft:wooden_axe"
-        },
-        {
-            "id": "minecraft:stone_axe"
-        },
-        {
-            "id": "minecraft:iron_axe"
-        },
-        {
-            "id": "minecraft:golden_axe"
-        },
-        {
-            "id": "minecraft:diamond_axe"
-        },
-        {
-            "id": "minecraft:netherite_axe"
-        },
-        {
-            "id": "minecraft:wooden_pickaxe"
-        },
-        {
-            "id": "minecraft:stone_pickaxe"
-        },
-        {
-            "id": "minecraft:iron_pickaxe"
-        },
-        {
-            "id": "minecraft:golden_pickaxe"
-        },
-        {
-            "id": "minecraft:diamond_pickaxe"
-        },
-        {
-            "id": "minecraft:netherite_pickaxe"
-        },
-        {
-            "id": "minecraft:wooden_shovel"
-        },
-        {
-            "id": "minecraft:stone_shovel"
-        },
-        {
-            "id": "minecraft:iron_shovel"
-        },
-        {
-            "id": "minecraft:golden_shovel"
-        },
-        {
-            "id": "minecraft:diamond_shovel"
-        },
-        {
-            "id": "minecraft:netherite_shovel"
-        },
-        {
-            "id": "minecraft:wooden_hoe"
-        },
-        {
-            "id": "minecraft:stone_hoe"
-        },
-        {
-            "id": "minecraft:iron_hoe"
-        },
-        {
-            "id": "minecraft:golden_hoe"
-        },
-        {
-            "id": "minecraft:diamond_hoe"
-        },
-        {
-            "id": "minecraft:netherite_hoe"
-        },
-        {
-            "id": "minecraft:bow"
-        },
-        {
-            "id": "minecraft:crossbow"
-        },
-        {
-            "id": "minecraft:mace"
-        },
-        {
-            "id": "minecraft:arrow"
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 47
-        },
-        {
-            "id": "minecraft:ominous_bottle"
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:shield"
-        },
-        {
-            "id": "minecraft:cooked_chicken"
-        },
-        {
-            "id": "minecraft:cooked_porkchop"
-        },
-        {
-            "id": "minecraft:cooked_beef"
-        },
-        {
-            "id": "minecraft:cooked_mutton"
-        },
-        {
-            "id": "minecraft:cooked_rabbit"
-        },
-        {
-            "id": "minecraft:cooked_cod"
-        },
-        {
-            "id": "minecraft:cooked_salmon"
-        },
-        {
-            "id": "minecraft:bread"
-        },
-        {
-            "id": "minecraft:mushroom_stew"
-        },
-        {
-            "id": "minecraft:beetroot_soup"
-        },
-        {
-            "id": "minecraft:rabbit_stew"
-        },
-        {
-            "id": "minecraft:baked_potato"
-        },
-        {
-            "id": "minecraft:cookie"
-        },
-        {
-            "id": "minecraft:pumpkin_pie"
-        },
-        {
-            "id": "minecraft:cake"
-        },
-        {
-            "id": "minecraft:dried_kelp"
-        },
-        {
-            "id": "minecraft:fishing_rod"
-        },
-        {
-            "id": "minecraft:carrot_on_a_stick"
-        },
-        {
-            "id": "minecraft:warped_fungus_on_a_stick"
-        },
-        {
-            "id": "minecraft:snowball"
-        },
-        {
-            "id": "minecraft:wind_charge"
-        },
-        {
-            "id": "minecraft:shears"
-        },
-        {
-            "id": "minecraft:flint_and_steel"
-        },
-        {
-            "id": "minecraft:lead"
-        },
-        {
-            "id": "minecraft:clock"
-        },
-        {
-            "id": "minecraft:compass"
-        },
-        {
-            "id": "minecraft:recovery_compass"
-        },
-        {
-            "id": "minecraft:goat_horn"
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:empty_map"
-        },
-        {
-            "id": "minecraft:empty_map",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:saddle"
-        },
-        {
-            "id": "minecraft:leather_horse_armor"
-        },
-        {
-            "id": "minecraft:iron_horse_armor"
-        },
-        {
-            "id": "minecraft:golden_horse_armor"
-        },
-        {
-            "id": "minecraft:diamond_horse_armor"
-        },
-        {
-            "id": "minecraft:wolf_armor"
-        },
-        {
-            "id": "minecraft:trident"
-        },
-        {
-            "id": "minecraft:turtle_helmet"
-        },
-        {
-            "id": "minecraft:elytra"
-        },
-        {
-            "id": "minecraft:totem_of_undying"
-        },
-        {
-            "id": "minecraft:glass_bottle"
-        },
-        {
-            "id": "minecraft:experience_bottle"
-        },
-        {
-            "id": "minecraft:potion"
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:splash_potion"
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:lingering_potion"
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:spyglass"
-        },
-        {
-            "id": "minecraft:brush"
-        },
-        {
-            "id": "minecraft:stick"
-        },
-        {
-            "id": "minecraft:bed"
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:soul_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sea_pickle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:soul_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:white_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:orange_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:yellow_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:lime_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:pink_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cyan_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:purple_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:brown_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:green_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:red_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:black_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crafting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cartography_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:fletching_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:smithing_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:beehive",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:suspicious_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:suspicious_gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:campfire"
-        },
-        {
-            "id": "minecraft:soul_campfire"
-        },
-        {
-            "id": "minecraft:furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:blast_furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:smoker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:respawn_anchor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:brewing_stand"
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lk8Z3VowoGAHN0YXRlcwgGAGRhbWFnZQkAdW5kYW1hZ2VkCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkpiv8BAoGAHN0YXRlcwgGAGRhbWFnZRAAc2xpZ2h0bHlfZGFtYWdlZAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkFu+pdwoGAHN0YXRlcwgGAGRhbWFnZQwAdmVyeV9kYW1hZ2VkCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:grindstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:enchanting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lectern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cauldron"
-        },
-        {
-            "id": "minecraft:composter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:trapped_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:ender_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:barrel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:undyed_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:white_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:light_gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:black_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:brown_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:red_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:orange_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:yellow_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:lime_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:green_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:cyan_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:light_blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:purple_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:magenta_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:pink_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:armor_stand"
-        },
-        {
-            "id": "minecraft:noteblock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jukebox",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:music_disc_13"
-        },
-        {
-            "id": "minecraft:music_disc_cat"
-        },
-        {
-            "id": "minecraft:music_disc_blocks"
-        },
-        {
-            "id": "minecraft:music_disc_chirp"
-        },
-        {
-            "id": "minecraft:music_disc_far"
-        },
-        {
-            "id": "minecraft:music_disc_mall"
-        },
-        {
-            "id": "minecraft:music_disc_mellohi"
-        },
-        {
-            "id": "minecraft:music_disc_stal"
-        },
-        {
-            "id": "minecraft:music_disc_strad"
-        },
-        {
-            "id": "minecraft:music_disc_ward"
-        },
-        {
-            "id": "minecraft:music_disc_11"
-        },
-        {
-            "id": "minecraft:music_disc_wait"
-        },
-        {
-            "id": "minecraft:music_disc_otherside"
-        },
-        {
-            "id": "minecraft:music_disc_5"
-        },
-        {
-            "id": "minecraft:music_disc_pigstep"
-        },
-        {
-            "id": "minecraft:music_disc_relic"
-        },
-        {
-            "id": "minecraft:music_disc_creator"
-        },
-        {
-            "id": "minecraft:music_disc_creator_music_box"
-        },
-        {
-            "id": "minecraft:music_disc_precipice"
-        },
-        {
-            "id": "minecraft:disc_fragment_5"
-        },
-        {
-            "id": "minecraft:glowstone_dust"
-        },
-        {
-            "id": "minecraft:glowstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:redstone_lamp",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:sea_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:oak_sign"
-        },
-        {
-            "id": "minecraft:spruce_sign"
-        },
-        {
-            "id": "minecraft:birch_sign"
-        },
-        {
-            "id": "minecraft:jungle_sign"
-        },
-        {
-            "id": "minecraft:acacia_sign"
-        },
-        {
-            "id": "minecraft:dark_oak_sign"
-        },
-        {
-            "id": "minecraft:mangrove_sign"
-        },
-        {
-            "id": "minecraft:cherry_sign"
-        },
-        {
-            "id": "minecraft:bamboo_sign"
-        },
-        {
-            "id": "minecraft:crimson_sign"
-        },
-        {
-            "id": "minecraft:warped_sign"
-        },
-        {
-            "id": "minecraft:oak_hanging_sign"
-        },
-        {
-            "id": "minecraft:spruce_hanging_sign"
-        },
-        {
-            "id": "minecraft:birch_hanging_sign"
-        },
-        {
-            "id": "minecraft:jungle_hanging_sign"
-        },
-        {
-            "id": "minecraft:acacia_hanging_sign"
-        },
-        {
-            "id": "minecraft:dark_oak_hanging_sign"
-        },
-        {
-            "id": "minecraft:mangrove_hanging_sign"
-        },
-        {
-            "id": "minecraft:cherry_hanging_sign"
-        },
-        {
-            "id": "minecraft:bamboo_hanging_sign"
-        },
-        {
-            "id": "minecraft:crimson_hanging_sign"
-        },
-        {
-            "id": "minecraft:warped_hanging_sign"
-        },
-        {
-            "id": "minecraft:painting"
-        },
-        {
-            "id": "minecraft:frame"
-        },
-        {
-            "id": "minecraft:glow_frame"
-        },
-        {
-            "id": "minecraft:honey_bottle"
-        },
-        {
-            "id": "minecraft:flower_pot"
-        },
-        {
-            "id": "minecraft:bowl"
-        },
-        {
-            "id": "minecraft:bucket"
-        },
-        {
-            "id": "minecraft:milk_bucket"
-        },
-        {
-            "id": "minecraft:water_bucket"
-        },
-        {
-            "id": "minecraft:lava_bucket"
-        },
-        {
-            "id": "minecraft:cod_bucket"
-        },
-        {
-            "id": "minecraft:salmon_bucket"
-        },
-        {
-            "id": "minecraft:tropical_fish_bucket"
-        },
-        {
-            "id": "minecraft:pufferfish_bucket"
-        },
-        {
-            "id": "minecraft:powder_snow_bucket"
-        },
-        {
-            "id": "minecraft:axolotl_bucket"
-        },
-        {
-            "id": "minecraft:tadpole_bucket"
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:skull"
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:beacon",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:bell",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:conduit",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stonecutter_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:coal"
-        },
-        {
-            "id": "minecraft:charcoal"
-        },
-        {
-            "id": "minecraft:diamond"
-        },
-        {
-            "id": "minecraft:iron_nugget"
-        },
-        {
-            "id": "minecraft:raw_iron"
-        },
-        {
-            "id": "minecraft:raw_gold"
-        },
-        {
-            "id": "minecraft:raw_copper"
-        },
-        {
-            "id": "minecraft:copper_ingot"
-        },
-        {
-            "id": "minecraft:iron_ingot"
-        },
-        {
-            "id": "minecraft:netherite_scrap"
-        },
-        {
-            "id": "minecraft:netherite_ingot"
-        },
-        {
-            "id": "minecraft:gold_nugget"
-        },
-        {
-            "id": "minecraft:gold_ingot"
-        },
-        {
-            "id": "minecraft:emerald"
-        },
-        {
-            "id": "minecraft:quartz"
-        },
-        {
-            "id": "minecraft:clay_ball"
-        },
-        {
-            "id": "minecraft:brick"
-        },
-        {
-            "id": "minecraft:netherbrick"
-        },
-        {
-            "id": "minecraft:prismarine_shard"
-        },
-        {
-            "id": "minecraft:amethyst_shard"
-        },
-        {
-            "id": "minecraft:prismarine_crystals"
-        },
-        {
-            "id": "minecraft:nautilus_shell"
-        },
-        {
-            "id": "minecraft:heart_of_the_sea"
-        },
-        {
-            "id": "minecraft:turtle_scute"
-        },
-        {
-            "id": "minecraft:armadillo_scute"
-        },
-        {
-            "id": "minecraft:phantom_membrane"
-        },
-        {
-            "id": "minecraft:string"
-        },
-        {
-            "id": "minecraft:feather"
-        },
-        {
-            "id": "minecraft:flint"
-        },
-        {
-            "id": "minecraft:gunpowder"
-        },
-        {
-            "id": "minecraft:leather"
-        },
-        {
-            "id": "minecraft:rabbit_hide"
-        },
-        {
-            "id": "minecraft:rabbit_foot"
-        },
-        {
-            "id": "minecraft:fire_charge"
-        },
-        {
-            "id": "minecraft:blaze_rod"
-        },
-        {
-            "id": "minecraft:breeze_rod"
-        },
-        {
-            "id": "minecraft:heavy_core",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AgAACAQAbmFtZRQAbWluZWNyYWZ0OmhlYXZ5X2NvcmUECQBuYW1lX2hhc2hhz/uNCtrC2QMKAG5ldHdvcmtfaWRaFu+8CgYAc3RhdGVzAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:blaze_powder"
-        },
-        {
-            "id": "minecraft:magma_cream"
-        },
-        {
-            "id": "minecraft:fermented_spider_eye"
-        },
-        {
-            "id": "minecraft:echo_shard"
-        },
-        {
-            "id": "minecraft:dragon_breath"
-        },
-        {
-            "id": "minecraft:shulker_shell"
-        },
-        {
-            "id": "minecraft:ghast_tear"
-        },
-        {
-            "id": "minecraft:slime_ball"
-        },
-        {
-            "id": "minecraft:ender_pearl"
-        },
-        {
-            "id": "minecraft:ender_eye"
-        },
-        {
-            "id": "minecraft:nether_star"
-        },
-        {
-            "id": "minecraft:end_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:lightning_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:end_crystal"
-        },
-        {
-            "id": "minecraft:paper"
-        },
-        {
-            "id": "minecraft:book"
-        },
-        {
-            "id": "minecraft:writable_book"
-        },
-        {
-            "id": "minecraft:trial_key"
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQIAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQQAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQVAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQWAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQaAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQbAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQcAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQgAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQhAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:oak_boat"
-        },
-        {
-            "id": "minecraft:spruce_boat"
-        },
-        {
-            "id": "minecraft:birch_boat"
-        },
-        {
-            "id": "minecraft:jungle_boat"
-        },
-        {
-            "id": "minecraft:acacia_boat"
-        },
-        {
-            "id": "minecraft:dark_oak_boat"
-        },
-        {
-            "id": "minecraft:mangrove_boat"
-        },
-        {
-            "id": "minecraft:cherry_boat"
-        },
-        {
-            "id": "minecraft:bamboo_raft"
-        },
-        {
-            "id": "minecraft:oak_chest_boat"
-        },
-        {
-            "id": "minecraft:spruce_chest_boat"
-        },
-        {
-            "id": "minecraft:birch_chest_boat"
-        },
-        {
-            "id": "minecraft:jungle_chest_boat"
-        },
-        {
-            "id": "minecraft:acacia_chest_boat"
-        },
-        {
-            "id": "minecraft:dark_oak_chest_boat"
-        },
-        {
-            "id": "minecraft:mangrove_chest_boat"
-        },
-        {
-            "id": "minecraft:cherry_chest_boat"
-        },
-        {
-            "id": "minecraft:bamboo_chest_raft"
-        },
-        {
-            "id": "minecraft:rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:golden_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:detector_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:activator_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:minecart"
-        },
-        {
-            "id": "minecraft:chest_minecart"
-        },
-        {
-            "id": "minecraft:hopper_minecart"
-        },
-        {
-            "id": "minecraft:tnt_minecart"
-        },
-        {
-            "id": "minecraft:redstone"
-        },
-        {
-            "id": "minecraft:redstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:redstone_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:lever",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:wooden_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:birch_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jungle_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cherry_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:crimson_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:tripwire_hook",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:wooden_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:birch_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:jungle_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:cherry_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:warped_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:stone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:light_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:heavy_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:polished_blackstone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:observer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:daylight_detector",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:repeater"
-        },
-        {
-            "id": "minecraft:comparator"
-        },
-        {
-            "id": "minecraft:hopper"
-        },
-        {
-            "id": "minecraft:dropper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:dispenser",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:crafter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AgAACAQAbmFtZREAbWluZWNyYWZ0OmNyYWZ0ZXIECQBuYW1lX2hhc2iLCT/rJmRN8QMKAG5ldHdvcmtfaWTPTbvrCgYAc3RhdGVzAQgAY3JhZnRpbmcACAsAb3JpZW50YXRpb24JAGRvd25fZWFzdAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24DABUBAA=="
-        },
-        {
-            "id": "minecraft:piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:sticky_piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:tnt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZCGfjU4KBgBzdGF0ZXMBFABhbGxvd191bmRlcndhdGVyX2JpdAABCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:name_tag"
-        },
-        {
-            "id": "minecraft:loom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:banner",
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 8,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 7,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 15,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 12,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 14,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 1,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 4,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 5,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 13,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 9,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 3,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 11,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 10,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 2,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 6,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 15,
-            "nbt_b64": "CgAAAwQAVHlwZQEAAAAA"
-        },
-        {
-            "id": "minecraft:creeper_banner_pattern"
-        },
-        {
-            "id": "minecraft:skull_banner_pattern"
-        },
-        {
-            "id": "minecraft:flower_banner_pattern"
-        },
-        {
-            "id": "minecraft:mojang_banner_pattern"
-        },
-        {
-            "id": "minecraft:field_masoned_banner_pattern"
-        },
-        {
-            "id": "minecraft:bordure_indented_banner_pattern"
-        },
-        {
-            "id": "minecraft:piglin_banner_pattern"
-        },
-        {
-            "id": "minecraft:globe_banner_pattern"
-        },
-        {
-            "id": "minecraft:flow_banner_pattern"
-        },
-        {
-            "id": "minecraft:guster_banner_pattern"
-        },
-        {
-            "id": "minecraft:angler_pottery_sherd"
-        },
-        {
-            "id": "minecraft:archer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:arms_up_pottery_sherd"
-        },
-        {
-            "id": "minecraft:blade_pottery_sherd"
-        },
-        {
-            "id": "minecraft:brewer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:burn_pottery_sherd"
-        },
-        {
-            "id": "minecraft:danger_pottery_sherd"
-        },
-        {
-            "id": "minecraft:explorer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:flow_pottery_sherd"
-        },
-        {
-            "id": "minecraft:friend_pottery_sherd"
-        },
-        {
-            "id": "minecraft:guster_pottery_sherd"
-        },
-        {
-            "id": "minecraft:heart_pottery_sherd"
-        },
-        {
-            "id": "minecraft:heartbreak_pottery_sherd"
-        },
-        {
-            "id": "minecraft:howl_pottery_sherd"
-        },
-        {
-            "id": "minecraft:miner_pottery_sherd"
-        },
-        {
-            "id": "minecraft:mourner_pottery_sherd"
-        },
-        {
-            "id": "minecraft:plenty_pottery_sherd"
-        },
-        {
-            "id": "minecraft:prize_pottery_sherd"
-        },
-        {
-            "id": "minecraft:scrape_pottery_sherd"
-        },
-        {
-            "id": "minecraft:sheaf_pottery_sherd"
-        },
-        {
-            "id": "minecraft:shelter_pottery_sherd"
-        },
-        {
-            "id": "minecraft:skull_pottery_sherd"
-        },
-        {
-            "id": "minecraft:snort_pottery_sherd"
-        },
-        {
-            "id": "minecraft:netherite_upgrade_smithing_template"
-        },
-        {
-            "id": "minecraft:sentry_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:vex_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:wild_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:coast_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:dune_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:wayfinder_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:shaper_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:raiser_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:host_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:ward_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:silence_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:tide_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:snout_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:rib_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:eye_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:spire_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:flow_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:bolt_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwAAAAAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAABwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAIBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAHBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAPBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAMBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAOBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAABBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAEBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAFBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAANBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAJBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAADBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAALBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAKBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAACBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAGBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_star",
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yIR0d/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 8,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yUk9H/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 7,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yl52d/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 15,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y8PDw/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 12,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y2rM6/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 14,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yHYD5/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 1,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yJi6w/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 4,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqkQ8/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 5,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yuDKJ/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 13,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yvU7H/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 9,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqovz/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 3,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yMlSD/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 11,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yPdj+/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 10,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yH8eA/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 2,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yFnxe/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 6,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9ynJwW/wA="
-        },
-        {
-            "id": "minecraft:chain"
-        },
-        {
-            "id": "minecraft:target",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbgMAFQEA"
-        },
-        {
-            "id": "minecraft:decorated_pot",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uAwAVAQA="
-        },
-        {
-            "id": "minecraft:lodestone_compass"
-        },
-        {
-            "id": "minecraft:wither_spawn_egg"
-        },
-        {
-            "id": "minecraft:ender_dragon_spawn_egg"
-        },
-        {
-            "id": "minecraft:ominous_trial_key"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/creative_items.1_21_20.json b/core/src/main/resources/bedrock/creative_items.1_21_20.json
deleted file mode 100644
index ce008aa44..000000000
--- a/core/src/main/resources/bedrock/creative_items.1_21_20.json
+++ /dev/null
@@ -1,6214 +0,0 @@
-{
-    "items": [
-        {
-            "id": "minecraft:oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:birch_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jungle_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cherry_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_mosaic",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSE4JosCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCwBjb2JibGVzdG9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWTUvV6XCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEQBtb3NzeV9jb2JibGVzdG9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWT4opb2CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBwBncmFuaXRlCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQAMQTVCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBwBkaW9yaXRlCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQIbDOcCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCABhbmRlc2l0ZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSZKhusCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCQBzYW5kc3RvbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSp4zgCCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlDQByZWRfc2FuZHN0b25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRbqVHTCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCwBzdG9uZV9icmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRr0ZT/CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEQBtb3NzeV9zdG9uZV9icmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRnLis3CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlBQBicmljawgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQNLzfSCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlDABuZXRoZXJfYnJpY2sIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWQ5h0xwCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlEAByZWRfbmV0aGVyX2JyaWNrCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWS9J0B2CgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCQBlbmRfYnJpY2sIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWRPbkJeCgYAc3RhdGVzCA8Ad2FsbF9ibG9ja190eXBlCgBwcmlzbWFyaW5lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:polished_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:mud_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:spruce_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:birch_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:jungle_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:acacia_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cherry_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:nether_brick_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:warped_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWR+T9kTCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:spruce_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkEnw5egoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:birch_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWQL77/BCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:jungle_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkA1zgtgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:acacia_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkHg/kTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWTwjOCeCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWSfweCSCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cherry_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lk/9bTZQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkzIpPywoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZDQzVbEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQsAaW5fd2FsbF9iaXQAAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:warped_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkkf+/3QoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:normal_stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mossy_cobblestone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:birch_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jungle_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cherry_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mossy_stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:polished_andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:end_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:purpur_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dark_prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_bricks_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:polished_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:mud_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:wooden_door"
-        },
-        {
-            "id": "minecraft:spruce_door"
-        },
-        {
-            "id": "minecraft:birch_door"
-        },
-        {
-            "id": "minecraft:jungle_door"
-        },
-        {
-            "id": "minecraft:acacia_door"
-        },
-        {
-            "id": "minecraft:dark_oak_door"
-        },
-        {
-            "id": "minecraft:mangrove_door"
-        },
-        {
-            "id": "minecraft:cherry_door"
-        },
-        {
-            "id": "minecraft:bamboo_door"
-        },
-        {
-            "id": "minecraft:iron_door"
-        },
-        {
-            "id": "minecraft:crimson_door"
-        },
-        {
-            "id": "minecraft:warped_door"
-        },
-        {
-            "id": "minecraft:trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:birch_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:jungle_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:acacia_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dark_oak_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cherry_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:bamboo_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:iron_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:warped_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:iron_bars",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:white_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:black_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brown_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:orange_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lime_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:green_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:purple_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:pink_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:tinted_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:white_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:black_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brown_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:orange_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lime_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:green_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cyan_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:purple_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pink_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:ladder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:scaffolding",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_stone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:normal_stone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNoIvsjJLQdolcDCgBuZXR3b3JrX2lkC1zqRQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoBAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2h5CXtW7vlQVgMKAG5ldHdvcmtfaWRDGyj2CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mossy_cobblestone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3BAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2ijm1BCwB82VgMKAG5ldHdvcmtfaWR7ByMGCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:spruce_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:birch_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:jungle_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:acacia_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cherry_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2js6EexuKuzrQMKAG5ldHdvcmtfaWRSsMxaCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mossy_stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hiA4kFUl4tHAMKAG5ldHdvcmtfaWS6joSOCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV9zbGFiBAkAbmFtZV9oYXNo/GMI0MZnrhsDCgBuZXR3b3JrX2lkFP8WmwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cut_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDBAAACAQAbmFtZRwAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaE+zxVQweViJAwoAbmV0d29ya19pZHsu74YKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4BAAACAQAbmFtZR8AbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaIkmsO1gw3gnAwoAbmV0d29ya19pZFSiwP0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaEyDjeWlUHItAwoAbmV0d29ya19pZIT4rmwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cut_red_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEBAAACAQAbmFtZSAAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2hTVRS++snU3wMKAG5ldHdvcmtfaWSvIAviCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6BAAACAQAbmFtZSMAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2i9iN2UK272tgMKAG5ldHdvcmtfaWRUZrwJCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:granite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/BAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaL0HprlAhhZwAwoAbmV0d29ya19pZIcIdc8KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_granite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSABAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaP6bXk5w2dGrAwoAbmV0d29ya19pZCsRy1cKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:diorite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9BAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaM3ppS8v55sNAwoAbmV0d29ya19pZB+Pv9oKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_diorite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+BAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaLZlyJLkMPhyAwoAbmV0d29ya19pZFM0HYwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:andesite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8BAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2icIrtuy/aosAMKAG5ldHdvcmtfaWTtXTtYCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_andesite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7BAAACAQAbmFtZSAAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2j56zJOfCF+3wMKAG5ldHdvcmtfaWRBs69FCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3NsYWIECQBuYW1lX2hhc2hO/Da4jU2v4wMKAG5ldHdvcmtfaWRG/qphCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:nether_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja19zbGFiBAkAbmFtZV9oYXNonymoa2zbbqMDCgBuZXR3b3JrX2lkquvR1QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_nether_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5BAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaG89ujUk3Y64AwoAbmV0d29ya19pZEZIunAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:end_stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja19zbGFiBAkAbmFtZV9oYXNo4tkxQtl+IyQDCgBuZXR3b3JrX2lkhByH/woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:quartz_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrBAAACAQAbmFtZRUAbWluZWNyYWZ0OnF1YXJ0el9zbGFiBAkAbmFtZV9oYXNo9JMj3upfsbwDCgBuZXR3b3JrX2lkn2g2VAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:smooth_quartz_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBBAAACAQAbmFtZRwAbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc2xhYgQJAG5hbWVfaGFzaHOSJv8ve0nmAwoAbmV0d29ya19pZFMk/JsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:purpur_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzBAAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnB1cl9zbGFiBAkAbmFtZV9oYXNo4XeWbKpx2ScDCgBuZXR3b3JrX2lkRkga5goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:prismarine_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0BAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfc2xhYgQJAG5hbWVfaGFzaI9x+1fY8QRfAwoAbmV0d29ya19pZBTUZhwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_prismarine_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1BAAACAQAbmFtZR4AbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zbGFiBAkAbmFtZV9oYXNoSsZGDkEL5ZUDCgBuZXR3b3JrX2lkNLQ8VwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:prismarine_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2BAAACAQAbmFtZR8AbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaB1FSbVi97xJAwoAbmV0d29ya19pZEBwwFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:warped_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:deepslate_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mud_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brick_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cracked_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:quartz_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2JyaWNrcwQJAG5hbWVfaGFzaGAiQu8VWVJRAwoAbmV0d29ya19pZH2DjXUKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mossy_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjBAAACAQAbmFtZRwAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaIZBO00MONRIAwoAbmV0d29ya19pZL2WDrAKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cracked_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkBAAACAQAbmFtZR4AbWluZWNyYWZ0OmNyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNocIkAp6riMz4DCgBuZXR3b3JrX2lkTWGeCwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlBAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaMB2FPLLADkEAwoAbmV0d29ya19pZOIPn0IKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:end_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzBAAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzBAkAbmFtZV9oYXNozeGe3/7s5fcDCgBuZXR3b3JrX2lkj/iBnAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cracked_polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:gilded_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cracked_deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cracked_deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mossy_cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:smooth_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPsXMaQKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvBAAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX3NhbmRzdG9uZQQJAG5hbWVfaGFzaPEkxMvZmemgAwoAbmV0d29ya19pZGI5NB4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cut_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwBAAACAQAbmFtZRcAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmUECQBuYW1lX2hhc2ichLQc71njnQMKAG5ldHdvcmtfaWSmBLkRCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmUECQBuYW1lX2hhc2huR7XTwISyCAMKAG5ldHdvcmtfaWSzWj3UCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRXRYxZCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:chiseled_red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7BAAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX3JlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2gh5sX+ON054wMKAG5ldHdvcmtfaWT6Pw1PCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cut_red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS8BAAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoaOtka4NrQ1EDCgBuZXR3b3JrX2lk3r/JPAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9BAAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoqsNl8x36ju4DCgBuZXR3b3JrX2lk7x5DTwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:coal_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dried_kelp_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:copper_door"
-        },
-        {
-            "id": "minecraft:copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXBAAACAQAbmFtZRkAbWluZWNyYWZ0OmNvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO9fXio+svKVAwoAbmV0d29ya19pZMCoRjEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AwAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaC/JEFOWnmEcAwoAbmV0d29ya19pZC6YiiMKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:exposed_copper_door"
-        },
-        {
-            "id": "minecraft:exposed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYBAAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoYhDFUysN7qUDCgBuZXR3b3JrX2lkMzwGJgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQABAAACAQAbmFtZR4AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNolFIBYLYU0IcDCgBuZXR3b3JrX2lk4UqptAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:weathered_copper_door"
-        },
-        {
-            "id": "minecraft:weathered_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZBAAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2hFnEC282a1tgMKAG5ldHdvcmtfaWTk70oiCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:weathered_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBBAAACAQAbmFtZSAAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2jB3o8enlv1RgMKAG5ldHdvcmtfaWRih2pOCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:oxidized_copper_door"
-        },
-        {
-            "id": "minecraft:oxidized_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaBAAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaOJpG/XFexVwAwoAbmV0d29ya19pZPhi0J4KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:oxidized_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCBAAACAQAbmFtZR8AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaBRfNhyndve7AwoAbmV0d29ya19pZKY2cnEKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbBAAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO0JUKUHqNU6AwoAbmV0d29ya19pZJC3ZuMKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDBAAACAQAbmFtZRwAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaDmC92M2RO+HAwoAbmV0d29ya19pZH4og2AKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcBAAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoBHHxCpkUzpgDCgBuZXR3b3JrX2lkw2XBGQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNoWmd6B+hWwiEDCgBuZXR3b3JrX2lk8d4ZQwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdBAAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2gH9Fi3JCF4egMKAG5ldHdvcmtfaWRkGU6TCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFBAAACAQAbmFtZSYAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2hXfilVFDAiYQMKAG5ldHdvcmtfaWQqTGC1CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_door"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeBAAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaNA/q9qAy6Z9AwoAbmV0d29ya19pZDgExS8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaEbeMT605GP4AwoAbmV0d29ya19pZOZjpkkKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3AwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaIsW5pmpJEuQAwoAbmV0d29ya19pZHetwrkKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:exposed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4AwAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoOvrLJ0UowbgDCgBuZXR3b3JrX2lkZj7cPwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:weathered_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5AwAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hh+42XlsWvGAMKAG5ldHdvcmtfaWS7Cy59CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6AwAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaLpTIsnfluiCAwoAbmV0d29ya19pZB9/jS8KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AwAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaFnXvXY5OinzAwoAbmV0d29ya19pZAcKtHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AwAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoHJdq+Pph6hMDCgBuZXR3b3JrX2lkdge7IAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AwAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaMj49OvlTpgCAwoAbmV0d29ya19pZN/r+roKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AwAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hzuO+Sg9LYQwMKAG5ldHdvcmtfaWQ7AN7iCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcHBlcl9idWxiBAkAbmFtZV9oYXNo41TimHOsMWcDCgBuZXR3b3JrX2lkJnZvAgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:exposed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIBAAACAQAbmFtZR0AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2g++f1wYLLCrAMKAG5ldHdvcmtfaWRLdMmGCgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:weathered_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJBAAACAQAbmFtZR8AbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMEtsYfwRTXlAwoAbmV0d29ya19pZAp51LQKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKBAAACAQAbmFtZR4AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNovnrBQZs8nDIDCgBuZXR3b3JrX2lkPsj0AAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLBAAACAQAbmFtZRsAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoGTg6TYllMiIDCgBuZXR3b3JrX2lk9m0WhgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMBAAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2gI6xkPcvBDVwMKAG5ldHdvcmtfaWR7BRcACgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMsUnmp3/VqVAwoAbmV0d29ya19pZEoworoKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoBFKxY3fjVq4DCgBuZXR3b3JrX2lkzrJ6aAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:emerald_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:diamond_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lapis_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:raw_iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:raw_copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:raw_gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZE2axGsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:quartz_pillar",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5BAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9waWxsYXIECQBuYW1lX2hhc2igp62HI+PuSwMKAG5ldHdvcmtfaWS9SGXLCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3F1YXJ0el9ibG9jawQJAG5hbWVfaGFzaAftJM9mCAvaAwoAbmV0d29ya19pZFwy0s0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:smooth_quartz",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6BAAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9xdWFydHoECQBuYW1lX2hhc2hIVzzgiItGagMKAG5ldHdvcmtfaWTVWgU2CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWQnuuW1CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZQQJAG5hbWVfaGFzaK+rhxsgkzplAwoAbmV0d29ya19pZIdA0I0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:slime",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:honey_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:honeycomb_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:hay_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:netherite_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:lodestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:white_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:black_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brown_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:orange_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:yellow_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lime_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:green_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:purple_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:magenta_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:pink_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:white_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:black_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brown_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:orange_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lime_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:green_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cyan_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:purple_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pink_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:white_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:black_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brown_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:orange_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lime_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:green_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cyan_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:purple_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pink_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:white_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:black_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:brown_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:red_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:orange_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:yellow_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:lime_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:green_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cyan_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:light_blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:purple_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:magenta_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:pink_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:hardened_clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:white_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:black_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brown_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:orange_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:yellow_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lime_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:green_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:purple_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:magenta_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:pink_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:white_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:silver_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gray_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:black_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brown_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:orange_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:yellow_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lime_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:green_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:purple_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:magenta_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:pink_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZLD8ox4KBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQcAZGVmYXVsdAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZPSAFFsKBgBzdGF0ZXMICwBjaGlzZWxfdHlwZQUAbGluZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:packed_mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:mud_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:nether_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:shroomlight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:crimson_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:netherrack",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:smooth_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:soul_soil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWSG706CCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:coarse_dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYXJzZV9kaXJ0BAkAbmFtZV9oYXNosd+cah7WSmoDCgBuZXR3b3JrX2lkgS5RcAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:farmland",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:grass_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:grass_path",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:podzol",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mycelium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:quartz_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:nether_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:ancient_debris",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:deepslate_iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWRjeUMICgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:red_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0BAAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF9zYW5kBAkAbmFtZV9oYXNoCiarI69JQCkDCgBuZXR3b3JrX2lkU8UD/AoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cactus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stripped_birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stripped_dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stripped_mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stripped_crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWTok1JCCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkBDABzdHJpcHBlZF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkEALMfAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AQwAc3RyaXBwZWRfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stripped_cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stripped_crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:stripped_warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:stripped_bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:spruce_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:birch_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:jungle_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:acacia_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:mangrove_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cherry_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:azalea_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:azalea_leaves_flowered",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:birch_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jungle_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_propagule",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cherry_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bee_nest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:wheat_seeds"
-        },
-        {
-            "id": "minecraft:pumpkin_seeds"
-        },
-        {
-            "id": "minecraft:melon_seeds"
-        },
-        {
-            "id": "minecraft:beetroot_seeds"
-        },
-        {
-            "id": "minecraft:torchflower_seeds"
-        },
-        {
-            "id": "minecraft:pitcher_pod"
-        },
-        {
-            "id": "minecraft:wheat"
-        },
-        {
-            "id": "minecraft:beetroot"
-        },
-        {
-            "id": "minecraft:potato"
-        },
-        {
-            "id": "minecraft:poisonous_potato"
-        },
-        {
-            "id": "minecraft:carrot"
-        },
-        {
-            "id": "minecraft:golden_carrot"
-        },
-        {
-            "id": "minecraft:apple"
-        },
-        {
-            "id": "minecraft:golden_apple"
-        },
-        {
-            "id": "minecraft:enchanted_golden_apple"
-        },
-        {
-            "id": "minecraft:melon_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:melon_slice"
-        },
-        {
-            "id": "minecraft:glistering_melon_slice"
-        },
-        {
-            "id": "minecraft:sweet_berries"
-        },
-        {
-            "id": "minecraft:glow_berries"
-        },
-        {
-            "id": "minecraft:pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:carved_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lit_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:honeycomb"
-        },
-        {
-            "id": "minecraft:fern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:large_fern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgBAAACAQAbmFtZRQAbWluZWNyYWZ0OmxhcmdlX2Zlcm4ECQBuYW1lX2hhc2gnE9sd0LzHtQMKAG5ldHdvcmtfaWTS9hG4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:short_grass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNob3J0X2dyYXNzBAkAbmFtZV9oYXNobWQghLH0bLcDCgBuZXR3b3JrX2lkJWOOqAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:tall_grass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfBAAACAQAbmFtZRQAbWluZWNyYWZ0OnRhbGxfZ3Jhc3MECQBuYW1lX2hhc2ii5MyZJpv4sgMKAG5ldHdvcmtfaWRRfeH4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:nether_sprouts"
-        },
-        {
-            "id": "minecraft:fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dead_fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dead_tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dead_fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dead_tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:warped_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dandelion",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRhbmRlbGlvbgQJAG5hbWVfaGFzaBJ3bEUi+Nn/AwoAbmV0d29ya19pZBjjC44KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:poppy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:blue_orchid",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:allium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:azure_bluet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:red_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:orange_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:white_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pink_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:oxeye_daisy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cornflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lily_of_the_valley",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:sunflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRMAbWluZWNyYWZ0OnN1bmZsb3dlcgQJAG5hbWVfaGFzaAMxYQLoqlZ0AwoAbmV0d29ya19pZA10iSoKBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lilac",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReBAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxpbGFjBAkAbmFtZV9oYXNoD3nrQJuo7NkDCgBuZXR3b3JrX2lk5W+uFAoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:rose_bush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhBAAACAQAbmFtZRMAbWluZWNyYWZ0OnJvc2VfYnVzaAQJAG5hbWVfaGFzaLoiFk8LVpGKAwoAbmV0d29ya19pZMZPv48KBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:peony",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiBAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBlb255BAkAbmFtZV9oYXNoR4dYc4QquPADCgBuZXR3b3JrX2lkrTe7RwoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:pitcher_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pink_petals",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:wither_rose",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:torchflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:white_dye"
-        },
-        {
-            "id": "minecraft:light_gray_dye"
-        },
-        {
-            "id": "minecraft:gray_dye"
-        },
-        {
-            "id": "minecraft:black_dye"
-        },
-        {
-            "id": "minecraft:brown_dye"
-        },
-        {
-            "id": "minecraft:red_dye"
-        },
-        {
-            "id": "minecraft:orange_dye"
-        },
-        {
-            "id": "minecraft:yellow_dye"
-        },
-        {
-            "id": "minecraft:lime_dye"
-        },
-        {
-            "id": "minecraft:green_dye"
-        },
-        {
-            "id": "minecraft:cyan_dye"
-        },
-        {
-            "id": "minecraft:light_blue_dye"
-        },
-        {
-            "id": "minecraft:blue_dye"
-        },
-        {
-            "id": "minecraft:purple_dye"
-        },
-        {
-            "id": "minecraft:magenta_dye"
-        },
-        {
-            "id": "minecraft:pink_dye"
-        },
-        {
-            "id": "minecraft:ink_sac"
-        },
-        {
-            "id": "minecraft:glow_ink_sac"
-        },
-        {
-            "id": "minecraft:cocoa_beans"
-        },
-        {
-            "id": "minecraft:lapis_lazuli"
-        },
-        {
-            "id": "minecraft:bone_meal"
-        },
-        {
-            "id": "minecraft:vine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:weeping_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:twisting_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:waterlily",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:seagrass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:kelp"
-        },
-        {
-            "id": "minecraft:deadbush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:bamboo",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:snow",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:packed_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:blue_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:snow_layer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pointed_dripstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dripstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:moss_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:moss_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dirt_with_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:hanging_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:muddy_mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:big_dripleaf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:small_dripleaf_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spore_blossom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:flowering_azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:glow_lichen",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkCh8lSAoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHM/AAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:amethyst_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:budding_amethyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:amethyst_cluster",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:large_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:medium_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:small_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfc3RhaXJzBAkAbmFtZV9oYXNoKjyNUBjcfZsDCgBuZXR3b3JrX2lk+LsycgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:tuff_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfc2xhYgQJAG5hbWVfaGFzaIhCGdlIsnMUAwoAbmV0d29ya19pZN1dUL4KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfd2FsbAQJAG5hbWVfaGFzaMyeeu1IRf03AwoAbmV0d29ya19pZDkIrosKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmYECQBuYW1lX2hhc2iVliOT8OTQ9AMKAG5ldHdvcmtfaWTLNKOiCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmYECQBuYW1lX2hhc2hyaLe/KEVZ0gMKAG5ldHdvcmtfaWTcX3NrCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc3RhaXJzBAkAbmFtZV9oYXNo8yuah8QI1dcDCgBuZXR3b3JrX2lkjLoU4AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:polished_tuff_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc2xhYgQJAG5hbWVfaGFzaLXdb48YvAsHAwoAbmV0d29ya19pZAnJ7W0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfd2FsbAQJAG5hbWVfaGFzaJVZj6QYWXUrAwoAbmV0d29ya19pZLU7dooKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:tuff_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo/hbQ+mXSK7wDCgBuZXR3b3JrX2lk6gmIwQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:tuff_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0AwAACAQAbmFtZRsAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNoWJpkAurUfKwDCgBuZXR3b3JrX2lkUMcjiwoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:tuff_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaLqPMjVCv5dIAwoAbmV0d29ya19pZOmeRhcKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaIL0IyNCOsonAwoAbmV0d29ya19pZJW4T5UKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chiseled_tuff_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AwAACAQAbmFtZR4AbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo3oQw6gmxYuADCgBuZXR3b3JrX2lkm3D8AgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:calcite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:chicken"
-        },
-        {
-            "id": "minecraft:porkchop"
-        },
-        {
-            "id": "minecraft:beef"
-        },
-        {
-            "id": "minecraft:mutton"
-        },
-        {
-            "id": "minecraft:rabbit"
-        },
-        {
-            "id": "minecraft:cod"
-        },
-        {
-            "id": "minecraft:salmon"
-        },
-        {
-            "id": "minecraft:tropical_fish"
-        },
-        {
-            "id": "minecraft:pufferfish"
-        },
-        {
-            "id": "minecraft:brown_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:red_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkbdt3CAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw8AAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkSrMl9goGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cwAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:egg"
-        },
-        {
-            "id": "minecraft:sugar_cane"
-        },
-        {
-            "id": "minecraft:sugar"
-        },
-        {
-            "id": "minecraft:rotten_flesh"
-        },
-        {
-            "id": "minecraft:bone"
-        },
-        {
-            "id": "minecraft:web",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:spider_eye"
-        },
-        {
-            "id": "minecraft:mob_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:trial_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AgAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaWFsX3NwYXduZXIECQBuYW1lX2hhc2iNLRPB4ACz+QMKAG5ldHdvcmtfaWTWFYHGCgYAc3RhdGVzAQcAb21pbm91cwADEwB0cmlhbF9zcGF3bmVyX3N0YXRlAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:vault",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AgAACAQAbmFtZQ8AbWluZWNyYWZ0OnZhdWx0BAkAbmFtZV9oYXNoCAp9n3IAyqcDCgBuZXR3b3JrX2lk6/P+vwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQcAb21pbm91cwAICwB2YXVsdF9zdGF0ZQgAaW5hY3RpdmUAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:end_portal_frame",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:infested_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRgAbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lBAkAbmFtZV9oYXNoxnRcHDu4zqQDCgBuZXR3b3JrX2lkpfcnsgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:infested_cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZBAAACAQAbmFtZR4AbWluZWNyYWZ0OmluZmVzdGVkX2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoy+LVCKG2kVMDCgBuZXR3b3JrX2lkpn+icAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:infested_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaBAAACAQAbmFtZR8AbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaBMnals7a32CAwoAbmV0d29ya19pZNHi2UYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:infested_mossy_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbBAAACAQAbmFtZSUAbWluZWNyYWZ0OmluZmVzdGVkX21vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaAmJk+HmVq0rAwoAbmV0d29ya19pZAVH8/sKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:infested_cracked_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcBAAACAQAbmFtZScAbWluZWNyYWZ0OmluZmVzdGVkX2NyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoMyc60XcfcyoDCgBuZXR3b3JrX2lkaW+kbQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:infested_chiseled_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdBAAACAQAbmFtZSgAbWluZWNyYWZ0OmluZmVzdGVkX2NoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaNUvNIIg9dZbAwoAbmV0d29ya19pZCajGicKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:infested_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dragon_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:turtle_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sniffer_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:frog_spawn",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:pearlescent_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:verdant_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:ochre_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chicken_spawn_egg"
-        },
-        {
-            "id": "minecraft:bee_spawn_egg"
-        },
-        {
-            "id": "minecraft:cow_spawn_egg"
-        },
-        {
-            "id": "minecraft:pig_spawn_egg"
-        },
-        {
-            "id": "minecraft:sheep_spawn_egg"
-        },
-        {
-            "id": "minecraft:wolf_spawn_egg"
-        },
-        {
-            "id": "minecraft:polar_bear_spawn_egg"
-        },
-        {
-            "id": "minecraft:ocelot_spawn_egg"
-        },
-        {
-            "id": "minecraft:cat_spawn_egg"
-        },
-        {
-            "id": "minecraft:mooshroom_spawn_egg"
-        },
-        {
-            "id": "minecraft:bat_spawn_egg"
-        },
-        {
-            "id": "minecraft:parrot_spawn_egg"
-        },
-        {
-            "id": "minecraft:rabbit_spawn_egg"
-        },
-        {
-            "id": "minecraft:llama_spawn_egg"
-        },
-        {
-            "id": "minecraft:horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:donkey_spawn_egg"
-        },
-        {
-            "id": "minecraft:mule_spawn_egg"
-        },
-        {
-            "id": "minecraft:skeleton_horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_horse_spawn_egg"
-        },
-        {
-            "id": "minecraft:tropical_fish_spawn_egg"
-        },
-        {
-            "id": "minecraft:cod_spawn_egg"
-        },
-        {
-            "id": "minecraft:pufferfish_spawn_egg"
-        },
-        {
-            "id": "minecraft:salmon_spawn_egg"
-        },
-        {
-            "id": "minecraft:dolphin_spawn_egg"
-        },
-        {
-            "id": "minecraft:turtle_spawn_egg"
-        },
-        {
-            "id": "minecraft:panda_spawn_egg"
-        },
-        {
-            "id": "minecraft:fox_spawn_egg"
-        },
-        {
-            "id": "minecraft:creeper_spawn_egg"
-        },
-        {
-            "id": "minecraft:enderman_spawn_egg"
-        },
-        {
-            "id": "minecraft:silverfish_spawn_egg"
-        },
-        {
-            "id": "minecraft:skeleton_spawn_egg"
-        },
-        {
-            "id": "minecraft:wither_skeleton_spawn_egg"
-        },
-        {
-            "id": "minecraft:stray_spawn_egg"
-        },
-        {
-            "id": "minecraft:slime_spawn_egg"
-        },
-        {
-            "id": "minecraft:spider_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_pigman_spawn_egg"
-        },
-        {
-            "id": "minecraft:husk_spawn_egg"
-        },
-        {
-            "id": "minecraft:drowned_spawn_egg"
-        },
-        {
-            "id": "minecraft:squid_spawn_egg"
-        },
-        {
-            "id": "minecraft:glow_squid_spawn_egg"
-        },
-        {
-            "id": "minecraft:cave_spider_spawn_egg"
-        },
-        {
-            "id": "minecraft:witch_spawn_egg"
-        },
-        {
-            "id": "minecraft:guardian_spawn_egg"
-        },
-        {
-            "id": "minecraft:elder_guardian_spawn_egg"
-        },
-        {
-            "id": "minecraft:endermite_spawn_egg"
-        },
-        {
-            "id": "minecraft:magma_cube_spawn_egg"
-        },
-        {
-            "id": "minecraft:strider_spawn_egg"
-        },
-        {
-            "id": "minecraft:hoglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:piglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:zoglin_spawn_egg"
-        },
-        {
-            "id": "minecraft:piglin_brute_spawn_egg"
-        },
-        {
-            "id": "minecraft:goat_spawn_egg"
-        },
-        {
-            "id": "minecraft:axolotl_spawn_egg"
-        },
-        {
-            "id": "minecraft:warden_spawn_egg"
-        },
-        {
-            "id": "minecraft:allay_spawn_egg"
-        },
-        {
-            "id": "minecraft:frog_spawn_egg"
-        },
-        {
-            "id": "minecraft:tadpole_spawn_egg"
-        },
-        {
-            "id": "minecraft:trader_llama_spawn_egg"
-        },
-        {
-            "id": "minecraft:camel_spawn_egg"
-        },
-        {
-            "id": "minecraft:ghast_spawn_egg"
-        },
-        {
-            "id": "minecraft:blaze_spawn_egg"
-        },
-        {
-            "id": "minecraft:shulker_spawn_egg"
-        },
-        {
-            "id": "minecraft:vindicator_spawn_egg"
-        },
-        {
-            "id": "minecraft:evoker_spawn_egg"
-        },
-        {
-            "id": "minecraft:vex_spawn_egg"
-        },
-        {
-            "id": "minecraft:villager_spawn_egg"
-        },
-        {
-            "id": "minecraft:wandering_trader_spawn_egg"
-        },
-        {
-            "id": "minecraft:zombie_villager_spawn_egg"
-        },
-        {
-            "id": "minecraft:phantom_spawn_egg"
-        },
-        {
-            "id": "minecraft:pillager_spawn_egg"
-        },
-        {
-            "id": "minecraft:ravager_spawn_egg"
-        },
-        {
-            "id": "minecraft:iron_golem_spawn_egg"
-        },
-        {
-            "id": "minecraft:snow_golem_spawn_egg"
-        },
-        {
-            "id": "minecraft:sniffer_spawn_egg"
-        },
-        {
-            "id": "minecraft:breeze_spawn_egg"
-        },
-        {
-            "id": "minecraft:armadillo_spawn_egg"
-        },
-        {
-            "id": "minecraft:bogged_spawn_egg"
-        },
-        {
-            "id": "minecraft:obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:crying_obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bedrock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:soul_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:magma",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:nether_wart"
-        },
-        {
-            "id": "minecraft:end_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chorus_flower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:chorus_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chorus_fruit"
-        },
-        {
-            "id": "minecraft:popped_chorus_fruit"
-        },
-        {
-            "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZF01rO0KBgBzdGF0ZXMICwBzcG9uZ2VfdHlwZQMAZHJ5AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZPiOc4QKBgBzdGF0ZXMICwBzcG9uZ2VfdHlwZQMAd2V0AAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:tube_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:brain_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQBAAACAQAbmFtZRsAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoeDNAK18yUo4DCgBuZXR3b3JrX2lkloN1vgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:bubble_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRBAAACAQAbmFtZRwAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaAI2mwMlvcNbAwoAbmV0d29ya19pZBlkxKIKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:fire_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSBAAACAQAbmFtZRoAbWluZWNyYWZ0OmZpcmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2gg1gLeXLmKaAMKAG5ldHdvcmtfaWSp3W57CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:horn_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTBAAACAQAbmFtZRoAbWluZWNyYWZ0Omhvcm5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2hnZSLRWUwGhAMKAG5ldHdvcmtfaWRSK6ccCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dead_tube_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaB9+lY3hAkNNAwoAbmV0d29ya19pZF0hKKYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dead_brain_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVBAAACAQAbmFtZSAAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2iHyDn52AO8uwMKAG5ldHdvcmtfaWQw7yCaCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dead_bubble_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWBAAACAQAbmFtZSEAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNotwkk/ITrsjADCgBuZXR3b3JrX2lk56mXUgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dead_fire_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaG0qHxbIrBEyAwoAbmV0d29ya19pZFvnH88KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:dead_horn_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaL7D8bu4Fm+0AwoAbmV0d29ya19pZEALRLoKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:sculk",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sculk_vein",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:sculk_catalyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sculk_shrieker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:calibrated_sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:reinforced_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:leather_helmet"
-        },
-        {
-            "id": "minecraft:chainmail_helmet"
-        },
-        {
-            "id": "minecraft:iron_helmet"
-        },
-        {
-            "id": "minecraft:golden_helmet"
-        },
-        {
-            "id": "minecraft:diamond_helmet"
-        },
-        {
-            "id": "minecraft:netherite_helmet"
-        },
-        {
-            "id": "minecraft:leather_chestplate"
-        },
-        {
-            "id": "minecraft:chainmail_chestplate"
-        },
-        {
-            "id": "minecraft:iron_chestplate"
-        },
-        {
-            "id": "minecraft:golden_chestplate"
-        },
-        {
-            "id": "minecraft:diamond_chestplate"
-        },
-        {
-            "id": "minecraft:netherite_chestplate"
-        },
-        {
-            "id": "minecraft:leather_leggings"
-        },
-        {
-            "id": "minecraft:chainmail_leggings"
-        },
-        {
-            "id": "minecraft:iron_leggings"
-        },
-        {
-            "id": "minecraft:golden_leggings"
-        },
-        {
-            "id": "minecraft:diamond_leggings"
-        },
-        {
-            "id": "minecraft:netherite_leggings"
-        },
-        {
-            "id": "minecraft:leather_boots"
-        },
-        {
-            "id": "minecraft:chainmail_boots"
-        },
-        {
-            "id": "minecraft:iron_boots"
-        },
-        {
-            "id": "minecraft:golden_boots"
-        },
-        {
-            "id": "minecraft:diamond_boots"
-        },
-        {
-            "id": "minecraft:netherite_boots"
-        },
-        {
-            "id": "minecraft:wooden_sword"
-        },
-        {
-            "id": "minecraft:stone_sword"
-        },
-        {
-            "id": "minecraft:iron_sword"
-        },
-        {
-            "id": "minecraft:golden_sword"
-        },
-        {
-            "id": "minecraft:diamond_sword"
-        },
-        {
-            "id": "minecraft:netherite_sword"
-        },
-        {
-            "id": "minecraft:wooden_axe"
-        },
-        {
-            "id": "minecraft:stone_axe"
-        },
-        {
-            "id": "minecraft:iron_axe"
-        },
-        {
-            "id": "minecraft:golden_axe"
-        },
-        {
-            "id": "minecraft:diamond_axe"
-        },
-        {
-            "id": "minecraft:netherite_axe"
-        },
-        {
-            "id": "minecraft:wooden_pickaxe"
-        },
-        {
-            "id": "minecraft:stone_pickaxe"
-        },
-        {
-            "id": "minecraft:iron_pickaxe"
-        },
-        {
-            "id": "minecraft:golden_pickaxe"
-        },
-        {
-            "id": "minecraft:diamond_pickaxe"
-        },
-        {
-            "id": "minecraft:netherite_pickaxe"
-        },
-        {
-            "id": "minecraft:wooden_shovel"
-        },
-        {
-            "id": "minecraft:stone_shovel"
-        },
-        {
-            "id": "minecraft:iron_shovel"
-        },
-        {
-            "id": "minecraft:golden_shovel"
-        },
-        {
-            "id": "minecraft:diamond_shovel"
-        },
-        {
-            "id": "minecraft:netherite_shovel"
-        },
-        {
-            "id": "minecraft:wooden_hoe"
-        },
-        {
-            "id": "minecraft:stone_hoe"
-        },
-        {
-            "id": "minecraft:iron_hoe"
-        },
-        {
-            "id": "minecraft:golden_hoe"
-        },
-        {
-            "id": "minecraft:diamond_hoe"
-        },
-        {
-            "id": "minecraft:netherite_hoe"
-        },
-        {
-            "id": "minecraft:bow"
-        },
-        {
-            "id": "minecraft:crossbow"
-        },
-        {
-            "id": "minecraft:mace"
-        },
-        {
-            "id": "minecraft:arrow"
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:arrow",
-            "damage": 47
-        },
-        {
-            "id": "minecraft:ominous_bottle"
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:shield"
-        },
-        {
-            "id": "minecraft:cooked_chicken"
-        },
-        {
-            "id": "minecraft:cooked_porkchop"
-        },
-        {
-            "id": "minecraft:cooked_beef"
-        },
-        {
-            "id": "minecraft:cooked_mutton"
-        },
-        {
-            "id": "minecraft:cooked_rabbit"
-        },
-        {
-            "id": "minecraft:cooked_cod"
-        },
-        {
-            "id": "minecraft:cooked_salmon"
-        },
-        {
-            "id": "minecraft:bread"
-        },
-        {
-            "id": "minecraft:mushroom_stew"
-        },
-        {
-            "id": "minecraft:beetroot_soup"
-        },
-        {
-            "id": "minecraft:rabbit_stew"
-        },
-        {
-            "id": "minecraft:baked_potato"
-        },
-        {
-            "id": "minecraft:cookie"
-        },
-        {
-            "id": "minecraft:pumpkin_pie"
-        },
-        {
-            "id": "minecraft:cake"
-        },
-        {
-            "id": "minecraft:dried_kelp"
-        },
-        {
-            "id": "minecraft:fishing_rod"
-        },
-        {
-            "id": "minecraft:carrot_on_a_stick"
-        },
-        {
-            "id": "minecraft:warped_fungus_on_a_stick"
-        },
-        {
-            "id": "minecraft:snowball"
-        },
-        {
-            "id": "minecraft:wind_charge"
-        },
-        {
-            "id": "minecraft:shears"
-        },
-        {
-            "id": "minecraft:flint_and_steel"
-        },
-        {
-            "id": "minecraft:lead"
-        },
-        {
-            "id": "minecraft:clock"
-        },
-        {
-            "id": "minecraft:compass"
-        },
-        {
-            "id": "minecraft:recovery_compass"
-        },
-        {
-            "id": "minecraft:goat_horn"
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:goat_horn",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:empty_map"
-        },
-        {
-            "id": "minecraft:empty_map",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:saddle"
-        },
-        {
-            "id": "minecraft:leather_horse_armor"
-        },
-        {
-            "id": "minecraft:iron_horse_armor"
-        },
-        {
-            "id": "minecraft:golden_horse_armor"
-        },
-        {
-            "id": "minecraft:diamond_horse_armor"
-        },
-        {
-            "id": "minecraft:wolf_armor"
-        },
-        {
-            "id": "minecraft:trident"
-        },
-        {
-            "id": "minecraft:turtle_helmet"
-        },
-        {
-            "id": "minecraft:elytra"
-        },
-        {
-            "id": "minecraft:totem_of_undying"
-        },
-        {
-            "id": "minecraft:glass_bottle"
-        },
-        {
-            "id": "minecraft:experience_bottle"
-        },
-        {
-            "id": "minecraft:potion"
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:potion",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:splash_potion"
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:splash_potion",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:lingering_potion"
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 16
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 17
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 18
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 19
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 20
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 21
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 22
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 23
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 24
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 25
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 26
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 27
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 28
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 29
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 30
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 31
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 32
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 33
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 34
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 35
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 36
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 37
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 38
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 39
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 40
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 41
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 42
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 43
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 44
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 45
-        },
-        {
-            "id": "minecraft:lingering_potion",
-            "damage": 46
-        },
-        {
-            "id": "minecraft:spyglass"
-        },
-        {
-            "id": "minecraft:brush"
-        },
-        {
-            "id": "minecraft:stick"
-        },
-        {
-            "id": "minecraft:bed"
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 8
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 7
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 15
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 12
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 14
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 13
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 9
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 11
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 10
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:bed",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:soul_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sea_pickle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:soul_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:white_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:orange_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:yellow_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:lime_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:pink_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cyan_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:purple_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:brown_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:green_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:red_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:black_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crafting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cartography_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:fletching_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:smithing_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:beehive",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:suspicious_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:suspicious_gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:campfire"
-        },
-        {
-            "id": "minecraft:soul_campfire"
-        },
-        {
-            "id": "minecraft:furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:blast_furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:smoker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:respawn_anchor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:brewing_stand"
-        },
-        {
-            "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkqXzNjwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:chipped_anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+BAAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXBwZWRfYW52aWwECQBuYW1lX2hhc2ge+QY3vlS/eQMKAG5ldHdvcmtfaWRJ15iUCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:damaged_anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/BAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhbWFnZWRfYW52aWwECQBuYW1lX2hhc2imJ12Be2V8+AMKAG5ldHdvcmtfaWRh5SHkCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:grindstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:enchanting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lectern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cauldron"
-        },
-        {
-            "id": "minecraft:composter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:trapped_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:ender_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:barrel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:undyed_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:white_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:light_gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:black_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:brown_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:red_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:orange_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:yellow_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:lime_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:green_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:cyan_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:light_blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:purple_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:magenta_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:pink_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:armor_stand"
-        },
-        {
-            "id": "minecraft:noteblock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jukebox",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:music_disc_13"
-        },
-        {
-            "id": "minecraft:music_disc_cat"
-        },
-        {
-            "id": "minecraft:music_disc_blocks"
-        },
-        {
-            "id": "minecraft:music_disc_chirp"
-        },
-        {
-            "id": "minecraft:music_disc_far"
-        },
-        {
-            "id": "minecraft:music_disc_mall"
-        },
-        {
-            "id": "minecraft:music_disc_mellohi"
-        },
-        {
-            "id": "minecraft:music_disc_stal"
-        },
-        {
-            "id": "minecraft:music_disc_strad"
-        },
-        {
-            "id": "minecraft:music_disc_ward"
-        },
-        {
-            "id": "minecraft:music_disc_11"
-        },
-        {
-            "id": "minecraft:music_disc_wait"
-        },
-        {
-            "id": "minecraft:music_disc_otherside"
-        },
-        {
-            "id": "minecraft:music_disc_5"
-        },
-        {
-            "id": "minecraft:music_disc_pigstep"
-        },
-        {
-            "id": "minecraft:music_disc_relic"
-        },
-        {
-            "id": "minecraft:music_disc_creator"
-        },
-        {
-            "id": "minecraft:music_disc_creator_music_box"
-        },
-        {
-            "id": "minecraft:music_disc_precipice"
-        },
-        {
-            "id": "minecraft:disc_fragment_5"
-        },
-        {
-            "id": "minecraft:glowstone_dust"
-        },
-        {
-            "id": "minecraft:glowstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:redstone_lamp",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:sea_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:oak_sign"
-        },
-        {
-            "id": "minecraft:spruce_sign"
-        },
-        {
-            "id": "minecraft:birch_sign"
-        },
-        {
-            "id": "minecraft:jungle_sign"
-        },
-        {
-            "id": "minecraft:acacia_sign"
-        },
-        {
-            "id": "minecraft:dark_oak_sign"
-        },
-        {
-            "id": "minecraft:mangrove_sign"
-        },
-        {
-            "id": "minecraft:cherry_sign"
-        },
-        {
-            "id": "minecraft:bamboo_sign"
-        },
-        {
-            "id": "minecraft:crimson_sign"
-        },
-        {
-            "id": "minecraft:warped_sign"
-        },
-        {
-            "id": "minecraft:oak_hanging_sign"
-        },
-        {
-            "id": "minecraft:spruce_hanging_sign"
-        },
-        {
-            "id": "minecraft:birch_hanging_sign"
-        },
-        {
-            "id": "minecraft:jungle_hanging_sign"
-        },
-        {
-            "id": "minecraft:acacia_hanging_sign"
-        },
-        {
-            "id": "minecraft:dark_oak_hanging_sign"
-        },
-        {
-            "id": "minecraft:mangrove_hanging_sign"
-        },
-        {
-            "id": "minecraft:cherry_hanging_sign"
-        },
-        {
-            "id": "minecraft:bamboo_hanging_sign"
-        },
-        {
-            "id": "minecraft:crimson_hanging_sign"
-        },
-        {
-            "id": "minecraft:warped_hanging_sign"
-        },
-        {
-            "id": "minecraft:painting"
-        },
-        {
-            "id": "minecraft:frame"
-        },
-        {
-            "id": "minecraft:glow_frame"
-        },
-        {
-            "id": "minecraft:honey_bottle"
-        },
-        {
-            "id": "minecraft:flower_pot"
-        },
-        {
-            "id": "minecraft:bowl"
-        },
-        {
-            "id": "minecraft:bucket"
-        },
-        {
-            "id": "minecraft:milk_bucket"
-        },
-        {
-            "id": "minecraft:water_bucket"
-        },
-        {
-            "id": "minecraft:lava_bucket"
-        },
-        {
-            "id": "minecraft:cod_bucket"
-        },
-        {
-            "id": "minecraft:salmon_bucket"
-        },
-        {
-            "id": "minecraft:tropical_fish_bucket"
-        },
-        {
-            "id": "minecraft:pufferfish_bucket"
-        },
-        {
-            "id": "minecraft:powder_snow_bucket"
-        },
-        {
-            "id": "minecraft:axolotl_bucket"
-        },
-        {
-            "id": "minecraft:tadpole_bucket"
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 4
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 5
-        },
-        {
-            "id": "minecraft:skull"
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:skull",
-            "damage": 6
-        },
-        {
-            "id": "minecraft:beacon",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:bell",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:conduit",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stonecutter_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:coal"
-        },
-        {
-            "id": "minecraft:charcoal"
-        },
-        {
-            "id": "minecraft:diamond"
-        },
-        {
-            "id": "minecraft:iron_nugget"
-        },
-        {
-            "id": "minecraft:raw_iron"
-        },
-        {
-            "id": "minecraft:raw_gold"
-        },
-        {
-            "id": "minecraft:raw_copper"
-        },
-        {
-            "id": "minecraft:copper_ingot"
-        },
-        {
-            "id": "minecraft:iron_ingot"
-        },
-        {
-            "id": "minecraft:netherite_scrap"
-        },
-        {
-            "id": "minecraft:netherite_ingot"
-        },
-        {
-            "id": "minecraft:gold_nugget"
-        },
-        {
-            "id": "minecraft:gold_ingot"
-        },
-        {
-            "id": "minecraft:emerald"
-        },
-        {
-            "id": "minecraft:quartz"
-        },
-        {
-            "id": "minecraft:clay_ball"
-        },
-        {
-            "id": "minecraft:brick"
-        },
-        {
-            "id": "minecraft:netherbrick"
-        },
-        {
-            "id": "minecraft:prismarine_shard"
-        },
-        {
-            "id": "minecraft:amethyst_shard"
-        },
-        {
-            "id": "minecraft:prismarine_crystals"
-        },
-        {
-            "id": "minecraft:nautilus_shell"
-        },
-        {
-            "id": "minecraft:heart_of_the_sea"
-        },
-        {
-            "id": "minecraft:turtle_scute"
-        },
-        {
-            "id": "minecraft:armadillo_scute"
-        },
-        {
-            "id": "minecraft:phantom_membrane"
-        },
-        {
-            "id": "minecraft:string"
-        },
-        {
-            "id": "minecraft:feather"
-        },
-        {
-            "id": "minecraft:flint"
-        },
-        {
-            "id": "minecraft:gunpowder"
-        },
-        {
-            "id": "minecraft:leather"
-        },
-        {
-            "id": "minecraft:rabbit_hide"
-        },
-        {
-            "id": "minecraft:rabbit_foot"
-        },
-        {
-            "id": "minecraft:fire_charge"
-        },
-        {
-            "id": "minecraft:blaze_rod"
-        },
-        {
-            "id": "minecraft:breeze_rod"
-        },
-        {
-            "id": "minecraft:heavy_core",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AgAACAQAbmFtZRQAbWluZWNyYWZ0OmhlYXZ5X2NvcmUECQBuYW1lX2hhc2hhz/uNCtrC2QMKAG5ldHdvcmtfaWRaFu+8CgYAc3RhdGVzAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:blaze_powder"
-        },
-        {
-            "id": "minecraft:magma_cream"
-        },
-        {
-            "id": "minecraft:fermented_spider_eye"
-        },
-        {
-            "id": "minecraft:echo_shard"
-        },
-        {
-            "id": "minecraft:dragon_breath"
-        },
-        {
-            "id": "minecraft:shulker_shell"
-        },
-        {
-            "id": "minecraft:ghast_tear"
-        },
-        {
-            "id": "minecraft:slime_ball"
-        },
-        {
-            "id": "minecraft:ender_pearl"
-        },
-        {
-            "id": "minecraft:ender_eye"
-        },
-        {
-            "id": "minecraft:nether_star"
-        },
-        {
-            "id": "minecraft:end_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:lightning_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:end_crystal"
-        },
-        {
-            "id": "minecraft:paper"
-        },
-        {
-            "id": "minecraft:book"
-        },
-        {
-            "id": "minecraft:writable_book"
-        },
-        {
-            "id": "minecraft:trial_key"
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQIAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQQAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQVAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQWAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQaAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQbAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQcAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQgAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQhAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAUAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAEAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAIAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAMAAAA="
-        },
-        {
-            "id": "minecraft:enchanted_book",
-            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAQAAAA="
-        },
-        {
-            "id": "minecraft:oak_boat"
-        },
-        {
-            "id": "minecraft:spruce_boat"
-        },
-        {
-            "id": "minecraft:birch_boat"
-        },
-        {
-            "id": "minecraft:jungle_boat"
-        },
-        {
-            "id": "minecraft:acacia_boat"
-        },
-        {
-            "id": "minecraft:dark_oak_boat"
-        },
-        {
-            "id": "minecraft:mangrove_boat"
-        },
-        {
-            "id": "minecraft:cherry_boat"
-        },
-        {
-            "id": "minecraft:bamboo_raft"
-        },
-        {
-            "id": "minecraft:oak_chest_boat"
-        },
-        {
-            "id": "minecraft:spruce_chest_boat"
-        },
-        {
-            "id": "minecraft:birch_chest_boat"
-        },
-        {
-            "id": "minecraft:jungle_chest_boat"
-        },
-        {
-            "id": "minecraft:acacia_chest_boat"
-        },
-        {
-            "id": "minecraft:dark_oak_chest_boat"
-        },
-        {
-            "id": "minecraft:mangrove_chest_boat"
-        },
-        {
-            "id": "minecraft:cherry_chest_boat"
-        },
-        {
-            "id": "minecraft:bamboo_chest_raft"
-        },
-        {
-            "id": "minecraft:rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:golden_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:detector_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:activator_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:minecart"
-        },
-        {
-            "id": "minecraft:chest_minecart"
-        },
-        {
-            "id": "minecraft:hopper_minecart"
-        },
-        {
-            "id": "minecraft:tnt_minecart"
-        },
-        {
-            "id": "minecraft:redstone"
-        },
-        {
-            "id": "minecraft:redstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:redstone_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:lever",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:wooden_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:birch_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jungle_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cherry_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:crimson_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:tripwire_hook",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:wooden_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:birch_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:jungle_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:acacia_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:dark_oak_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:mangrove_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:cherry_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:bamboo_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:warped_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:stone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:light_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:heavy_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:polished_blackstone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:observer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:daylight_detector",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:repeater"
-        },
-        {
-            "id": "minecraft:comparator"
-        },
-        {
-            "id": "minecraft:hopper"
-        },
-        {
-            "id": "minecraft:dropper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:dispenser",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:crafter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AgAACAQAbmFtZREAbWluZWNyYWZ0OmNyYWZ0ZXIECQBuYW1lX2hhc2iLCT/rJmRN8QMKAG5ldHdvcmtfaWTPTbvrCgYAc3RhdGVzAQgAY3JhZnRpbmcACAsAb3JpZW50YXRpb24JAGRvd25fZWFzdAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24GFBUBAA=="
-        },
-        {
-            "id": "minecraft:piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:sticky_piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:tnt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZCGfjU4KBgBzdGF0ZXMBFABhbGxvd191bmRlcndhdGVyX2JpdAABCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:name_tag"
-        },
-        {
-            "id": "minecraft:loom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:banner",
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 8,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 7,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 15,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 12,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 14,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 1,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 4,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 5,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 13,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 9,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 3,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 11,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 10,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 2,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 6,
-            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
-        },
-        {
-            "id": "minecraft:banner",
-            "damage": 15,
-            "nbt_b64": "CgAAAwQAVHlwZQEAAAAA"
-        },
-        {
-            "id": "minecraft:creeper_banner_pattern"
-        },
-        {
-            "id": "minecraft:skull_banner_pattern"
-        },
-        {
-            "id": "minecraft:flower_banner_pattern"
-        },
-        {
-            "id": "minecraft:mojang_banner_pattern"
-        },
-        {
-            "id": "minecraft:field_masoned_banner_pattern"
-        },
-        {
-            "id": "minecraft:bordure_indented_banner_pattern"
-        },
-        {
-            "id": "minecraft:piglin_banner_pattern"
-        },
-        {
-            "id": "minecraft:globe_banner_pattern"
-        },
-        {
-            "id": "minecraft:flow_banner_pattern"
-        },
-        {
-            "id": "minecraft:guster_banner_pattern"
-        },
-        {
-            "id": "minecraft:angler_pottery_sherd"
-        },
-        {
-            "id": "minecraft:archer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:arms_up_pottery_sherd"
-        },
-        {
-            "id": "minecraft:blade_pottery_sherd"
-        },
-        {
-            "id": "minecraft:brewer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:burn_pottery_sherd"
-        },
-        {
-            "id": "minecraft:danger_pottery_sherd"
-        },
-        {
-            "id": "minecraft:explorer_pottery_sherd"
-        },
-        {
-            "id": "minecraft:flow_pottery_sherd"
-        },
-        {
-            "id": "minecraft:friend_pottery_sherd"
-        },
-        {
-            "id": "minecraft:guster_pottery_sherd"
-        },
-        {
-            "id": "minecraft:heart_pottery_sherd"
-        },
-        {
-            "id": "minecraft:heartbreak_pottery_sherd"
-        },
-        {
-            "id": "minecraft:howl_pottery_sherd"
-        },
-        {
-            "id": "minecraft:miner_pottery_sherd"
-        },
-        {
-            "id": "minecraft:mourner_pottery_sherd"
-        },
-        {
-            "id": "minecraft:plenty_pottery_sherd"
-        },
-        {
-            "id": "minecraft:prize_pottery_sherd"
-        },
-        {
-            "id": "minecraft:scrape_pottery_sherd"
-        },
-        {
-            "id": "minecraft:sheaf_pottery_sherd"
-        },
-        {
-            "id": "minecraft:shelter_pottery_sherd"
-        },
-        {
-            "id": "minecraft:skull_pottery_sherd"
-        },
-        {
-            "id": "minecraft:snort_pottery_sherd"
-        },
-        {
-            "id": "minecraft:netherite_upgrade_smithing_template"
-        },
-        {
-            "id": "minecraft:sentry_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:vex_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:wild_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:coast_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:dune_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:wayfinder_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:shaper_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:raiser_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:host_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:ward_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:silence_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:tide_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:snout_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:rib_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:eye_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:spire_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:flow_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:bolt_armor_trim_smithing_template"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwAAAAAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAABwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAIBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAHBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAPBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAMBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAOBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAABBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAEBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAFBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAANBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAJBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAADBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAALBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAKBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAACBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_rocket",
-            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAGBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
-        },
-        {
-            "id": "minecraft:firework_star",
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yIR0d/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 8,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yUk9H/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 7,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yl52d/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 15,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y8PDw/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 12,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y2rM6/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 14,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yHYD5/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 1,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yJi6w/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 4,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqkQ8/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 5,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yuDKJ/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 13,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yvU7H/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 9,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqovz/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 3,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yMlSD/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 11,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yPdj+/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 10,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yH8eA/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 2,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yFnxe/wA="
-        },
-        {
-            "id": "minecraft:firework_star",
-            "damage": 6,
-            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9ynJwW/wA="
-        },
-        {
-            "id": "minecraft:chain"
-        },
-        {
-            "id": "minecraft:target",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbgYUFQEA"
-        },
-        {
-            "id": "minecraft:decorated_pot",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBhQVAQA="
-        },
-        {
-            "id": "minecraft:lodestone_compass"
-        },
-        {
-            "id": "minecraft:wither_spawn_egg"
-        },
-        {
-            "id": "minecraft:ender_dragon_spawn_egg"
-        },
-        {
-            "id": "minecraft:ominous_trial_key"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/creative_items.1_21_30.json b/core/src/main/resources/bedrock/creative_items.1_21_50.json
similarity index 84%
rename from core/src/main/resources/bedrock/creative_items.1_21_30.json
rename to core/src/main/resources/bedrock/creative_items.1_21_50.json
index 8fab4638e..a1d4ac6ef 100644
--- a/core/src/main/resources/bedrock/creative_items.1_21_30.json
+++ b/core/src/main/resources/bedrock/creative_items.1_21_50.json
@@ -2,443 +2,491 @@
     "items": [
         {
             "id": "minecraft:oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spruce_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:birch_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jungle_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:acacia_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dark_oak_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mangrove_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cherry_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_planks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaDbrgXmqzgxDAwoAbmV0d29ya19pZFpM6OoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bamboo_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:bamboo_mosaic",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:crimson_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_planks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSLY2XwCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSLY2XwCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mossy_cobblestone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2gHUQMwwFQeNQMKAG5ldHdvcmtfaWRzPhG8CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2gHUQMwwFQeNQMKAG5ldHdvcmtfaWRzPhG8CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:granite_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLBAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfd2FsbAQJAG5hbWVfaGFzaE1GmM5AU0qUAwoAbmV0d29ya19pZE/UoPUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLBAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfd2FsbAQJAG5hbWVfaGFzaE1GmM5AU0qUAwoAbmV0d29ya19pZE/UoPUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:diorite_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMBAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfd2FsbAQJAG5hbWVfaGFzaF27l0QvdM8xAwoAbmV0d29ya19pZJe7jOwKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMBAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfd2FsbAQJAG5hbWVfaGFzaF27l0QvdM8xAwoAbmV0d29ya19pZJe7jOwKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:andesite_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNBAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3dhbGwECQBuYW1lX2hhc2gAL1Vay0kZjQMKAG5ldHdvcmtfaWRJGxdvCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNBAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3dhbGwECQBuYW1lX2hhc2gAL1Vay0kZjQMKAG5ldHdvcmtfaWRJGxdvCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:sandstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV93YWxsBAkAbmFtZV9oYXNoYL2gu8a6HfgDCgBuZXR3b3JrX2lkHrhRjgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV93YWxsBAkAbmFtZV9oYXNoYL2gu8a6HfgDCgBuZXR3b3JrX2lkHrhRjgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_sandstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVBAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfd2FsbAQJAG5hbWVfaGFzaLAUUdOlo24MAwoAbmV0d29ya19pZI66BqAKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVBAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfd2FsbAQJAG5hbWVfaGFzaLAUUdOlo24MAwoAbmV0d29ya19pZI66BqAKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2hQegufuP6vjAMKAG5ldHdvcmtfaWS4AsOKCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2hQegufuP6vjAMKAG5ldHdvcmtfaWS4AsOKCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mossy_stone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2i680zzUekp+wMKAG5ldHdvcmtfaWTQTaHPCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2i680zzUekp+wMKAG5ldHdvcmtfaWTQTaHPCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3dhbGwECQBuYW1lX2hhc2gGJFLNjfgSCAMKAG5ldHdvcmtfaWSc5iUZCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3dhbGwECQBuYW1lX2hhc2gGJFLNjfgSCAMKAG5ldHdvcmtfaWSc5iUZCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:nether_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja193YWxsBAkAbmFtZV9oYXNoAxb5f2yQ5MYDCgBuZXR3b3JrX2lkAECPDAoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja193YWxsBAkAbmFtZV9oYXNoAxb5f2yQ5MYDCgBuZXR3b3JrX2lkAECPDAoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_nether_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWBAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBOtwkokUt3cAwoAbmV0d29ya19pZJykmZUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWBAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBOtwkokUt3cAwoAbmV0d29ya19pZJykmZUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:end_stone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTBAAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja193YWxsBAkAbmFtZV9oYXNoOsr1L9kJIAMDCgBuZXR3b3JrX2lkjuYlYgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTBAAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja193YWxsBAkAbmFtZV9oYXNoOsr1L9kJIAMDCgBuZXR3b3JrX2lkjuYlYgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:prismarine_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUBAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfd2FsbAQJAG5hbWVfaGFzaDO5IGrYZu1/AwoAbmV0d29ya19pZB4nLYYKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUBAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfd2FsbAQJAG5hbWVfaGFzaDO5IGrYZu1/AwoAbmV0d29ya19pZB4nLYYKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_blackstone_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_blackstone_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cobbled_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_tile_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:polished_deepslate_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:deepslate_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfd2FsbAQJAG5hbWVfaGFzaMyeeu1IRf03AwoAbmV0d29ya19pZDkIrosKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tuff_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaIL0IyNCOsonAwoAbmV0d29ya19pZJW4T5UKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_tuff_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfd2FsbAQJAG5hbWVfaGFzaJVZj6QYWXUrAwoAbmV0d29ya19pZLU7dooKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:mud_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:resin_brick_wall",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4BAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlc2luX2JyaWNrX3dhbGwECQBuYW1lX2hhc2iUkvfZlSl8+gMKAG5ldHdvcmtfaWSYW394CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:spruce_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:birch_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:jungle_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:acacia_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dark_oak_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:mangrove_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cherry_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_fence",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeBAAACAQAbmFtZRgAbWluZWNyYWZ0OnBhbGVfb2FrX2ZlbmNlBAkAbmFtZV9oYXNobM05DVVUSxsDCgBuZXR3b3JrX2lkS7udAwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:bamboo_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:nether_brick_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:warped_fence",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWR+T9kTCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWR+T9kTCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:spruce_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkEnw5egoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkEnw5egoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:birch_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWQL77/BCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWQL77/BCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:jungle_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkA1zgtgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkA1zgtgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:acacia_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkHg/kTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkHg/kTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dark_oak_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWTwjOCeCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWTwjOCeCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:mangrove_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWSfweCSCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWSfweCSCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cherry_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lk/9bTZQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lk/9bTZQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_fence_gate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfBAAACAQAbmFtZR0AbWluZWNyYWZ0OnBhbGVfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2hCrHUtEPI3BgMKAG5ldHdvcmtfaWRsEYcmCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAELAGluX3dhbGxfYml0AAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:bamboo_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkzIpPywoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkzIpPywoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZDQzVbEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQsAaW5fd2FsbF9iaXQAAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZDQzVbEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQsAaW5fd2FsbF9iaXQAAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:warped_fence_gate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkkf+/3QoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkkf+/3QoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCwBpbl93YWxsX2JpdAABCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:normal_stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mossy_cobblestone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spruce_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:birch_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jungle_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:acacia_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dark_oak_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mangrove_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cherry_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX3N0YWlycwQJAG5hbWVfaGFzaJsYBq7wfPXaAwoAbmV0d29ya19pZE1U5UIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bamboo_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:bamboo_mosaic_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mossy_stone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:smooth_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:smooth_red_sandstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_granite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_diorite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:polished_andesite_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_nether_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:end_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:smooth_quartz_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:purpur_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dark_prismarine_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:prismarine_bricks_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_blackstone_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_blackstone_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cobbled_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_tile_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:polished_deepslate_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:deepslate_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfc3RhaXJzBAkAbmFtZV9oYXNoKjyNUBjcfZsDCgBuZXR3b3JrX2lk+LsycgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_tuff_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc3RhaXJzBAkAbmFtZV9oYXNo8yuah8QI1dcDCgBuZXR3b3JrX2lkjLoU4AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tuff_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0AwAACAQAbmFtZRsAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNoWJpkAurUfKwDCgBuZXR3b3JrX2lkUMcjiwoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:mud_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:weathered_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:resin_brick_stairs",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3BAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlc2luX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaGJwsbVlApWmAwoAbmV0d29ya19pZCPz+A0KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:wooden_door"
@@ -464,6 +512,9 @@
         {
             "id": "minecraft:cherry_door"
         },
+        {
+            "id": "minecraft:pale_oak_door"
+        },
         {
             "id": "minecraft:bamboo_door"
         },
@@ -476,1729 +527,1813 @@
         {
             "id": "minecraft:warped_door"
         },
-        {
-            "id": "minecraft:trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:spruce_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:birch_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:jungle_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:acacia_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:dark_oak_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:mangrove_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cherry_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:bamboo_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:iron_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:crimson_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:warped_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:iron_bars",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:white_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:gray_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:black_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:brown_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:red_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:orange_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:lime_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:green_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cyan_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:blue_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:purple_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:pink_stained_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:tinted_glass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:white_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:light_gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:gray_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:black_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:brown_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:red_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:orange_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:yellow_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:lime_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:green_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cyan_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:light_blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:blue_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:purple_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:magenta_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:pink_stained_glass_pane",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:ladder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:scaffolding",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_stone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:normal_stone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNoIvsjJLQdolcDCgBuZXR3b3JrX2lkC1zqRQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoBAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2h5CXtW7vlQVgMKAG5ldHdvcmtfaWRDGyj2CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:mossy_cobblestone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3BAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2ijm1BCwB82VgMKAG5ldHdvcmtfaWR7ByMGCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:spruce_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:birch_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:jungle_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:acacia_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:dark_oak_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:mangrove_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:cherry_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:bamboo_mosaic_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2js6EexuKuzrQMKAG5ldHdvcmtfaWRSsMxaCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:mossy_stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hiA4kFUl4tHAMKAG5ldHdvcmtfaWS6joSOCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV9zbGFiBAkAbmFtZV9oYXNo/GMI0MZnrhsDCgBuZXR3b3JrX2lkFP8WmwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cut_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDBAAACAQAbmFtZRwAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaE+zxVQweViJAwoAbmV0d29ya19pZHsu74YKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4BAAACAQAbmFtZR8AbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaIkmsO1gw3gnAwoAbmV0d29ya19pZFSiwP0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:red_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaEyDjeWlUHItAwoAbmV0d29ya19pZIT4rmwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cut_red_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEBAAACAQAbmFtZSAAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2hTVRS++snU3wMKAG5ldHdvcmtfaWSvIAviCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6BAAACAQAbmFtZSMAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2i9iN2UK272tgMKAG5ldHdvcmtfaWRUZrwJCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:granite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/BAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaL0HprlAhhZwAwoAbmV0d29ya19pZIcIdc8KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_granite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSABAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaP6bXk5w2dGrAwoAbmV0d29ya19pZCsRy1cKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:diorite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9BAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaM3ppS8v55sNAwoAbmV0d29ya19pZB+Pv9oKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_diorite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+BAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaLZlyJLkMPhyAwoAbmV0d29ya19pZFM0HYwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:andesite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8BAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2icIrtuy/aosAMKAG5ldHdvcmtfaWTtXTtYCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:polished_andesite_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7BAAACAQAbmFtZSAAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2j56zJOfCF+3wMKAG5ldHdvcmtfaWRBs69FCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3NsYWIECQBuYW1lX2hhc2hO/Da4jU2v4wMKAG5ldHdvcmtfaWRG/qphCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:nether_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja19zbGFiBAkAbmFtZV9oYXNonymoa2zbbqMDCgBuZXR3b3JrX2lkquvR1QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:red_nether_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5BAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaG89ujUk3Y64AwoAbmV0d29ya19pZEZIunAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:end_stone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja19zbGFiBAkAbmFtZV9oYXNo4tkxQtl+IyQDCgBuZXR3b3JrX2lkhByH/woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:quartz_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrBAAACAQAbmFtZRUAbWluZWNyYWZ0OnF1YXJ0el9zbGFiBAkAbmFtZV9oYXNo9JMj3upfsbwDCgBuZXR3b3JrX2lkn2g2VAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:smooth_quartz_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBBAAACAQAbmFtZRwAbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc2xhYgQJAG5hbWVfaGFzaHOSJv8ve0nmAwoAbmV0d29ya19pZFMk/JsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:purpur_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzBAAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnB1cl9zbGFiBAkAbmFtZV9oYXNo4XeWbKpx2ScDCgBuZXR3b3JrX2lkRkga5goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:prismarine_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0BAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfc2xhYgQJAG5hbWVfaGFzaI9x+1fY8QRfAwoAbmV0d29ya19pZBTUZhwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:dark_prismarine_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1BAAACAQAbmFtZR4AbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zbGFiBAkAbmFtZV9oYXNoSsZGDkEL5ZUDCgBuZXR3b3JrX2lkNLQ8VwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:prismarine_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2BAAACAQAbmFtZR8AbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaB1FSbVi97xJAwoAbmV0d29ya19pZEBwwFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:crimson_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:warped_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_blackstone_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_cut_copper_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:polished_deepslate_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:deepslate_tile_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:deepslate_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:mud_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:brick_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:chiseled_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cracked_nether_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:quartz_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2JyaWNrcwQJAG5hbWVfaGFzaGAiQu8VWVJRAwoAbmV0d29ya19pZH2DjXUKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:mossy_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjBAAACAQAbmFtZRwAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaIZBO00MONRIAwoAbmV0d29ya19pZL2WDrAKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cracked_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkBAAACAQAbmFtZR4AbWluZWNyYWZ0OmNyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNocIkAp6riMz4DCgBuZXR3b3JrX2lkTWGeCwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:chiseled_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlBAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaMB2FPLLADkEAwoAbmV0d29ya19pZOIPn0IKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:end_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:prismarine_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzBAAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzBAkAbmFtZV9oYXNozeGe3/7s5fcDCgBuZXR3b3JrX2lkj/iBnAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:cracked_polished_blackstone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:gilded_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:chiseled_polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cracked_deepslate_tiles",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cracked_deepslate_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:mossy_cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:cobbled_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:smooth_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPsXMaQKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:chiseled_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvBAAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX3NhbmRzdG9uZQQJAG5hbWVfaGFzaPEkxMvZmemgAwoAbmV0d29ya19pZGI5NB4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:cut_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwBAAACAQAbmFtZRcAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmUECQBuYW1lX2hhc2ichLQc71njnQMKAG5ldHdvcmtfaWSmBLkRCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:smooth_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmUECQBuYW1lX2hhc2huR7XTwISyCAMKAG5ldHdvcmtfaWSzWj3UCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRXRYxZCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:chiseled_red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7BAAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX3JlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2gh5sX+ON054wMKAG5ldHdvcmtfaWT6Pw1PCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:cut_red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS8BAAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoaOtka4NrQ1EDCgBuZXR3b3JrX2lk3r/JPAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:smooth_red_sandstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9BAAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoqsNl8x36ju4DCgBuZXR3b3JrX2lk7x5DTwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:coal_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:dried_kelp_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
         {
             "id": "minecraft:copper_door"
         },
-        {
-            "id": "minecraft:copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXBAAACAQAbmFtZRkAbWluZWNyYWZ0OmNvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO9fXio+svKVAwoAbmV0d29ya19pZMCoRjEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AwAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaC/JEFOWnmEcAwoAbmV0d29ya19pZC6YiiMKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
         {
             "id": "minecraft:exposed_copper_door"
         },
-        {
-            "id": "minecraft:exposed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYBAAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoYhDFUysN7qUDCgBuZXR3b3JrX2lkMzwGJgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:exposed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQABAAACAQAbmFtZR4AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNolFIBYLYU0IcDCgBuZXR3b3JrX2lk4UqptAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
         {
             "id": "minecraft:weathered_copper_door"
         },
-        {
-            "id": "minecraft:weathered_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZBAAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2hFnEC282a1tgMKAG5ldHdvcmtfaWTk70oiCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:weathered_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBBAAACAQAbmFtZSAAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2jB3o8enlv1RgMKAG5ldHdvcmtfaWRih2pOCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
         {
             "id": "minecraft:oxidized_copper_door"
         },
-        {
-            "id": "minecraft:oxidized_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaBAAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaOJpG/XFexVwAwoAbmV0d29ya19pZPhi0J4KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:oxidized_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCBAAACAQAbmFtZR8AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaBRfNhyndve7AwoAbmV0d29ya19pZKY2cnEKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:waxed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
         {
             "id": "minecraft:waxed_copper_door"
         },
-        {
-            "id": "minecraft:waxed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbBAAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO0JUKUHqNU6AwoAbmV0d29ya19pZJC3ZuMKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:waxed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDBAAACAQAbmFtZRwAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaDmC92M2RO+HAwoAbmV0d29ya19pZH4og2AKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
         {
             "id": "minecraft:waxed_exposed_copper_door"
         },
-        {
-            "id": "minecraft:waxed_exposed_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcBAAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoBHHxCpkUzpgDCgBuZXR3b3JrX2lkw2XBGQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_exposed_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNoWmd6B+hWwiEDCgBuZXR3b3JrX2lk8d4ZQwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
         {
             "id": "minecraft:waxed_weathered_copper_door"
         },
-        {
-            "id": "minecraft:waxed_weathered_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdBAAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2gH9Fi3JCF4egMKAG5ldHdvcmtfaWRkGU6TCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:waxed_weathered_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFBAAACAQAbmFtZSYAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2hXfilVFDAiYQMKAG5ldHdvcmtfaWQqTGC1CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:waxed_oxidized_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
         {
             "id": "minecraft:waxed_oxidized_copper_door"
         },
+        {
+            "id": "minecraft:trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:birch_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:jungle_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:acacia_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dark_oak_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mangrove_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cherry_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pale_oak_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpBAAACAQAbmFtZRsAbWluZWNyYWZ0OnBhbGVfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNo5L0cQtjJA9oDCgBuZXR3b3JrX2lkVwhZTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:iron_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:crimson_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:warped_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXBAAACAQAbmFtZRkAbWluZWNyYWZ0OmNvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO9fXio+svKVAwoAbmV0d29ya19pZMCoRjEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:exposed_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYBAAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoYhDFUysN7qUDCgBuZXR3b3JrX2lkMzwGJgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:weathered_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZBAAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2hFnEC282a1tgMKAG5ldHdvcmtfaWTk70oiCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:oxidized_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaBAAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaOJpG/XFexVwAwoAbmV0d29ya19pZPhi0J4KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbBAAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO0JUKUHqNU6AwoAbmV0d29ya19pZJC3ZuMKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcBAAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoBHHxCpkUzpgDCgBuZXR3b3JrX2lkw2XBGQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_trapdoor",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdBAAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2gH9Fi3JCF4egMKAG5ldHdvcmtfaWRkGU6TCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
         {
             "id": "minecraft:waxed_oxidized_copper_trapdoor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeBAAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaNA/q9qAy6Z9AwoAbmV0d29ya19pZDgExS8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeBAAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaNA/q9qAy6Z9AwoAbmV0d29ya19pZDgExS8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:iron_bars",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:white_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:gray_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:black_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:orange_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:yellow_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:lime_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:green_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_blue_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blue_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:purple_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:magenta_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pink_stained_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tinted_glass",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:white_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:light_gray_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:gray_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:black_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:brown_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:green_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cyan_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:blue_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:purple_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:pink_stained_glass_pane",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:ladder",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:scaffolding",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:brick_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_stone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:normal_stone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNoIvsjJLQdolcDCgBuZXR3b3JrX2lkC1zqRQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cobblestone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoBAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2h5CXtW7vlQVgMKAG5ldHdvcmtfaWRDGyj2CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3BAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2ijm1BCwB82VgMKAG5ldHdvcmtfaWR7ByMGCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oak_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:spruce_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:birch_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:jungle_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:acacia_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cherry_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlBAAACAQAbmFtZRcAbWluZWNyYWZ0OnBhbGVfb2FrX3NsYWIECQBuYW1lX2hhc2g9QqTGUjo2XgMKAG5ldHdvcmtfaWQoWvcmCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:bamboo_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:bamboo_mosaic_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2js6EexuKuzrQMKAG5ldHdvcmtfaWRSsMxaCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hiA4kFUl4tHAMKAG5ldHdvcmtfaWS6joSOCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV9zbGFiBAkAbmFtZV9oYXNo/GMI0MZnrhsDCgBuZXR3b3JrX2lkFP8WmwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDBAAACAQAbmFtZRwAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaE+zxVQweViJAwoAbmV0d29ya19pZHsu74YKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4BAAACAQAbmFtZR8AbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaIkmsO1gw3gnAwoAbmV0d29ya19pZFSiwP0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaEyDjeWlUHItAwoAbmV0d29ya19pZIT4rmwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_red_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEBAAACAQAbmFtZSAAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2hTVRS++snU3wMKAG5ldHdvcmtfaWSvIAviCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6BAAACAQAbmFtZSMAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2i9iN2UK272tgMKAG5ldHdvcmtfaWRUZrwJCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:granite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/BAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaL0HprlAhhZwAwoAbmV0d29ya19pZIcIdc8KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_granite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSABAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaP6bXk5w2dGrAwoAbmV0d29ya19pZCsRy1cKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:diorite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9BAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaM3ppS8v55sNAwoAbmV0d29ya19pZB+Pv9oKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_diorite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+BAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaLZlyJLkMPhyAwoAbmV0d29ya19pZFM0HYwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:andesite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8BAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2icIrtuy/aosAMKAG5ldHdvcmtfaWTtXTtYCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_andesite_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7BAAACAQAbmFtZSAAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2j56zJOfCF+3wMKAG5ldHdvcmtfaWRBs69FCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3NsYWIECQBuYW1lX2hhc2hO/Da4jU2v4wMKAG5ldHdvcmtfaWRG/qphCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:nether_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja19zbGFiBAkAbmFtZV9oYXNonymoa2zbbqMDCgBuZXR3b3JrX2lkquvR1QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:red_nether_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5BAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaG89ujUk3Y64AwoAbmV0d29ya19pZEZIunAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:end_stone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja19zbGFiBAkAbmFtZV9oYXNo4tkxQtl+IyQDCgBuZXR3b3JrX2lkhByH/woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:quartz_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrBAAACAQAbmFtZRUAbWluZWNyYWZ0OnF1YXJ0el9zbGFiBAkAbmFtZV9oYXNo9JMj3upfsbwDCgBuZXR3b3JrX2lkn2g2VAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:smooth_quartz_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBBAAACAQAbmFtZRwAbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc2xhYgQJAG5hbWVfaGFzaHOSJv8ve0nmAwoAbmV0d29ya19pZFMk/JsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:purpur_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzBAAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnB1cl9zbGFiBAkAbmFtZV9oYXNo4XeWbKpx2ScDCgBuZXR3b3JrX2lkRkga5goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:prismarine_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0BAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfc2xhYgQJAG5hbWVfaGFzaI9x+1fY8QRfAwoAbmV0d29ya19pZBTUZhwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_prismarine_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1BAAACAQAbmFtZR4AbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zbGFiBAkAbmFtZV9oYXNoSsZGDkEL5ZUDCgBuZXR3b3JrX2lkNLQ8VwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:prismarine_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2BAAACAQAbmFtZR8AbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaB1FSbVi97xJAwoAbmV0d29ya19pZEBwwFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:blackstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:polished_deepslate_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:tuff_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfc2xhYgQJAG5hbWVfaGFzaIhCGdlIsnMUAwoAbmV0d29ya19pZN1dUL4KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_tuff_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc2xhYgQJAG5hbWVfaGFzaLXdb48YvAsHAwoAbmV0d29ya19pZAnJ7W0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaLqPMjVCv5dIAwoAbmV0d29ya19pZOmeRhcKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:mud_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:weathered_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:resin_brick_slab",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1BAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlc2luX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hAGu/Hlaa12QMKAG5ldHdvcmtfaWSyDq8CCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2JyaWNrcwQJAG5hbWVfaGFzaGAiQu8VWVJRAwoAbmV0d29ya19pZH2DjXUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjBAAACAQAbmFtZRwAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaIZBO00MONRIAwoAbmV0d29ya19pZL2WDrAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cracked_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkBAAACAQAbmFtZR4AbWluZWNyYWZ0OmNyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNocIkAp6riMz4DCgBuZXR3b3JrX2lkTWGeCwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:chiseled_stone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlBAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaMB2FPLLADkEAwoAbmV0d29ya19pZOIPn0IKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:smooth_stone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:end_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cracked_polished_blackstone_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gilded_blackstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:chiseled_polished_blackstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_tiles",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cracked_deepslate_tiles",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo/hbQ+mXSK7wDCgBuZXR3b3JrX2lk6gmIwQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cracked_deepslate_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_tuff",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmYECQBuYW1lX2hhc2iVliOT8OTQ9AMKAG5ldHdvcmtfaWTLNKOiCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_tuff_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AwAACAQAbmFtZR4AbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo3oQw6gmxYuADCgBuZXR3b3JrX2lkm3D8AgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cobblestone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:mossy_cobblestone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPsXMaQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvBAAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX3NhbmRzdG9uZQQJAG5hbWVfaGFzaPEkxMvZmemgAwoAbmV0d29ya19pZGI5NB4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:cut_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwBAAACAQAbmFtZRcAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmUECQBuYW1lX2hhc2ichLQc71njnQMKAG5ldHdvcmtfaWSmBLkRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmUECQBuYW1lX2hhc2huR7XTwISyCAMKAG5ldHdvcmtfaWSzWj3UCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRXRYxZCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7BAAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX3JlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2gh5sX+ON054wMKAG5ldHdvcmtfaWT6Pw1PCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS8BAAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoaOtka4NrQ1EDCgBuZXR3b3JrX2lk3r/JPAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9BAAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoqsNl8x36ju4DCgBuZXR3b3JrX2lk7x5DTwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:coal_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dried_kelp_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:copper_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:weathered_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AwAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaC/JEFOWnmEcAwoAbmV0d29ya19pZC6YiiMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:exposed_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQABAAACAQAbmFtZR4AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNolFIBYLYU0IcDCgBuZXR3b3JrX2lk4UqptAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:weathered_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBBAAACAQAbmFtZSAAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2jB3o8enlv1RgMKAG5ldHdvcmtfaWRih2pOCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCBAAACAQAbmFtZR8AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaBRfNhyndve7AwoAbmV0d29ya19pZKY2cnEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDBAAACAQAbmFtZRwAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaDmC92M2RO+HAwoAbmV0d29ya19pZH4og2AKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNoWmd6B+hWwiEDCgBuZXR3b3JrX2lk8d4ZQwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_grate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFBAAACAQAbmFtZSYAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2hXfilVFDAiYQMKAG5ldHdvcmtfaWQqTGC1CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:waxed_oxidized_copper_grate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaEbeMT605GP4AwoAbmV0d29ya19pZOZjpkkKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaEbeMT605GP4AwoAbmV0d29ya19pZOZjpkkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:waxed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:waxed_exposed_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waxed_weathered_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:waxed_oxidized_cut_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3AwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaIsW5pmpJEuQAwoAbmV0d29ya19pZHetwrkKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3AwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaIsW5pmpJEuQAwoAbmV0d29ya19pZHetwrkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:exposed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4AwAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoOvrLJ0UowbgDCgBuZXR3b3JrX2lkZj7cPwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4AwAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoOvrLJ0UowbgDCgBuZXR3b3JrX2lkZj7cPwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:weathered_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5AwAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hh+42XlsWvGAMKAG5ldHdvcmtfaWS7Cy59CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5AwAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hh+42XlsWvGAMKAG5ldHdvcmtfaWS7Cy59CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:oxidized_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6AwAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaLpTIsnfluiCAwoAbmV0d29ya19pZB9/jS8KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6AwAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaLpTIsnfluiCAwoAbmV0d29ya19pZB9/jS8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waxed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AwAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaFnXvXY5OinzAwoAbmV0d29ya19pZAcKtHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AwAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaFnXvXY5OinzAwoAbmV0d29ya19pZAcKtHsKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waxed_exposed_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AwAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoHJdq+Pph6hMDCgBuZXR3b3JrX2lkdge7IAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AwAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoHJdq+Pph6hMDCgBuZXR3b3JrX2lkdge7IAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:waxed_oxidized_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AwAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaMj49OvlTpgCAwoAbmV0d29ya19pZN/r+roKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AwAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaMj49OvlTpgCAwoAbmV0d29ya19pZN/r+roKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waxed_weathered_chiseled_copper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AwAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hzuO+Sg9LYQwMKAG5ldHdvcmtfaWQ7AN7iCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AwAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hzuO+Sg9LYQwMKAG5ldHdvcmtfaWQ7AN7iCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcHBlcl9idWxiBAkAbmFtZV9oYXNo41TimHOsMWcDCgBuZXR3b3JrX2lkJnZvAgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcHBlcl9idWxiBAkAbmFtZV9oYXNo41TimHOsMWcDCgBuZXR3b3JrX2lkJnZvAgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:exposed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIBAAACAQAbmFtZR0AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2g++f1wYLLCrAMKAG5ldHdvcmtfaWRLdMmGCgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIBAAACAQAbmFtZR0AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2g++f1wYLLCrAMKAG5ldHdvcmtfaWRLdMmGCgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:weathered_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJBAAACAQAbmFtZR8AbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMEtsYfwRTXlAwoAbmV0d29ya19pZAp51LQKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJBAAACAQAbmFtZR8AbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMEtsYfwRTXlAwoAbmV0d29ya19pZAp51LQKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:oxidized_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKBAAACAQAbmFtZR4AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNovnrBQZs8nDIDCgBuZXR3b3JrX2lkPsj0AAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKBAAACAQAbmFtZR4AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNovnrBQZs8nDIDCgBuZXR3b3JrX2lkPsj0AAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waxed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLBAAACAQAbmFtZRsAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoGTg6TYllMiIDCgBuZXR3b3JrX2lk9m0WhgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLBAAACAQAbmFtZRsAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoGTg6TYllMiIDCgBuZXR3b3JrX2lk9m0WhgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waxed_exposed_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMBAAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2gI6xkPcvBDVwMKAG5ldHdvcmtfaWR7BRcACgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMBAAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2gI6xkPcvBDVwMKAG5ldHdvcmtfaWR7BRcACgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:waxed_weathered_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMsUnmp3/VqVAwoAbmV0d29ya19pZEoworoKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMsUnmp3/VqVAwoAbmV0d29ya19pZEoworoKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:waxed_oxidized_copper_bulb",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoBFKxY3fjVq4DCgBuZXR3b3JrX2lkzrJ6aAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoBFKxY3fjVq4DCgBuZXR3b3JrX2lkzrJ6aAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:iron_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gold_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:emerald_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:diamond_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lapis_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:raw_iron_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:raw_copper_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:raw_iron_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:raw_gold_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZE2axGsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZE2axGsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:quartz_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:quartz_pillar",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5BAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9waWxsYXIECQBuYW1lX2hhc2igp62HI+PuSwMKAG5ldHdvcmtfaWS9SGXLCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5BAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9waWxsYXIECQBuYW1lX2hhc2igp62HI+PuSwMKAG5ldHdvcmtfaWS9SGXLCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:chiseled_quartz_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3F1YXJ0el9ibG9jawQJAG5hbWVfaGFzaAftJM9mCAvaAwoAbmV0d29ya19pZFwy0s0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3F1YXJ0el9ibG9jawQJAG5hbWVfaGFzaAftJM9mCAvaAwoAbmV0d29ya19pZFwy0s0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:smooth_quartz",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6BAAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9xdWFydHoECQBuYW1lX2hhc2hIVzzgiItGagMKAG5ldHdvcmtfaWTVWgU2CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6BAAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9xdWFydHoECQBuYW1lX2hhc2hIVzzgiItGagMKAG5ldHdvcmtfaWTVWgU2CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWQnuuW1CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWQnuuW1CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzBAAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzBAkAbmFtZV9oYXNozeGe3/7s5fcDCgBuZXR3b3JrX2lkj/iBnAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dark_prismarine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZQQJAG5hbWVfaGFzaK+rhxsgkzplAwoAbmV0d29ya19pZIdA0I0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZQQJAG5hbWVfaGFzaK+rhxsgkzplAwoAbmV0d29ya19pZIdA0I0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:slime",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:honey_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:honeycomb_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:resin_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8BAAACAQAbmFtZRUAbWluZWNyYWZ0OnJlc2luX2Jsb2NrBAkAbmFtZV9oYXNo6SHuLxdB67QDCgBuZXR3b3JrX2lkcWO4EwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:hay_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:bone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:resin_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0BAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlc2luX2JyaWNrcwQJAG5hbWVfaGFzaPQfo5PcOZSaAwoAbmV0d29ya19pZB24YHwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:chiseled_resin_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3Jlc2luX2JyaWNrcwQJAG5hbWVfaGFzaNSCIvsamt6qAwoAbmV0d29ya19pZBY+3hYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:red_nether_brick",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_nether_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:cracked_nether_bricks",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:netherite_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:lodestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:light_gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:gray_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:black_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brown_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:orange_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:yellow_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:lime_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:green_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:cyan_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:light_blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:blue_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:purple_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:magenta_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:pink_wool",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:light_gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:gray_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:black_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:brown_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:red_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:orange_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:yellow_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lime_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:green_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cyan_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:light_blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:blue_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:purple_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:magenta_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:pink_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:white_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:light_gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:gray_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:black_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:brown_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:red_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:orange_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:yellow_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lime_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:green_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cyan_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:light_blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:blue_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:purple_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:magenta_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:pink_concrete_powder",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:white_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:light_gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:gray_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:black_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:brown_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:red_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:orange_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:yellow_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:lime_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:green_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cyan_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:light_blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:blue_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:purple_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:magenta_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:pink_concrete",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:hardened_clay",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:white_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:light_gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:gray_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:black_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brown_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:orange_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:yellow_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:lime_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:green_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:cyan_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:light_blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:blue_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:purple_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:magenta_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:pink_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:silver_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:gray_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:black_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brown_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:orange_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:yellow_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:lime_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:green_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:cyan_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:light_blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:blue_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:purple_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:magenta_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:pink_glazed_terracotta",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:purpur_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZGCZ+4UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZGCZ+4UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:purpur_pillar",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2BAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9waWxsYXIECQBuYW1lX2hhc2iFcSsdykO+jgMKAG5ldHdvcmtfaWQe0+geCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2BAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9waWxsYXIECQBuYW1lX2hhc2iFcSsdykO+jgMKAG5ldHdvcmtfaWQe0+geCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:packed_mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:mud_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:nether_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_wart_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:shroomlight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:crimson_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_nylium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:netherrack",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:polished_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:smooth_basalt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:soul_soil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWSG706CCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:coarse_dirt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYXJzZV9kaXJ0BAkAbmFtZV9oYXNosd+cah7WSmoDCgBuZXR3b3JrX2lkgS5RcAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:farmland",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:grass_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:grass_path",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:podzol",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mycelium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:grass_path",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:dirt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWSG706CCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:coarse_dirt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYXJzZV9kaXJ0BAkAbmFtZV9oYXNosd+cah7WSmoDCgBuZXR3b3JrX2lkgS5RcAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:dirt_with_roots",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:farmland",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
-            "id": "minecraft:stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "id": "minecraft:clay",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:quartz_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:nether_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:ancient_debris",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:deepslate_iron_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_gold_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_diamond_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_lapis_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:deepslate_redstone_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:deepslate_emerald_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_coal_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:deepslate_copper_ore",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
-            "id": "minecraft:gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "id": "minecraft:stone",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:tuff",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:basalt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_granite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:polished_diorite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:polished_andesite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:polished_blackstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:polished_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:polished_tuff",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmYECQBuYW1lX2hhc2hyaLe/KEVZ0gMKAG5ldHdvcmtfaWTcX3NrCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_basalt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:smooth_basalt",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:gravel",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWRjeUMICgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWRjeUMICgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:red_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0BAAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF9zYW5kBAkAbmFtZV9oYXNoCiarI69JQCkDCgBuZXR3b3JrX2lkU8UD/AoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0BAAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF9zYW5kBAkAbmFtZV9oYXNoCiarI69JQCkDCgBuZXR3b3JrX2lkU8UD/AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cactus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_spruce_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stripped_birch_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_jungle_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_acacia_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stripped_dark_oak_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stripped_mangrove_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_cherry_log",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiBAAACAQAbmFtZRYAbWluZWNyYWZ0OnBhbGVfb2FrX2xvZwQJAG5hbWVfaGFzaIEcMMTin/ihAwoAbmV0d29ya19pZMtoEVwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:stripped_pale_oak_log",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThBAAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX3BhbGVfb2FrX2xvZwQJAG5hbWVfaGFzaBVKFLV2TrFcAwoAbmV0d29ya19pZBY8/GAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stripped_crimson_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_warped_stem",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_spruce_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_birch_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_jungle_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_acacia_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_dark_oak_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWTok1JCCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkBDABzdHJpcHBlZF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWSkqJ4cCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_mangrove_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkEALMfAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AQwAc3RyaXBwZWRfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkLPsAwgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_cherry_wood",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsBAAACAQAbmFtZRcAbWluZWNyYWZ0OnBhbGVfb2FrX3dvb2QECQBuYW1lX2hhc2hGlXnbUgRIggMKAG5ldHdvcmtfaWRPLx7LCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:stripped_pale_oak_wood",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrBAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3BhbGVfb2FrX3dvb2QECQBuYW1lX2hhc2iqaxd6ta2eNAMKAG5ldHdvcmtfaWQI+pz3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stripped_crimson_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:stripped_warped_hyphae",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:stripped_bamboo_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:spruce_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:birch_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:jungle_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:acacia_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dark_oak_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:mangrove_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cherry_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_leaves",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaKVccFYyf0wbAwoAbmV0d29ya19pZNFNvgcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:azalea_leaves",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:azalea_leaves_flowered",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spruce_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:birch_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jungle_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:acacia_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dark_oak_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mangrove_propagule",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cherry_sapling",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_sapling",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtBAAACAQAbmFtZRoAbWluZWNyYWZ0OnBhbGVfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2gzvl+QbSfPHwMKAG5ldHdvcmtfaWSzav9sCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bee_nest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:wheat_seeds"
@@ -2247,7 +2382,7 @@
         },
         {
             "id": "minecraft:melon_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:melon_slice"
@@ -2263,205 +2398,217 @@
         },
         {
             "id": "minecraft:pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:carved_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lit_pumpkin",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:honeycomb"
         },
+        {
+            "id": "minecraft:resin_clump",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9BAAACAQAbmFtZRUAbWluZWNyYWZ0OnJlc2luX2NsdW1wBAkAbmFtZV9oYXNok5dcTB5ZyioDCgBuZXR3b3JrX2lkFbHrwwoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHMAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
         {
             "id": "minecraft:fern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:large_fern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgBAAACAQAbmFtZRQAbWluZWNyYWZ0OmxhcmdlX2Zlcm4ECQBuYW1lX2hhc2gnE9sd0LzHtQMKAG5ldHdvcmtfaWTS9hG4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgBAAACAQAbmFtZRQAbWluZWNyYWZ0OmxhcmdlX2Zlcm4ECQBuYW1lX2hhc2gnE9sd0LzHtQMKAG5ldHdvcmtfaWTS9hG4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:short_grass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNob3J0X2dyYXNzBAkAbmFtZV9oYXNobWQghLH0bLcDCgBuZXR3b3JrX2lkJWOOqAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNob3J0X2dyYXNzBAkAbmFtZV9oYXNobWQghLH0bLcDCgBuZXR3b3JrX2lkJWOOqAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:tall_grass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfBAAACAQAbmFtZRQAbWluZWNyYWZ0OnRhbGxfZ3Jhc3MECQBuYW1lX2hhc2ii5MyZJpv4sgMKAG5ldHdvcmtfaWRRfeH4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfBAAACAQAbmFtZRQAbWluZWNyYWZ0OnRhbGxfZ3Jhc3MECQBuYW1lX2hhc2ii5MyZJpv4sgMKAG5ldHdvcmtfaWRRfeH4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:nether_sprouts"
         },
         {
             "id": "minecraft:fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dead_fire_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dead_brain_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dead_bubble_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dead_tube_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dead_horn_coral",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dead_fire_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dead_brain_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dead_bubble_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dead_tube_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dead_horn_coral_fan",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:warped_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dandelion",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRhbmRlbGlvbgQJAG5hbWVfaGFzaBJ3bEUi+Nn/AwoAbmV0d29ya19pZBjjC44KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRhbmRlbGlvbgQJAG5hbWVfaGFzaBJ3bEUi+Nn/AwoAbmV0d29ya19pZBjjC44KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:poppy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:blue_orchid",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:allium",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:azure_bluet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:red_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:orange_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:pink_tulip",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:oxeye_daisy",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cornflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lily_of_the_valley",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:sunflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRMAbWluZWNyYWZ0OnN1bmZsb3dlcgQJAG5hbWVfaGFzaAMxYQLoqlZ0AwoAbmV0d29ya19pZA10iSoKBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRMAbWluZWNyYWZ0OnN1bmZsb3dlcgQJAG5hbWVfaGFzaAMxYQLoqlZ0AwoAbmV0d29ya19pZA10iSoKBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lilac",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWReBAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxpbGFjBAkAbmFtZV9oYXNoD3nrQJuo7NkDCgBuZXR3b3JrX2lk5W+uFAoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReBAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxpbGFjBAkAbmFtZV9oYXNoD3nrQJuo7NkDCgBuZXR3b3JrX2lk5W+uFAoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:rose_bush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhBAAACAQAbmFtZRMAbWluZWNyYWZ0OnJvc2VfYnVzaAQJAG5hbWVfaGFzaLoiFk8LVpGKAwoAbmV0d29ya19pZMZPv48KBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhBAAACAQAbmFtZRMAbWluZWNyYWZ0OnJvc2VfYnVzaAQJAG5hbWVfaGFzaLoiFk8LVpGKAwoAbmV0d29ya19pZMZPv48KBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:peony",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiBAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBlb255BAkAbmFtZV9oYXNoR4dYc4QquPADCgBuZXR3b3JrX2lkrTe7RwoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiBAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBlb255BAkAbmFtZV9oYXNoR4dYc4QquPADCgBuZXR3b3JrX2lkrTe7RwoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:pitcher_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:pink_petals",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:wither_rose",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:torchflower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:closed_eyeblossom",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6BAAACAQAbmFtZRsAbWluZWNyYWZ0OmNsb3NlZF9leWVibG9zc29tBAkAbmFtZV9oYXNoYbeklHBkRL8DCgBuZXR3b3JrX2lku6xJeAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:open_eyeblossom",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5BAAACAQAbmFtZRkAbWluZWNyYWZ0Om9wZW5fZXllYmxvc3NvbQQJAG5hbWVfaGFzaHH2HXQ24l8fAwoAbmV0d29ya19pZP1bL4YKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_dye"
@@ -2528,194 +2675,146 @@
         },
         {
             "id": "minecraft:vine",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:weeping_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:twisting_vines",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:waterlily",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:seagrass",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:kelp"
         },
         {
             "id": "minecraft:deadbush",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:bamboo",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:snow",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:packed_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:blue_ice",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:snow_layer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:pointed_dripstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dripstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:moss_carpet",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:moss_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
-            "id": "minecraft:dirt_with_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "id": "minecraft:pale_moss_carpet",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnBhbGVfbW9zc19jYXJwZXQECQBuYW1lX2hhc2g5SFufsjDdpAMKAG5ldHdvcmtfaWSwu2O/CgYAc3RhdGVzCBoAcGFsZV9tb3NzX2NhcnBldF9zaWRlX2Vhc3QEAG5vbmUIGwBwYWxlX21vc3NfY2FycGV0X3NpZGVfbm9ydGgEAG5vbmUIGwBwYWxlX21vc3NfY2FycGV0X3NpZGVfc291dGgEAG5vbmUIGgBwYWxlX21vc3NfY2FycGV0X3NpZGVfd2VzdAQAbm9uZQEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_moss_block",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfbW9zc19ibG9jawQJAG5hbWVfaGFzaAv55craFDiRAwoAbmV0d29ya19pZNMKFzcKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:pale_hanging_moss",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnBhbGVfaGFuZ2luZ19tb3NzBAkAbmFtZV9oYXNoNjhSFL+E2aQDCgBuZXR3b3JrX2lkC5iPTgoGAHN0YXRlcwEDAHRpcAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:hanging_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:muddy_mangrove_roots",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:big_dripleaf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:small_dripleaf_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spore_blossom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:flowering_azalea",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:glow_lichen",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkCh8lSAoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHM/AAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkCh8lSAoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHM/AAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:amethyst_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:budding_amethyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:amethyst_cluster",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:large_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:medium_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:small_amethyst_bud",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfc3RhaXJzBAkAbmFtZV9oYXNoKjyNUBjcfZsDCgBuZXR3b3JrX2lk+LsycgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:tuff_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfc2xhYgQJAG5hbWVfaGFzaIhCGdlIsnMUAwoAbmV0d29ya19pZN1dUL4KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfd2FsbAQJAG5hbWVfaGFzaMyeeu1IRf03AwoAbmV0d29ya19pZDkIrosKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:chiseled_tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmYECQBuYW1lX2hhc2iVliOT8OTQ9AMKAG5ldHdvcmtfaWTLNKOiCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmYECQBuYW1lX2hhc2hyaLe/KEVZ0gMKAG5ldHdvcmtfaWTcX3NrCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc3RhaXJzBAkAbmFtZV9oYXNo8yuah8QI1dcDCgBuZXR3b3JrX2lkjLoU4AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:polished_tuff_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc2xhYgQJAG5hbWVfaGFzaLXdb48YvAsHAwoAbmV0d29ya19pZAnJ7W0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:polished_tuff_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfd2FsbAQJAG5hbWVfaGFzaJVZj6QYWXUrAwoAbmV0d29ya19pZLU7dooKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:tuff_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo/hbQ+mXSK7wDCgBuZXR3b3JrX2lk6gmIwQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:tuff_brick_stairs",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0AwAACAQAbmFtZRsAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNoWJpkAurUfKwDCgBuZXR3b3JrX2lkUMcjiwoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:tuff_brick_slab",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaLqPMjVCv5dIAwoAbmV0d29ya19pZOmeRhcKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24HHhUBAA=="
-        },
-        {
-            "id": "minecraft:tuff_brick_wall",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaIL0IyNCOsonAwoAbmV0d29ya19pZJW4T5UKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uBx4VAQA="
-        },
-        {
-            "id": "minecraft:chiseled_tuff_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AwAACAQAbmFtZR4AbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo3oQw6gmxYuADCgBuZXR3b3JrX2lkm3D8AgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:calcite",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:chicken"
@@ -2746,35 +2845,31 @@
         },
         {
             "id": "minecraft:brown_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:red_mushroom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_fungus",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:red_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkbdt3CAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw8AAAAAAwcAdmVyc2lvbgceFQEA"
-        },
-        {
-            "id": "minecraft:brown_mushroom_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkSrMl9goGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cwAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "id": "minecraft:mushroom_stem",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvBAAACAQAbmFtZRcAbWluZWNyYWZ0Om11c2hyb29tX3N0ZW0ECQBuYW1lX2hhc2i2SozhK9NLpgMKAG5ldHdvcmtfaWTTVND+CgYAc3RhdGVzAxIAaHVnZV9tdXNocm9vbV9iaXRzDwAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:egg"
@@ -2793,82 +2888,86 @@
         },
         {
             "id": "minecraft:web",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:spider_eye"
         },
         {
             "id": "minecraft:mob_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:trial_spawner",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AgAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaWFsX3NwYXduZXIECQBuYW1lX2hhc2iNLRPB4ACz+QMKAG5ldHdvcmtfaWTWFYHGCgYAc3RhdGVzAQcAb21pbm91cwADEwB0cmlhbF9zcGF3bmVyX3N0YXRlAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AgAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaWFsX3NwYXduZXIECQBuYW1lX2hhc2iNLRPB4ACz+QMKAG5ldHdvcmtfaWTWFYHGCgYAc3RhdGVzAQcAb21pbm91cwADEwB0cmlhbF9zcGF3bmVyX3N0YXRlAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:vault",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AgAACAQAbmFtZQ8AbWluZWNyYWZ0OnZhdWx0BAkAbmFtZV9oYXNoCAp9n3IAyqcDCgBuZXR3b3JrX2lk6/P+vwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQcAb21pbm91cwAICwB2YXVsdF9zdGF0ZQgAaW5hY3RpdmUAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AgAACAQAbmFtZQ8AbWluZWNyYWZ0OnZhdWx0BAkAbmFtZV9oYXNoCAp9n3IAyqcDCgBuZXR3b3JrX2lk6/P+vwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQcAb21pbm91cwAICwB2YXVsdF9zdGF0ZQgAaW5hY3RpdmUAAwcAdmVyc2lvbgEoFQEA"
+        },
+        {
+            "id": "minecraft:creaking_heart",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzBAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyZWFraW5nX2hlYXJ0BAkAbmFtZV9oYXNoQcOV0pmSMeADCgBuZXR3b3JrX2lkYfFBiQoGAHN0YXRlcwEGAGFjdGl2ZQABBwBuYXR1cmFsAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:end_portal_frame",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:infested_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRgAbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lBAkAbmFtZV9oYXNoxnRcHDu4zqQDCgBuZXR3b3JrX2lkpfcnsgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRgAbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lBAkAbmFtZV9oYXNoxnRcHDu4zqQDCgBuZXR3b3JrX2lkpfcnsgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:infested_cobblestone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZBAAACAQAbmFtZR4AbWluZWNyYWZ0OmluZmVzdGVkX2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoy+LVCKG2kVMDCgBuZXR3b3JrX2lkpn+icAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZBAAACAQAbmFtZR4AbWluZWNyYWZ0OmluZmVzdGVkX2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoy+LVCKG2kVMDCgBuZXR3b3JrX2lkpn+icAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:infested_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaBAAACAQAbmFtZR8AbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaBMnals7a32CAwoAbmV0d29ya19pZNHi2UYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaBAAACAQAbmFtZR8AbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaBMnals7a32CAwoAbmV0d29ya19pZNHi2UYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:infested_mossy_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbBAAACAQAbmFtZSUAbWluZWNyYWZ0OmluZmVzdGVkX21vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaAmJk+HmVq0rAwoAbmV0d29ya19pZAVH8/sKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbBAAACAQAbmFtZSUAbWluZWNyYWZ0OmluZmVzdGVkX21vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaAmJk+HmVq0rAwoAbmV0d29ya19pZAVH8/sKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:infested_cracked_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcBAAACAQAbmFtZScAbWluZWNyYWZ0OmluZmVzdGVkX2NyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoMyc60XcfcyoDCgBuZXR3b3JrX2lkaW+kbQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcBAAACAQAbmFtZScAbWluZWNyYWZ0OmluZmVzdGVkX2NyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoMyc60XcfcyoDCgBuZXR3b3JrX2lkaW+kbQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:infested_chiseled_stone_bricks",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdBAAACAQAbmFtZSgAbWluZWNyYWZ0OmluZmVzdGVkX2NoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaNUvNIIg9dZbAwoAbmV0d29ya19pZCajGicKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdBAAACAQAbmFtZSgAbWluZWNyYWZ0OmluZmVzdGVkX2NoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaNUvNIIg9dZbAwoAbmV0d29ya19pZCajGicKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:infested_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dragon_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:turtle_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:sniffer_egg",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:frog_spawn",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:pearlescent_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:verdant_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:ochre_froglight",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:chicken_spawn_egg"
@@ -3104,40 +3203,43 @@
         {
             "id": "minecraft:bogged_spawn_egg"
         },
+        {
+            "id": "minecraft:creaking_spawn_egg"
+        },
         {
             "id": "minecraft:obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:crying_obsidian",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bedrock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:soul_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:magma",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:nether_wart"
         },
         {
             "id": "minecraft:end_stone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:chorus_flower",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:chorus_plant",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:chorus_fruit"
@@ -3147,79 +3249,79 @@
         },
         {
             "id": "minecraft:sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZNmQW/oKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZNmQW/oKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:wet_sponge",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXBAAACAQAbmFtZRQAbWluZWNyYWZ0OndldF9zcG9uZ2UECQBuYW1lX2hhc2htp6nKpSHcAgMKAG5ldHdvcmtfaWQaW+fCCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXBAAACAQAbmFtZRQAbWluZWNyYWZ0OndldF9zcG9uZ2UECQBuYW1lX2hhc2htp6nKpSHcAgMKAG5ldHdvcmtfaWQaW+fCCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:tube_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:brain_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQBAAACAQAbmFtZRsAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoeDNAK18yUo4DCgBuZXR3b3JrX2lkloN1vgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQBAAACAQAbmFtZRsAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoeDNAK18yUo4DCgBuZXR3b3JrX2lkloN1vgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:bubble_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRBAAACAQAbmFtZRwAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaAI2mwMlvcNbAwoAbmV0d29ya19pZBlkxKIKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRBAAACAQAbmFtZRwAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaAI2mwMlvcNbAwoAbmV0d29ya19pZBlkxKIKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:fire_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSBAAACAQAbmFtZRoAbWluZWNyYWZ0OmZpcmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2gg1gLeXLmKaAMKAG5ldHdvcmtfaWSp3W57CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSBAAACAQAbmFtZRoAbWluZWNyYWZ0OmZpcmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2gg1gLeXLmKaAMKAG5ldHdvcmtfaWSp3W57CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:horn_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTBAAACAQAbmFtZRoAbWluZWNyYWZ0Omhvcm5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2hnZSLRWUwGhAMKAG5ldHdvcmtfaWRSK6ccCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTBAAACAQAbmFtZRoAbWluZWNyYWZ0Omhvcm5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2hnZSLRWUwGhAMKAG5ldHdvcmtfaWRSK6ccCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dead_tube_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaB9+lY3hAkNNAwoAbmV0d29ya19pZF0hKKYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaB9+lY3hAkNNAwoAbmV0d29ya19pZF0hKKYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dead_brain_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVBAAACAQAbmFtZSAAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2iHyDn52AO8uwMKAG5ldHdvcmtfaWQw7yCaCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVBAAACAQAbmFtZSAAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2iHyDn52AO8uwMKAG5ldHdvcmtfaWQw7yCaCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dead_bubble_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWBAAACAQAbmFtZSEAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNotwkk/ITrsjADCgBuZXR3b3JrX2lk56mXUgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWBAAACAQAbmFtZSEAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNotwkk/ITrsjADCgBuZXR3b3JrX2lk56mXUgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dead_fire_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaG0qHxbIrBEyAwoAbmV0d29ya19pZFvnH88KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaG0qHxbIrBEyAwoAbmV0d29ya19pZFvnH88KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:dead_horn_coral_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaL7D8bu4Fm+0AwoAbmV0d29ya19pZEALRLoKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaL7D8bu4Fm+0AwoAbmV0d29ya19pZEALRLoKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:sculk",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:sculk_vein",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:sculk_catalyst",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:sculk_shrieker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:calibrated_sculk_sensor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:reinforced_deepslate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:leather_helmet"
@@ -3563,25 +3665,6 @@
             "id": "minecraft:arrow",
             "damage": 47
         },
-        {
-            "id": "minecraft:ominous_bottle"
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 1
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 2
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 3
-        },
-        {
-            "id": "minecraft:ominous_bottle",
-            "damage": 4
-        },
         {
             "id": "minecraft:shield"
         },
@@ -3707,6 +3790,57 @@
         {
             "id": "minecraft:saddle"
         },
+        {
+            "id": "minecraft:bundle"
+        },
+        {
+            "id": "minecraft:white_bundle"
+        },
+        {
+            "id": "minecraft:light_gray_bundle"
+        },
+        {
+            "id": "minecraft:gray_bundle"
+        },
+        {
+            "id": "minecraft:black_bundle"
+        },
+        {
+            "id": "minecraft:brown_bundle"
+        },
+        {
+            "id": "minecraft:red_bundle"
+        },
+        {
+            "id": "minecraft:orange_bundle"
+        },
+        {
+            "id": "minecraft:yellow_bundle"
+        },
+        {
+            "id": "minecraft:lime_bundle"
+        },
+        {
+            "id": "minecraft:green_bundle"
+        },
+        {
+            "id": "minecraft:cyan_bundle"
+        },
+        {
+            "id": "minecraft:light_blue_bundle"
+        },
+        {
+            "id": "minecraft:blue_bundle"
+        },
+        {
+            "id": "minecraft:purple_bundle"
+        },
+        {
+            "id": "minecraft:magenta_bundle"
+        },
+        {
+            "id": "minecraft:pink_bundle"
+        },
         {
             "id": "minecraft:leather_horse_armor"
         },
@@ -4301,6 +4435,25 @@
             "id": "minecraft:lingering_potion",
             "damage": 46
         },
+        {
+            "id": "minecraft:ominous_bottle"
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 1
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 2
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 3
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 4
+        },
         {
             "id": "minecraft:spyglass"
         },
@@ -4375,119 +4528,119 @@
         },
         {
             "id": "minecraft:torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:soul_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:sea_pickle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:soul_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:orange_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:magenta_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:light_blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:yellow_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:lime_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:pink_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:light_gray_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cyan_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:purple_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:blue_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:brown_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:green_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:red_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:black_candle",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crafting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cartography_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:fletching_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:smithing_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:beehive",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:suspicious_sand",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:suspicious_gravel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:campfire"
@@ -4497,156 +4650,156 @@
         },
         {
             "id": "minecraft:furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:blast_furnace",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:smoker",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:respawn_anchor",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:brewing_stand"
         },
         {
             "id": "minecraft:anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkqXzNjwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkqXzNjwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:chipped_anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+BAAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXBwZWRfYW52aWwECQBuYW1lX2hhc2ge+QY3vlS/eQMKAG5ldHdvcmtfaWRJ15iUCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+BAAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXBwZWRfYW52aWwECQBuYW1lX2hhc2ge+QY3vlS/eQMKAG5ldHdvcmtfaWRJ15iUCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:damaged_anvil",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/BAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhbWFnZWRfYW52aWwECQBuYW1lX2hhc2imJ12Be2V8+AMKAG5ldHdvcmtfaWRh5SHkCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/BAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhbWFnZWRfYW52aWwECQBuYW1lX2hhc2imJ12Be2V8+AMKAG5ldHdvcmtfaWRh5SHkCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:grindstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:enchanting_table",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:chiseled_bookshelf",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:lectern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cauldron"
         },
         {
             "id": "minecraft:composter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:trapped_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:ender_chest",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:barrel",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:undyed_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:white_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:light_gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:gray_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:black_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:brown_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:red_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:orange_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:yellow_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:lime_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:green_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:cyan_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:light_blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:blue_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:purple_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:magenta_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:pink_shulker_box",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:armor_stand"
         },
         {
             "id": "minecraft:noteblock",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jukebox",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:music_disc_13"
@@ -4713,15 +4866,15 @@
         },
         {
             "id": "minecraft:glowstone",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:redstone_lamp",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:sea_lantern",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:oak_sign"
@@ -4747,6 +4900,9 @@
         {
             "id": "minecraft:cherry_sign"
         },
+        {
+            "id": "minecraft:pale_oak_sign"
+        },
         {
             "id": "minecraft:bamboo_sign"
         },
@@ -4780,6 +4936,9 @@
         {
             "id": "minecraft:cherry_hanging_sign"
         },
+        {
+            "id": "minecraft:pale_oak_hanging_sign"
+        },
         {
             "id": "minecraft:bamboo_hanging_sign"
         },
@@ -4841,47 +5000,48 @@
             "id": "minecraft:tadpole_bucket"
         },
         {
-            "id": "minecraft:skull",
-            "damage": 3
+            "id": "minecraft:player_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGBAAACAQAbmFtZRUAbWluZWNyYWZ0OnBsYXllcl9oZWFkBAkAbmFtZV9oYXNonFwZb7CL8EYDCgBuZXR3b3JrX2lkZeAXqAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
-            "id": "minecraft:skull",
-            "damage": 2
+            "id": "minecraft:zombie_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFBAAACAQAbmFtZRUAbWluZWNyYWZ0OnpvbWJpZV9oZWFkBAkAbmFtZV9oYXNoixuENYuaGgEDCgBuZXR3b3JrX2lk0NsHDgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
-            "id": "minecraft:skull",
-            "damage": 4
+            "id": "minecraft:creeper_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHBAAACAQAbmFtZRYAbWluZWNyYWZ0OmNyZWVwZXJfaGVhZAQJAG5hbWVfaGFzaCvAGFMS/RqVAwoAbmV0d29ya19pZEfskXYKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
-            "id": "minecraft:skull",
-            "damage": 5
+            "id": "minecraft:dragon_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIBAAACAQAbmFtZRUAbWluZWNyYWZ0OmRyYWdvbl9oZWFkBAkAbmFtZV9oYXNozjh6bGRaa5UDCgBuZXR3b3JrX2lk/zjetgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
-            "id": "minecraft:skull"
+            "id": "minecraft:skeleton_skull",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAAAACAQAbmFtZRgAbWluZWNyYWZ0OnNrZWxldG9uX3NrdWxsBAkAbmFtZV9oYXNo3+kbzeMgg4kDCgBuZXR3b3JrX2lk/RqWbwoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
-            "id": "minecraft:skull",
-            "damage": 1
+            "id": "minecraft:wither_skeleton_skull",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEBAAACAQAbmFtZR8AbWluZWNyYWZ0OndpdGhlcl9za2VsZXRvbl9za3VsbAQJAG5hbWVfaGFzaEcZrUyy9cfRAwoAbmV0d29ya19pZJZ2G/oKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
-            "id": "minecraft:skull",
-            "damage": 6
+            "id": "minecraft:piglin_head",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJBAAACAQAbmFtZRUAbWluZWNyYWZ0OnBpZ2xpbl9oZWFkBAkAbmFtZV9oYXNo+jUCKgb5DskDCgBuZXR3b3JrX2lkQ1ETVwoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:beacon",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bell",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:conduit",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stonecutter_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:coal"
@@ -4937,6 +5097,9 @@
         {
             "id": "minecraft:netherbrick"
         },
+        {
+            "id": "minecraft:resin_brick"
+        },
         {
             "id": "minecraft:prismarine_shard"
         },
@@ -4993,7 +5156,7 @@
         },
         {
             "id": "minecraft:heavy_core",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AgAACAQAbmFtZRQAbWluZWNyYWZ0OmhlYXZ5X2NvcmUECQBuYW1lX2hhc2hhz/uNCtrC2QMKAG5ldHdvcmtfaWRaFu+8CgYAc3RhdGVzAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AgAACAQAbmFtZRQAbWluZWNyYWZ0OmhlYXZ5X2NvcmUECQBuYW1lX2hhc2hhz/uNCtrC2QMKAG5ldHdvcmtfaWRaFu+8CgYAc3RhdGVzAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:blaze_powder"
@@ -5030,11 +5193,11 @@
         },
         {
             "id": "minecraft:end_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:lightning_rod",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:end_crystal"
@@ -5048,9 +5211,6 @@
         {
             "id": "minecraft:writable_book"
         },
-        {
-            "id": "minecraft:trial_key"
-        },
         {
             "id": "minecraft:enchanted_book",
             "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
@@ -5563,6 +5723,9 @@
         {
             "id": "minecraft:cherry_boat"
         },
+        {
+            "id": "minecraft:pale_oak_boat"
+        },
         {
             "id": "minecraft:bamboo_raft"
         },
@@ -5590,24 +5753,27 @@
         {
             "id": "minecraft:cherry_chest_boat"
         },
+        {
+            "id": "minecraft:pale_oak_chest_boat"
+        },
         {
             "id": "minecraft:bamboo_chest_raft"
         },
         {
             "id": "minecraft:rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:golden_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:detector_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:activator_rail",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:minecart"
@@ -5626,139 +5792,147 @@
         },
         {
             "id": "minecraft:redstone_block",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:redstone_torch",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:lever",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:wooden_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spruce_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:birch_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jungle_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:acacia_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dark_oak_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mangrove_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cherry_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_button",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaLk54s7RtGHgAwoAbmV0d29ya19pZNLO6ZwKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bamboo_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:crimson_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:polished_blackstone_button",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:tripwire_hook",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:wooden_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:spruce_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:birch_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:jungle_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:acacia_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:dark_oak_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:mangrove_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:cherry_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_pressure_plate",
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkBAAACAQAbmFtZSEAbWluZWNyYWZ0OnBhbGVfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNo8cvY7evY5xkDCgBuZXR3b3JrX2lkDmW0uAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:bamboo_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:crimson_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:warped_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:stone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:light_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:heavy_weighted_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:polished_blackstone_pressure_plate",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:observer",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:daylight_detector",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:repeater"
@@ -5771,34 +5945,34 @@
         },
         {
             "id": "minecraft:dropper",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:dispenser",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:crafter",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AgAACAQAbmFtZREAbWluZWNyYWZ0OmNyYWZ0ZXIECQBuYW1lX2hhc2iLCT/rJmRN8QMKAG5ldHdvcmtfaWTPTbvrCgYAc3RhdGVzAQgAY3JhZnRpbmcACAsAb3JpZW50YXRpb24JAGRvd25fZWFzdAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24HHhUBAA=="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AgAACAQAbmFtZREAbWluZWNyYWZ0OmNyYWZ0ZXIECQBuYW1lX2hhc2iLCT/rJmRN8QMKAG5ldHdvcmtfaWTPTbvrCgYAc3RhdGVzAQgAY3JhZnRpbmcACAsAb3JpZW50YXRpb24JAGRvd25fZWFzdAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24BKBUBAA=="
         },
         {
             "id": "minecraft:piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:sticky_piston",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:tnt",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZAXzHyUKBgBzdGF0ZXMBCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZAXzHyUKBgBzdGF0ZXMBCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:name_tag"
         },
         {
             "id": "minecraft:loom",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
         },
         {
             "id": "minecraft:banner",
@@ -6192,11 +6366,17 @@
         },
         {
             "id": "minecraft:target",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbgceFQEA"
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbgEoFQEA"
         },
         {
             "id": "minecraft:decorated_pot",
-            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uBx4VAQA="
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uASgVAQA="
+        },
+        {
+            "id": "minecraft:trial_key"
+        },
+        {
+            "id": "minecraft:ominous_trial_key"
         },
         {
             "id": "minecraft:lodestone_compass"
@@ -6206,9 +6386,6 @@
         },
         {
             "id": "minecraft:ender_dragon_spawn_egg"
-        },
-        {
-            "id": "minecraft:ominous_trial_key"
         }
     ]
-}
\ No newline at end of file
+}
diff --git a/core/src/main/resources/bedrock/entity_identifiers.dat b/core/src/main/resources/bedrock/entity_identifiers.dat
index 90ca16be3d6ee478d83e971414d8f9bc59c55f00..2dd5602491f79aaa74aa73fcbeace6cd434ab6ae 100644
GIT binary patch
delta 60
zcmez6u*;E`i-D6ZGbJapxP+^TX|f}u#N;#F+#3zp6edm(p1hZZn=iR2H8DFgFP)jW
QC^KcrWJ5WT$z}>J06+;6%>V!Z

delta 34
qcmdnx_{)Kpi-D6ZGbJapxP+^LX|f}u#N;#F+#3zp6egD`xBvjTv<gQ6

diff --git a/core/src/main/resources/bedrock/item_tags.1_20_80.json b/core/src/main/resources/bedrock/item_tags.1_20_80.json
deleted file mode 100644
index 4203c96c1..000000000
--- a/core/src/main/resources/bedrock/item_tags.1_20_80.json
+++ /dev/null
@@ -1,784 +0,0 @@
-{
-    "minecraft:arrow": [
-        "minecraft:arrow"
-    ],
-    "minecraft:banner": [
-        "minecraft:banner"
-    ],
-    "minecraft:boat": [
-        "minecraft:oak_boat",
-        "minecraft:birch_boat",
-        "minecraft:jungle_boat",
-        "minecraft:spruce_boat",
-        "minecraft:mangrove_boat",
-        "minecraft:acacia_boat",
-        "minecraft:oak_chest_boat",
-        "minecraft:dark_oak_boat",
-        "minecraft:birch_chest_boat",
-        "minecraft:jungle_chest_boat",
-        "minecraft:spruce_chest_boat",
-        "minecraft:acacia_chest_boat",
-        "minecraft:dark_oak_chest_boat",
-        "minecraft:mangrove_chest_boat",
-        "minecraft:cherry_boat",
-        "minecraft:cherry_chest_boat",
-        "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
-    ],
-    "minecraft:boats": [
-        "minecraft:oak_boat",
-        "minecraft:birch_boat",
-        "minecraft:jungle_boat",
-        "minecraft:spruce_boat",
-        "minecraft:mangrove_boat",
-        "minecraft:acacia_boat",
-        "minecraft:oak_chest_boat",
-        "minecraft:dark_oak_boat",
-        "minecraft:birch_chest_boat",
-        "minecraft:jungle_chest_boat",
-        "minecraft:spruce_chest_boat",
-        "minecraft:acacia_chest_boat",
-        "minecraft:dark_oak_chest_boat",
-        "minecraft:mangrove_chest_boat",
-        "minecraft:cherry_boat",
-        "minecraft:cherry_chest_boat",
-        "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
-    ],
-    "minecraft:bookshelf_books": [
-        "minecraft:book",
-        "minecraft:writable_book",
-        "minecraft:enchanted_book",
-        "minecraft:written_book"
-    ],
-    "minecraft:chainmail_tier": [
-        "minecraft:chainmail_helmet",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_boots"
-    ],
-    "minecraft:chest_boat": [],
-    "minecraft:coals": [
-        "minecraft:coal",
-        "minecraft:charcoal"
-    ],
-    "minecraft:crimson_stems": [
-        "minecraft:crimson_hyphae",
-        "minecraft:stripped_crimson_hyphae",
-        "minecraft:crimson_stem",
-        "minecraft:stripped_crimson_stem"
-    ],
-    "minecraft:decorated_pot_sherds": [
-        "minecraft:blade_pottery_sherd",
-        "minecraft:brick",
-        "minecraft:angler_pottery_sherd",
-        "minecraft:burn_pottery_sherd",
-        "minecraft:archer_pottery_sherd",
-        "minecraft:arms_up_pottery_sherd",
-        "minecraft:heartbreak_pottery_sherd",
-        "minecraft:brewer_pottery_sherd",
-        "minecraft:danger_pottery_sherd",
-        "minecraft:explorer_pottery_sherd",
-        "minecraft:friend_pottery_sherd",
-        "minecraft:heart_pottery_sherd",
-        "minecraft:howl_pottery_sherd",
-        "minecraft:miner_pottery_sherd",
-        "minecraft:mourner_pottery_sherd",
-        "minecraft:plenty_pottery_sherd",
-        "minecraft:skull_pottery_sherd",
-        "minecraft:prize_pottery_sherd",
-        "minecraft:sheaf_pottery_sherd",
-        "minecraft:shelter_pottery_sherd",
-        "minecraft:snort_pottery_sherd"
-    ],
-    "minecraft:diamond_tier": [
-        "minecraft:diamond_axe",
-        "minecraft:diamond_sword",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_hoe",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots"
-    ],
-    "minecraft:digger": [
-        "minecraft:stone_pickaxe",
-        "minecraft:iron_pickaxe",
-        "minecraft:iron_shovel",
-        "minecraft:iron_axe",
-        "minecraft:wooden_shovel",
-        "minecraft:wooden_pickaxe",
-        "minecraft:stone_shovel",
-        "minecraft:wooden_axe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:door": [
-        "minecraft:wooden_door",
-        "minecraft:iron_door",
-        "minecraft:spruce_door",
-        "minecraft:birch_door",
-        "minecraft:crimson_door",
-        "minecraft:jungle_door",
-        "minecraft:dark_oak_door",
-        "minecraft:acacia_door",
-        "minecraft:mangrove_door",
-        "minecraft:warped_door",
-        "minecraft:cherry_door",
-        "minecraft:bamboo_door"
-    ],
-    "minecraft:golden_tier": [
-        "minecraft:golden_sword",
-        "minecraft:golden_hoe",
-        "minecraft:golden_shovel",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:golden_leggings",
-        "minecraft:golden_helmet",
-        "minecraft:golden_boots"
-    ],
-    "minecraft:hanging_actor": [
-        "minecraft:painting"
-    ],
-    "minecraft:hanging_sign": [
-        "minecraft:cherry_hanging_sign",
-        "minecraft:oak_hanging_sign",
-        "minecraft:crimson_hanging_sign",
-        "minecraft:acacia_hanging_sign",
-        "minecraft:spruce_hanging_sign",
-        "minecraft:birch_hanging_sign",
-        "minecraft:jungle_hanging_sign",
-        "minecraft:dark_oak_hanging_sign",
-        "minecraft:warped_hanging_sign",
-        "minecraft:mangrove_hanging_sign",
-        "minecraft:bamboo_hanging_sign"
-    ],
-    "minecraft:horse_armor": [
-        "minecraft:leather_horse_armor",
-        "minecraft:iron_horse_armor",
-        "minecraft:golden_horse_armor",
-        "minecraft:diamond_horse_armor"
-    ],
-    "minecraft:iron_tier": [
-        "minecraft:iron_pickaxe",
-        "minecraft:iron_shovel",
-        "minecraft:iron_sword",
-        "minecraft:iron_axe",
-        "minecraft:iron_hoe",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_helmet",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots"
-    ],
-    "minecraft:is_armor": [
-        "minecraft:leather_boots",
-        "minecraft:leather_leggings",
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:elytra",
-        "minecraft:chainmail_helmet",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_boots",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots",
-        "minecraft:turtle_helmet",
-        "minecraft:netherite_helmet",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_boots"
-    ],
-    "minecraft:is_axe": [
-        "minecraft:iron_axe",
-        "minecraft:wooden_axe",
-        "minecraft:diamond_axe",
-        "minecraft:netherite_axe",
-        "minecraft:stone_axe",
-        "minecraft:golden_axe"
-    ],
-    "minecraft:is_cooked": [
-        "minecraft:cooked_porkchop",
-        "minecraft:cooked_cod",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_salmon",
-        "minecraft:cooked_beef",
-        "minecraft:cooked_chicken",
-        "minecraft:cooked_rabbit",
-        "minecraft:cooked_mutton"
-    ],
-    "minecraft:is_fish": [
-        "minecraft:cod",
-        "minecraft:salmon",
-        "minecraft:tropical_fish",
-        "minecraft:pufferfish",
-        "minecraft:cooked_salmon",
-        "minecraft:cooked_cod"
-    ],
-    "minecraft:is_food": [
-        "minecraft:porkchop",
-        "minecraft:cooked_mutton",
-        "minecraft:apple",
-        "minecraft:golden_apple",
-        "minecraft:dried_kelp",
-        "minecraft:cooked_porkchop",
-        "minecraft:mushroom_stew",
-        "minecraft:enchanted_golden_apple",
-        "minecraft:bread",
-        "minecraft:cookie",
-        "minecraft:melon_slice",
-        "minecraft:beef",
-        "minecraft:cooked_beef",
-        "minecraft:chicken",
-        "minecraft:cooked_chicken",
-        "minecraft:rotten_flesh",
-        "minecraft:carrot",
-        "minecraft:potato",
-        "minecraft:baked_potato",
-        "minecraft:golden_carrot",
-        "minecraft:pumpkin_pie",
-        "minecraft:beetroot",
-        "minecraft:beetroot_soup",
-        "minecraft:sweet_berries",
-        "minecraft:rabbit",
-        "minecraft:cooked_rabbit",
-        "minecraft:rabbit_stew",
-        "minecraft:mutton"
-    ],
-    "minecraft:is_hoe": [
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:netherite_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe"
-    ],
-    "minecraft:is_meat": [
-        "minecraft:rotten_flesh",
-        "minecraft:porkchop",
-        "minecraft:cooked_mutton",
-        "minecraft:cooked_porkchop",
-        "minecraft:cooked_chicken",
-        "minecraft:beef",
-        "minecraft:rabbit",
-        "minecraft:cooked_beef",
-        "minecraft:chicken",
-        "minecraft:cooked_rabbit",
-        "minecraft:rabbit_stew",
-        "minecraft:mutton"
-    ],
-    "minecraft:is_minecart": [
-        "minecraft:minecart",
-        "minecraft:tnt_minecart",
-        "minecraft:chest_minecart",
-        "minecraft:hopper_minecart",
-        "minecraft:command_block_minecart"
-    ],
-    "minecraft:is_pickaxe": [
-        "minecraft:iron_pickaxe",
-        "minecraft:stone_pickaxe",
-        "minecraft:netherite_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:diamond_pickaxe",
-        "minecraft:golden_pickaxe"
-    ],
-    "minecraft:is_shovel": [
-        "minecraft:iron_shovel",
-        "minecraft:golden_shovel",
-        "minecraft:wooden_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:diamond_shovel",
-        "minecraft:netherite_shovel"
-    ],
-    "minecraft:is_sword": [
-        "minecraft:iron_sword",
-        "minecraft:wooden_sword",
-        "minecraft:stone_sword",
-        "minecraft:golden_sword",
-        "minecraft:diamond_sword",
-        "minecraft:netherite_sword"
-    ],
-    "minecraft:is_tool": [
-        "minecraft:iron_pickaxe",
-        "minecraft:iron_shovel",
-        "minecraft:iron_sword",
-        "minecraft:stone_hoe",
-        "minecraft:iron_axe",
-        "minecraft:wooden_sword",
-        "minecraft:diamond_hoe",
-        "minecraft:wooden_shovel",
-        "minecraft:golden_sword",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_axe",
-        "minecraft:stone_sword",
-        "minecraft:stone_shovel",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_sword",
-        "minecraft:diamond_axe",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:wooden_hoe",
-        "minecraft:netherite_sword",
-        "minecraft:iron_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:is_trident": [
-        "minecraft:trident"
-    ],
-    "minecraft:leather_tier": [
-        "minecraft:leather_helmet",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots",
-        "minecraft:leather_chestplate"
-    ],
-    "minecraft:lectern_books": [
-        "minecraft:writable_book",
-        "minecraft:written_book"
-    ],
-    "minecraft:logs": [
-        "minecraft:oak_log",
-        "minecraft:stripped_oak_wood",
-        "minecraft:spruce_log",
-        "minecraft:crimson_stem",
-        "minecraft:birch_log",
-        "minecraft:jungle_log",
-        "minecraft:dark_oak_wood",
-        "minecraft:oak_wood",
-        "minecraft:dark_oak_log",
-        "minecraft:acacia_log",
-        "minecraft:spruce_wood",
-        "minecraft:stripped_spruce_wood",
-        "minecraft:birch_wood",
-        "minecraft:stripped_birch_wood",
-        "minecraft:warped_hyphae",
-        "minecraft:jungle_wood",
-        "minecraft:stripped_jungle_wood",
-        "minecraft:stripped_warped_stem",
-        "minecraft:acacia_wood",
-        "minecraft:stripped_acacia_wood",
-        "minecraft:stripped_dark_oak_wood",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_spruce_log",
-        "minecraft:stripped_dark_oak_log",
-        "minecraft:stripped_jungle_log",
-        "minecraft:stripped_crimson_stem",
-        "minecraft:mangrove_wood",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:crimson_hyphae",
-        "minecraft:stripped_cherry_log",
-        "minecraft:stripped_cherry_wood",
-        "minecraft:stripped_acacia_log",
-        "minecraft:stripped_warped_hyphae",
-        "minecraft:stripped_birch_log",
-        "minecraft:warped_stem",
-        "minecraft:stripped_crimson_hyphae",
-        "minecraft:cherry_wood",
-        "minecraft:stripped_oak_log",
-        "minecraft:cherry_log",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:logs_that_burn": [
-        "minecraft:oak_log",
-        "minecraft:stripped_oak_wood",
-        "minecraft:spruce_log",
-        "minecraft:birch_log",
-        "minecraft:jungle_log",
-        "minecraft:dark_oak_wood",
-        "minecraft:oak_wood",
-        "minecraft:dark_oak_log",
-        "minecraft:acacia_log",
-        "minecraft:spruce_wood",
-        "minecraft:stripped_spruce_wood",
-        "minecraft:birch_wood",
-        "minecraft:stripped_birch_wood",
-        "minecraft:jungle_wood",
-        "minecraft:stripped_jungle_wood",
-        "minecraft:acacia_wood",
-        "minecraft:stripped_acacia_wood",
-        "minecraft:stripped_dark_oak_wood",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_spruce_log",
-        "minecraft:stripped_dark_oak_log",
-        "minecraft:stripped_jungle_log",
-        "minecraft:mangrove_wood",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:stripped_cherry_log",
-        "minecraft:stripped_cherry_wood",
-        "minecraft:stripped_acacia_log",
-        "minecraft:stripped_birch_log",
-        "minecraft:cherry_wood",
-        "minecraft:stripped_oak_log",
-        "minecraft:cherry_log",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:mangrove_logs": [
-        "minecraft:mangrove_log",
-        "minecraft:mangrove_wood",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:music_disc": [
-        "minecraft:music_disc_stal",
-        "minecraft:music_disc_13",
-        "minecraft:music_disc_cat",
-        "minecraft:music_disc_11",
-        "minecraft:music_disc_blocks",
-        "minecraft:music_disc_mellohi",
-        "minecraft:music_disc_chirp",
-        "minecraft:music_disc_ward",
-        "minecraft:music_disc_far",
-        "minecraft:music_disc_mall",
-        "minecraft:music_disc_strad",
-        "minecraft:music_disc_wait",
-        "minecraft:music_disc_otherside",
-        "minecraft:music_disc_pigstep",
-        "minecraft:music_disc_5",
-        "minecraft:music_disc_relic"
-    ],
-    "minecraft:netherite_tier": [
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_sword",
-        "minecraft:netherite_hoe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_helmet",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_boots"
-    ],
-    "minecraft:piglin_loved": [],
-    "minecraft:piglin_repellents": [],
-    "minecraft:planks": [
-        "minecraft:dark_oak_planks",
-        "minecraft:oak_planks",
-        "minecraft:warped_planks",
-        "minecraft:spruce_planks",
-        "minecraft:birch_planks",
-        "minecraft:jungle_planks",
-        "minecraft:mangrove_planks",
-        "minecraft:acacia_planks",
-        "minecraft:crimson_planks",
-        "minecraft:bamboo_planks",
-        "minecraft:cherry_planks"
-    ],
-    "minecraft:sand": [
-        "minecraft:sand"
-    ],
-    "minecraft:sign": [
-        "minecraft:dark_oak_sign",
-        "minecraft:oak_sign",
-        "minecraft:spruce_sign",
-        "minecraft:crimson_sign",
-        "minecraft:birch_sign",
-        "minecraft:jungle_sign",
-        "minecraft:warped_sign",
-        "minecraft:bamboo_sign",
-        "minecraft:acacia_sign",
-        "minecraft:mangrove_sign",
-        "minecraft:crimson_hanging_sign",
-        "minecraft:cherry_sign",
-        "minecraft:acacia_hanging_sign",
-        "minecraft:cherry_hanging_sign",
-        "minecraft:oak_hanging_sign",
-        "minecraft:spruce_hanging_sign",
-        "minecraft:birch_hanging_sign",
-        "minecraft:jungle_hanging_sign",
-        "minecraft:dark_oak_hanging_sign",
-        "minecraft:warped_hanging_sign",
-        "minecraft:mangrove_hanging_sign",
-        "minecraft:bamboo_hanging_sign"
-    ],
-    "minecraft:soul_fire_base_blocks": [
-        "minecraft:soul_soil",
-        "minecraft:soul_sand"
-    ],
-    "minecraft:spawn_egg": [
-        "minecraft:zombie_villager_spawn_egg",
-        "minecraft:ender_dragon_spawn_egg",
-        "minecraft:zombie_horse_spawn_egg",
-        "minecraft:creeper_spawn_egg",
-        "minecraft:chicken_spawn_egg",
-        "minecraft:skeleton_spawn_egg",
-        "minecraft:cow_spawn_egg",
-        "minecraft:pig_spawn_egg",
-        "minecraft:dolphin_spawn_egg",
-        "minecraft:sheep_spawn_egg",
-        "minecraft:slime_spawn_egg",
-        "minecraft:wolf_spawn_egg",
-        "minecraft:phantom_spawn_egg",
-        "minecraft:mooshroom_spawn_egg",
-        "minecraft:agent_spawn_egg",
-        "minecraft:enderman_spawn_egg",
-        "minecraft:silverfish_spawn_egg",
-        "minecraft:zoglin_spawn_egg",
-        "minecraft:fox_spawn_egg",
-        "minecraft:spider_spawn_egg",
-        "minecraft:zombie_spawn_egg",
-        "minecraft:bat_spawn_egg",
-        "minecraft:zombie_pigman_spawn_egg",
-        "minecraft:villager_spawn_egg",
-        "minecraft:vex_spawn_egg",
-        "minecraft:llama_spawn_egg",
-        "minecraft:squid_spawn_egg",
-        "minecraft:cat_spawn_egg",
-        "minecraft:ocelot_spawn_egg",
-        "minecraft:witch_spawn_egg",
-        "minecraft:ghast_spawn_egg",
-        "minecraft:allay_spawn_egg",
-        "minecraft:strider_spawn_egg",
-        "minecraft:magma_cube_spawn_egg",
-        "minecraft:blaze_spawn_egg",
-        "minecraft:cave_spider_spawn_egg",
-        "minecraft:guardian_spawn_egg",
-        "minecraft:horse_spawn_egg",
-        "minecraft:husk_spawn_egg",
-        "minecraft:rabbit_spawn_egg",
-        "minecraft:endermite_spawn_egg",
-        "minecraft:mule_spawn_egg",
-        "minecraft:stray_spawn_egg",
-        "minecraft:wither_skeleton_spawn_egg",
-        "minecraft:donkey_spawn_egg",
-        "minecraft:skeleton_horse_spawn_egg",
-        "minecraft:shulker_spawn_egg",
-        "minecraft:npc_spawn_egg",
-        "minecraft:elder_guardian_spawn_egg",
-        "minecraft:polar_bear_spawn_egg",
-        "minecraft:cod_spawn_egg",
-        "minecraft:vindicator_spawn_egg",
-        "minecraft:evoker_spawn_egg",
-        "minecraft:parrot_spawn_egg",
-        "minecraft:tropical_fish_spawn_egg",
-        "minecraft:pufferfish_spawn_egg",
-        "minecraft:salmon_spawn_egg",
-        "minecraft:drowned_spawn_egg",
-        "minecraft:turtle_spawn_egg",
-        "minecraft:piglin_spawn_egg",
-        "minecraft:panda_spawn_egg",
-        "minecraft:pillager_spawn_egg",
-        "minecraft:wandering_trader_spawn_egg",
-        "minecraft:ravager_spawn_egg",
-        "minecraft:bee_spawn_egg",
-        "minecraft:hoglin_spawn_egg",
-        "minecraft:piglin_brute_spawn_egg",
-        "minecraft:sniffer_spawn_egg",
-        "minecraft:axolotl_spawn_egg",
-        "minecraft:goat_spawn_egg",
-        "minecraft:glow_squid_spawn_egg",
-        "minecraft:iron_golem_spawn_egg",
-        "minecraft:snow_golem_spawn_egg",
-        "minecraft:wither_spawn_egg",
-        "minecraft:frog_spawn_egg",
-        "minecraft:tadpole_spawn_egg",
-        "minecraft:warden_spawn_egg",
-        "minecraft:trader_llama_spawn_egg",
-        "minecraft:camel_spawn_egg",
-        "minecraft:armadillo_spawn_egg",
-        "minecraft:spawn_egg"
-    ],
-    "minecraft:stone_bricks": [
-        "minecraft:stonebrick"
-    ],
-    "minecraft:stone_crafting_materials": [
-        "minecraft:cobblestone",
-        "minecraft:cobbled_deepslate",
-        "minecraft:blackstone"
-    ],
-    "minecraft:stone_tier": [
-        "minecraft:stone_sword",
-        "minecraft:stone_shovel",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:stone_hoe"
-    ],
-    "minecraft:stone_tool_materials": [
-        "minecraft:cobblestone",
-        "minecraft:cobbled_deepslate",
-        "minecraft:blackstone"
-    ],
-    "minecraft:transform_materials": [
-        "minecraft:netherite_ingot"
-    ],
-    "minecraft:transform_templates": [
-        "minecraft:netherite_upgrade_smithing_template"
-    ],
-    "minecraft:transformable_items": [
-        "minecraft:diamond_axe",
-        "minecraft:diamond_sword",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_hoe",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_boots"
-    ],
-    "minecraft:trim_materials": [
-        "minecraft:diamond",
-        "minecraft:emerald",
-        "minecraft:iron_ingot",
-        "minecraft:quartz",
-        "minecraft:lapis_lazuli",
-        "minecraft:gold_ingot",
-        "minecraft:redstone",
-        "minecraft:copper_ingot",
-        "minecraft:netherite_ingot",
-        "minecraft:amethyst_shard"
-    ],
-    "minecraft:trim_templates": [
-        "minecraft:tide_armor_trim_smithing_template",
-        "minecraft:sentry_armor_trim_smithing_template",
-        "minecraft:coast_armor_trim_smithing_template",
-        "minecraft:dune_armor_trim_smithing_template",
-        "minecraft:wild_armor_trim_smithing_template",
-        "minecraft:ward_armor_trim_smithing_template",
-        "minecraft:eye_armor_trim_smithing_template",
-        "minecraft:vex_armor_trim_smithing_template",
-        "minecraft:snout_armor_trim_smithing_template",
-        "minecraft:rib_armor_trim_smithing_template",
-        "minecraft:spire_armor_trim_smithing_template",
-        "minecraft:silence_armor_trim_smithing_template",
-        "minecraft:wayfinder_armor_trim_smithing_template",
-        "minecraft:raiser_armor_trim_smithing_template",
-        "minecraft:shaper_armor_trim_smithing_template",
-        "minecraft:host_armor_trim_smithing_template"
-    ],
-    "minecraft:trimmable_armors": [
-        "minecraft:leather_boots",
-        "minecraft:leather_leggings",
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_helmet",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_boots",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots",
-        "minecraft:turtle_helmet",
-        "minecraft:netherite_helmet",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_boots"
-    ],
-    "minecraft:vibration_damper": [
-        "minecraft:pink_wool",
-        "minecraft:lime_wool",
-        "minecraft:white_wool",
-        "minecraft:magenta_wool",
-        "minecraft:red_wool",
-        "minecraft:orange_wool",
-        "minecraft:yellow_carpet",
-        "minecraft:light_blue_wool",
-        "minecraft:yellow_wool",
-        "minecraft:gray_wool",
-        "minecraft:light_gray_wool",
-        "minecraft:cyan_wool",
-        "minecraft:purple_wool",
-        "minecraft:purple_carpet",
-        "minecraft:blue_wool",
-        "minecraft:brown_wool",
-        "minecraft:green_wool",
-        "minecraft:black_wool",
-        "minecraft:white_carpet",
-        "minecraft:orange_carpet",
-        "minecraft:magenta_carpet",
-        "minecraft:light_blue_carpet",
-        "minecraft:lime_carpet",
-        "minecraft:pink_carpet",
-        "minecraft:gray_carpet",
-        "minecraft:light_gray_carpet",
-        "minecraft:cyan_carpet",
-        "minecraft:blue_carpet",
-        "minecraft:brown_carpet",
-        "minecraft:green_carpet",
-        "minecraft:red_carpet",
-        "minecraft:black_carpet"
-    ],
-    "minecraft:warped_stems": [
-        "minecraft:stripped_warped_hyphae",
-        "minecraft:warped_hyphae",
-        "minecraft:stripped_warped_stem",
-        "minecraft:warped_stem"
-    ],
-    "minecraft:wooden_slabs": [
-        "minecraft:mangrove_slab",
-        "minecraft:birch_slab",
-        "minecraft:cherry_slab",
-        "minecraft:jungle_slab",
-        "minecraft:spruce_slab",
-        "minecraft:bamboo_slab",
-        "minecraft:oak_slab",
-        "minecraft:acacia_slab",
-        "minecraft:dark_oak_slab",
-        "minecraft:crimson_slab",
-        "minecraft:warped_slab"
-    ],
-    "minecraft:wooden_tier": [
-        "minecraft:wooden_sword",
-        "minecraft:wooden_shovel",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_axe",
-        "minecraft:wooden_hoe"
-    ],
-    "minecraft:wool": [
-        "minecraft:pink_wool",
-        "minecraft:lime_wool",
-        "minecraft:white_wool",
-        "minecraft:magenta_wool",
-        "minecraft:red_wool",
-        "minecraft:orange_wool",
-        "minecraft:light_blue_wool",
-        "minecraft:yellow_wool",
-        "minecraft:gray_wool",
-        "minecraft:light_gray_wool",
-        "minecraft:cyan_wool",
-        "minecraft:purple_wool",
-        "minecraft:blue_wool",
-        "minecraft:brown_wool",
-        "minecraft:green_wool",
-        "minecraft:black_wool"
-    ]
-}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_0.json b/core/src/main/resources/bedrock/item_tags.1_21_0.json
deleted file mode 100644
index 5fac99114..000000000
--- a/core/src/main/resources/bedrock/item_tags.1_21_0.json
+++ /dev/null
@@ -1,802 +0,0 @@
-{
-    "minecraft:arrow": [
-        "minecraft:arrow"
-    ],
-    "minecraft:banner": [
-        "minecraft:banner"
-    ],
-    "minecraft:boat": [
-        "minecraft:cherry_chest_boat",
-        "minecraft:oak_chest_boat",
-        "minecraft:mangrove_boat",
-        "minecraft:oak_boat",
-        "minecraft:birch_boat",
-        "minecraft:jungle_boat",
-        "minecraft:spruce_boat",
-        "minecraft:acacia_boat",
-        "minecraft:dark_oak_boat",
-        "minecraft:birch_chest_boat",
-        "minecraft:jungle_chest_boat",
-        "minecraft:spruce_chest_boat",
-        "minecraft:acacia_chest_boat",
-        "minecraft:dark_oak_chest_boat",
-        "minecraft:mangrove_chest_boat",
-        "minecraft:cherry_boat",
-        "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
-    ],
-    "minecraft:boats": [
-        "minecraft:cherry_chest_boat",
-        "minecraft:oak_chest_boat",
-        "minecraft:mangrove_boat",
-        "minecraft:oak_boat",
-        "minecraft:birch_boat",
-        "minecraft:jungle_boat",
-        "minecraft:spruce_boat",
-        "minecraft:acacia_boat",
-        "minecraft:dark_oak_boat",
-        "minecraft:birch_chest_boat",
-        "minecraft:jungle_chest_boat",
-        "minecraft:spruce_chest_boat",
-        "minecraft:acacia_chest_boat",
-        "minecraft:dark_oak_chest_boat",
-        "minecraft:mangrove_chest_boat",
-        "minecraft:cherry_boat",
-        "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
-    ],
-    "minecraft:bookshelf_books": [
-        "minecraft:written_book",
-        "minecraft:book",
-        "minecraft:writable_book",
-        "minecraft:enchanted_book"
-    ],
-    "minecraft:chainmail_tier": [
-        "minecraft:chainmail_helmet",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_boots"
-    ],
-    "minecraft:coals": [
-        "minecraft:coal",
-        "minecraft:charcoal"
-    ],
-    "minecraft:crimson_stems": [
-        "minecraft:stripped_crimson_stem",
-        "minecraft:crimson_hyphae",
-        "minecraft:crimson_stem",
-        "minecraft:stripped_crimson_hyphae"
-    ],
-    "minecraft:decorated_pot_sherds": [
-        "minecraft:skull_pottery_sherd",
-        "minecraft:angler_pottery_sherd",
-        "minecraft:prize_pottery_sherd",
-        "minecraft:mourner_pottery_sherd",
-        "minecraft:arms_up_pottery_sherd",
-        "minecraft:burn_pottery_sherd",
-        "minecraft:snort_pottery_sherd",
-        "minecraft:brick",
-        "minecraft:heartbreak_pottery_sherd",
-        "minecraft:miner_pottery_sherd",
-        "minecraft:brewer_pottery_sherd",
-        "minecraft:plenty_pottery_sherd",
-        "minecraft:scrape_pottery_sherd",
-        "minecraft:howl_pottery_sherd",
-        "minecraft:explorer_pottery_sherd",
-        "minecraft:archer_pottery_sherd",
-        "minecraft:blade_pottery_sherd",
-        "minecraft:danger_pottery_sherd",
-        "minecraft:flow_pottery_sherd",
-        "minecraft:friend_pottery_sherd",
-        "minecraft:guster_pottery_sherd",
-        "minecraft:heart_pottery_sherd",
-        "minecraft:sheaf_pottery_sherd",
-        "minecraft:shelter_pottery_sherd"
-    ],
-    "minecraft:diamond_tier": [
-        "minecraft:diamond_sword",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:mace",
-        "minecraft:diamond_hoe",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots"
-    ],
-    "minecraft:digger": [
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:iron_axe",
-        "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:wooden_axe",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:door": [
-        "minecraft:warped_door",
-        "minecraft:waxed_weathered_copper_door",
-        "minecraft:wooden_door",
-        "minecraft:iron_door",
-        "minecraft:mangrove_door",
-        "minecraft:exposed_copper_door",
-        "minecraft:bamboo_door",
-        "minecraft:weathered_copper_door",
-        "minecraft:jungle_door",
-        "minecraft:spruce_door",
-        "minecraft:birch_door",
-        "minecraft:acacia_door",
-        "minecraft:dark_oak_door",
-        "minecraft:crimson_door",
-        "minecraft:cherry_door",
-        "minecraft:copper_door",
-        "minecraft:oxidized_copper_door",
-        "minecraft:waxed_copper_door",
-        "minecraft:waxed_exposed_copper_door",
-        "minecraft:waxed_oxidized_copper_door"
-    ],
-    "minecraft:golden_tier": [
-        "minecraft:golden_sword",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:golden_hoe",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots"
-    ],
-    "minecraft:hanging_actor": [
-        "minecraft:painting"
-    ],
-    "minecraft:hanging_sign": [
-        "minecraft:mangrove_hanging_sign",
-        "minecraft:bamboo_hanging_sign",
-        "minecraft:spruce_hanging_sign",
-        "minecraft:birch_hanging_sign",
-        "minecraft:cherry_hanging_sign",
-        "minecraft:oak_hanging_sign",
-        "minecraft:jungle_hanging_sign",
-        "minecraft:acacia_hanging_sign",
-        "minecraft:dark_oak_hanging_sign",
-        "minecraft:crimson_hanging_sign",
-        "minecraft:warped_hanging_sign"
-    ],
-    "minecraft:horse_armor": [
-        "minecraft:golden_horse_armor",
-        "minecraft:leather_horse_armor",
-        "minecraft:iron_horse_armor",
-        "minecraft:diamond_horse_armor"
-    ],
-    "minecraft:iron_tier": [
-        "minecraft:iron_sword",
-        "minecraft:iron_pickaxe",
-        "minecraft:iron_axe",
-        "minecraft:iron_shovel",
-        "minecraft:iron_hoe",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots"
-    ],
-    "minecraft:is_armor": [
-        "minecraft:netherite_boots",
-        "minecraft:chainmail_helmet",
-        "minecraft:elytra",
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_boots",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots",
-        "minecraft:turtle_helmet",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_helmet"
-    ],
-    "minecraft:is_axe": [
-        "minecraft:iron_axe",
-        "minecraft:wooden_axe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_axe",
-        "minecraft:golden_axe",
-        "minecraft:netherite_axe"
-    ],
-    "minecraft:is_cooked": [
-        "minecraft:cooked_cod",
-        "minecraft:cooked_porkchop",
-        "minecraft:cooked_rabbit",
-        "minecraft:cooked_salmon",
-        "minecraft:cooked_beef",
-        "minecraft:cooked_chicken",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_mutton"
-    ],
-    "minecraft:is_fish": [
-        "minecraft:cooked_cod",
-        "minecraft:cod",
-        "minecraft:salmon",
-        "minecraft:tropical_fish",
-        "minecraft:pufferfish",
-        "minecraft:cooked_salmon"
-    ],
-    "minecraft:is_food": [
-        "minecraft:rabbit",
-        "minecraft:cooked_porkchop",
-        "minecraft:mushroom_stew",
-        "minecraft:beetroot",
-        "minecraft:apple",
-        "minecraft:carrot",
-        "minecraft:chicken",
-        "minecraft:potato",
-        "minecraft:enchanted_golden_apple",
-        "minecraft:sweet_berries",
-        "minecraft:golden_apple",
-        "minecraft:bread",
-        "minecraft:porkchop",
-        "minecraft:cookie",
-        "minecraft:cooked_rabbit",
-        "minecraft:beef",
-        "minecraft:dried_kelp",
-        "minecraft:beetroot_soup",
-        "minecraft:melon_slice",
-        "minecraft:cooked_beef",
-        "minecraft:rotten_flesh",
-        "minecraft:cooked_chicken",
-        "minecraft:baked_potato",
-        "minecraft:golden_carrot",
-        "minecraft:pumpkin_pie",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_mutton",
-        "minecraft:mutton"
-    ],
-    "minecraft:is_hoe": [
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:is_meat": [
-        "minecraft:rabbit",
-        "minecraft:cooked_porkchop",
-        "minecraft:chicken",
-        "minecraft:porkchop",
-        "minecraft:cooked_rabbit",
-        "minecraft:beef",
-        "minecraft:cooked_beef",
-        "minecraft:rotten_flesh",
-        "minecraft:cooked_chicken",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_mutton",
-        "minecraft:mutton"
-    ],
-    "minecraft:is_minecart": [
-        "minecraft:command_block_minecart",
-        "minecraft:minecart",
-        "minecraft:chest_minecart",
-        "minecraft:tnt_minecart",
-        "minecraft:hopper_minecart"
-    ],
-    "minecraft:is_pickaxe": [
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:stone_pickaxe",
-        "minecraft:diamond_pickaxe",
-        "minecraft:golden_pickaxe",
-        "minecraft:netherite_pickaxe"
-    ],
-    "minecraft:is_shovel": [
-        "minecraft:wooden_shovel",
-        "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:diamond_shovel",
-        "minecraft:golden_shovel",
-        "minecraft:netherite_shovel"
-    ],
-    "minecraft:is_sword": [
-        "minecraft:iron_sword",
-        "minecraft:stone_sword",
-        "minecraft:wooden_sword",
-        "minecraft:diamond_sword",
-        "minecraft:mace",
-        "minecraft:golden_sword",
-        "minecraft:netherite_sword"
-    ],
-    "minecraft:is_tool": [
-        "minecraft:iron_sword",
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:stone_sword",
-        "minecraft:iron_axe",
-        "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:wooden_sword",
-        "minecraft:wooden_axe",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_sword",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:mace",
-        "minecraft:golden_sword",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_sword",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:is_trident": [
-        "minecraft:trident"
-    ],
-    "minecraft:leather_tier": [
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots"
-    ],
-    "minecraft:lectern_books": [
-        "minecraft:written_book",
-        "minecraft:writable_book"
-    ],
-    "minecraft:logs": [
-        "minecraft:stripped_oak_log",
-        "minecraft:mangrove_wood",
-        "minecraft:spruce_wood",
-        "minecraft:stripped_cherry_wood",
-        "minecraft:stripped_crimson_stem",
-        "minecraft:stripped_spruce_wood",
-        "minecraft:spruce_log",
-        "minecraft:acacia_wood",
-        "minecraft:stripped_acacia_wood",
-        "minecraft:stripped_warped_hyphae",
-        "minecraft:acacia_log",
-        "minecraft:oak_log",
-        "minecraft:birch_log",
-        "minecraft:jungle_log",
-        "minecraft:dark_oak_log",
-        "minecraft:jungle_wood",
-        "minecraft:stripped_jungle_wood",
-        "minecraft:oak_wood",
-        "minecraft:stripped_oak_wood",
-        "minecraft:birch_wood",
-        "minecraft:stripped_birch_wood",
-        "minecraft:dark_oak_wood",
-        "minecraft:stripped_dark_oak_wood",
-        "minecraft:stripped_dark_oak_log",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_jungle_log",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:crimson_hyphae",
-        "minecraft:stripped_cherry_log",
-        "minecraft:stripped_birch_log",
-        "minecraft:stripped_acacia_log",
-        "minecraft:crimson_stem",
-        "minecraft:warped_hyphae",
-        "minecraft:stripped_spruce_log",
-        "minecraft:warped_stem",
-        "minecraft:stripped_crimson_hyphae",
-        "minecraft:cherry_wood",
-        "minecraft:cherry_log",
-        "minecraft:stripped_warped_stem",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:logs_that_burn": [
-        "minecraft:stripped_oak_log",
-        "minecraft:mangrove_wood",
-        "minecraft:spruce_wood",
-        "minecraft:stripped_cherry_wood",
-        "minecraft:stripped_spruce_wood",
-        "minecraft:spruce_log",
-        "minecraft:acacia_wood",
-        "minecraft:stripped_acacia_wood",
-        "minecraft:acacia_log",
-        "minecraft:oak_log",
-        "minecraft:birch_log",
-        "minecraft:jungle_log",
-        "minecraft:dark_oak_log",
-        "minecraft:jungle_wood",
-        "minecraft:stripped_jungle_wood",
-        "minecraft:oak_wood",
-        "minecraft:stripped_oak_wood",
-        "minecraft:birch_wood",
-        "minecraft:stripped_birch_wood",
-        "minecraft:dark_oak_wood",
-        "minecraft:stripped_dark_oak_wood",
-        "minecraft:stripped_dark_oak_log",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_jungle_log",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:stripped_cherry_log",
-        "minecraft:stripped_birch_log",
-        "minecraft:stripped_acacia_log",
-        "minecraft:stripped_spruce_log",
-        "minecraft:cherry_wood",
-        "minecraft:cherry_log",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:mangrove_logs": [
-        "minecraft:mangrove_wood",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:music_disc": [
-        "minecraft:music_disc_ward",
-        "minecraft:music_disc_strad",
-        "minecraft:music_disc_chirp",
-        "minecraft:music_disc_creator_music_box",
-        "minecraft:music_disc_mall",
-        "minecraft:music_disc_pigstep",
-        "minecraft:music_disc_wait",
-        "minecraft:music_disc_11",
-        "minecraft:music_disc_stal",
-        "minecraft:music_disc_13",
-        "minecraft:music_disc_cat",
-        "minecraft:music_disc_blocks",
-        "minecraft:music_disc_far",
-        "minecraft:music_disc_mellohi",
-        "minecraft:music_disc_otherside",
-        "minecraft:music_disc_5",
-        "minecraft:music_disc_relic",
-        "minecraft:music_disc_creator",
-        "minecraft:music_disc_precipice"
-    ],
-    "minecraft:netherite_tier": [
-        "minecraft:netherite_boots",
-        "minecraft:netherite_sword",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe",
-        "minecraft:netherite_helmet"
-    ],
-    "minecraft:planks": [
-        "minecraft:spruce_planks",
-        "minecraft:oak_planks",
-        "minecraft:mangrove_planks",
-        "minecraft:birch_planks",
-        "minecraft:jungle_planks",
-        "minecraft:acacia_planks",
-        "minecraft:dark_oak_planks",
-        "minecraft:bamboo_planks",
-        "minecraft:warped_planks",
-        "minecraft:crimson_planks",
-        "minecraft:cherry_planks"
-    ],
-    "minecraft:sand": [
-        "minecraft:sand"
-    ],
-    "minecraft:sign": [
-        "minecraft:bamboo_sign",
-        "minecraft:mangrove_hanging_sign",
-        "minecraft:cherry_sign",
-        "minecraft:oak_sign",
-        "minecraft:bamboo_hanging_sign",
-        "minecraft:warped_sign",
-        "minecraft:spruce_sign",
-        "minecraft:spruce_hanging_sign",
-        "minecraft:acacia_sign",
-        "minecraft:birch_hanging_sign",
-        "minecraft:birch_sign",
-        "minecraft:jungle_sign",
-        "minecraft:dark_oak_sign",
-        "minecraft:mangrove_sign",
-        "minecraft:crimson_sign",
-        "minecraft:cherry_hanging_sign",
-        "minecraft:oak_hanging_sign",
-        "minecraft:jungle_hanging_sign",
-        "minecraft:acacia_hanging_sign",
-        "minecraft:dark_oak_hanging_sign",
-        "minecraft:crimson_hanging_sign",
-        "minecraft:warped_hanging_sign"
-    ],
-    "minecraft:soul_fire_base_blocks": [
-        "minecraft:soul_sand",
-        "minecraft:soul_soil"
-    ],
-    "minecraft:spawn_egg": [
-        "minecraft:enderman_spawn_egg",
-        "minecraft:ravager_spawn_egg",
-        "minecraft:strider_spawn_egg",
-        "minecraft:slime_spawn_egg",
-        "minecraft:glow_squid_spawn_egg",
-        "minecraft:pillager_spawn_egg",
-        "minecraft:blaze_spawn_egg",
-        "minecraft:witch_spawn_egg",
-        "minecraft:horse_spawn_egg",
-        "minecraft:polar_bear_spawn_egg",
-        "minecraft:zoglin_spawn_egg",
-        "minecraft:stray_spawn_egg",
-        "minecraft:zombie_pigman_spawn_egg",
-        "minecraft:snow_golem_spawn_egg",
-        "minecraft:panda_spawn_egg",
-        "minecraft:axolotl_spawn_egg",
-        "minecraft:agent_spawn_egg",
-        "minecraft:shulker_spawn_egg",
-        "minecraft:vindicator_spawn_egg",
-        "minecraft:evoker_spawn_egg",
-        "minecraft:parrot_spawn_egg",
-        "minecraft:wolf_spawn_egg",
-        "minecraft:elder_guardian_spawn_egg",
-        "minecraft:silverfish_spawn_egg",
-        "minecraft:tadpole_spawn_egg",
-        "minecraft:cow_spawn_egg",
-        "minecraft:bogged_spawn_egg",
-        "minecraft:ocelot_spawn_egg",
-        "minecraft:bee_spawn_egg",
-        "minecraft:piglin_brute_spawn_egg",
-        "minecraft:rabbit_spawn_egg",
-        "minecraft:camel_spawn_egg",
-        "minecraft:creeper_spawn_egg",
-        "minecraft:drowned_spawn_egg",
-        "minecraft:chicken_spawn_egg",
-        "minecraft:pig_spawn_egg",
-        "minecraft:sheep_spawn_egg",
-        "minecraft:mooshroom_spawn_egg",
-        "minecraft:skeleton_spawn_egg",
-        "minecraft:spider_spawn_egg",
-        "minecraft:zombie_spawn_egg",
-        "minecraft:villager_spawn_egg",
-        "minecraft:squid_spawn_egg",
-        "minecraft:bat_spawn_egg",
-        "minecraft:ghast_spawn_egg",
-        "minecraft:magma_cube_spawn_egg",
-        "minecraft:cave_spider_spawn_egg",
-        "minecraft:endermite_spawn_egg",
-        "minecraft:guardian_spawn_egg",
-        "minecraft:husk_spawn_egg",
-        "minecraft:piglin_spawn_egg",
-        "minecraft:wither_skeleton_spawn_egg",
-        "minecraft:donkey_spawn_egg",
-        "minecraft:mule_spawn_egg",
-        "minecraft:skeleton_horse_spawn_egg",
-        "minecraft:zombie_horse_spawn_egg",
-        "minecraft:npc_spawn_egg",
-        "minecraft:breeze_spawn_egg",
-        "minecraft:llama_spawn_egg",
-        "minecraft:vex_spawn_egg",
-        "minecraft:warden_spawn_egg",
-        "minecraft:zombie_villager_spawn_egg",
-        "minecraft:tropical_fish_spawn_egg",
-        "minecraft:cod_spawn_egg",
-        "minecraft:pufferfish_spawn_egg",
-        "minecraft:salmon_spawn_egg",
-        "minecraft:dolphin_spawn_egg",
-        "minecraft:turtle_spawn_egg",
-        "minecraft:phantom_spawn_egg",
-        "minecraft:cat_spawn_egg",
-        "minecraft:fox_spawn_egg",
-        "minecraft:wandering_trader_spawn_egg",
-        "minecraft:hoglin_spawn_egg",
-        "minecraft:sniffer_spawn_egg",
-        "minecraft:goat_spawn_egg",
-        "minecraft:iron_golem_spawn_egg",
-        "minecraft:ender_dragon_spawn_egg",
-        "minecraft:wither_spawn_egg",
-        "minecraft:frog_spawn_egg",
-        "minecraft:allay_spawn_egg",
-        "minecraft:trader_llama_spawn_egg",
-        "minecraft:armadillo_spawn_egg",
-        "minecraft:spawn_egg"
-    ],
-    "minecraft:stone_bricks": [
-        "minecraft:stonebrick"
-    ],
-    "minecraft:stone_crafting_materials": [
-        "minecraft:cobblestone",
-        "minecraft:cobbled_deepslate",
-        "minecraft:blackstone"
-    ],
-    "minecraft:stone_tier": [
-        "minecraft:stone_sword",
-        "minecraft:stone_shovel",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:stone_hoe"
-    ],
-    "minecraft:stone_tool_materials": [
-        "minecraft:cobblestone",
-        "minecraft:cobbled_deepslate",
-        "minecraft:blackstone"
-    ],
-    "minecraft:transform_materials": [
-        "minecraft:netherite_ingot"
-    ],
-    "minecraft:transform_templates": [
-        "minecraft:netherite_upgrade_smithing_template"
-    ],
-    "minecraft:transformable_items": [
-        "minecraft:diamond_sword",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:diamond_hoe",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_boots"
-    ],
-    "minecraft:trim_materials": [
-        "minecraft:gold_ingot",
-        "minecraft:iron_ingot",
-        "minecraft:diamond",
-        "minecraft:redstone",
-        "minecraft:netherite_ingot",
-        "minecraft:lapis_lazuli",
-        "minecraft:quartz",
-        "minecraft:copper_ingot",
-        "minecraft:emerald",
-        "minecraft:amethyst_shard"
-    ],
-    "minecraft:trim_templates": [
-        "minecraft:vex_armor_trim_smithing_template",
-        "minecraft:wild_armor_trim_smithing_template",
-        "minecraft:flow_armor_trim_smithing_template",
-        "minecraft:raiser_armor_trim_smithing_template",
-        "minecraft:silence_armor_trim_smithing_template",
-        "minecraft:coast_armor_trim_smithing_template",
-        "minecraft:snout_armor_trim_smithing_template",
-        "minecraft:dune_armor_trim_smithing_template",
-        "minecraft:rib_armor_trim_smithing_template",
-        "minecraft:host_armor_trim_smithing_template",
-        "minecraft:bolt_armor_trim_smithing_template",
-        "minecraft:shaper_armor_trim_smithing_template",
-        "minecraft:eye_armor_trim_smithing_template",
-        "minecraft:spire_armor_trim_smithing_template",
-        "minecraft:sentry_armor_trim_smithing_template",
-        "minecraft:ward_armor_trim_smithing_template",
-        "minecraft:tide_armor_trim_smithing_template",
-        "minecraft:wayfinder_armor_trim_smithing_template"
-    ],
-    "minecraft:trimmable_armors": [
-        "minecraft:netherite_boots",
-        "minecraft:chainmail_helmet",
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_boots",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots",
-        "minecraft:turtle_helmet",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_helmet"
-    ],
-    "minecraft:vibration_damper": [
-        "minecraft:black_carpet",
-        "minecraft:blue_carpet",
-        "minecraft:pink_carpet",
-        "minecraft:lime_carpet",
-        "minecraft:green_wool",
-        "minecraft:cyan_carpet",
-        "minecraft:orange_wool",
-        "minecraft:white_carpet",
-        "minecraft:purple_carpet",
-        "minecraft:yellow_carpet",
-        "minecraft:light_gray_wool",
-        "minecraft:magenta_carpet",
-        "minecraft:purple_wool",
-        "minecraft:gray_wool",
-        "minecraft:red_carpet",
-        "minecraft:brown_carpet",
-        "minecraft:light_blue_wool",
-        "minecraft:white_wool",
-        "minecraft:magenta_wool",
-        "minecraft:yellow_wool",
-        "minecraft:lime_wool",
-        "minecraft:pink_wool",
-        "minecraft:cyan_wool",
-        "minecraft:blue_wool",
-        "minecraft:brown_wool",
-        "minecraft:red_wool",
-        "minecraft:black_wool",
-        "minecraft:orange_carpet",
-        "minecraft:light_blue_carpet",
-        "minecraft:gray_carpet",
-        "minecraft:light_gray_carpet",
-        "minecraft:green_carpet"
-    ],
-    "minecraft:warped_stems": [
-        "minecraft:stripped_warped_hyphae",
-        "minecraft:warped_hyphae",
-        "minecraft:warped_stem",
-        "minecraft:stripped_warped_stem"
-    ],
-    "minecraft:wooden_slabs": [
-        "minecraft:birch_slab",
-        "minecraft:oak_slab",
-        "minecraft:spruce_slab",
-        "minecraft:bamboo_slab",
-        "minecraft:warped_slab",
-        "minecraft:mangrove_slab",
-        "minecraft:cherry_slab",
-        "minecraft:jungle_slab",
-        "minecraft:acacia_slab",
-        "minecraft:dark_oak_slab",
-        "minecraft:crimson_slab"
-    ],
-    "minecraft:wooden_tier": [
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:wooden_sword",
-        "minecraft:wooden_axe",
-        "minecraft:wooden_hoe"
-    ],
-    "minecraft:wool": [
-        "minecraft:green_wool",
-        "minecraft:orange_wool",
-        "minecraft:light_gray_wool",
-        "minecraft:purple_wool",
-        "minecraft:gray_wool",
-        "minecraft:light_blue_wool",
-        "minecraft:white_wool",
-        "minecraft:magenta_wool",
-        "minecraft:yellow_wool",
-        "minecraft:lime_wool",
-        "minecraft:pink_wool",
-        "minecraft:cyan_wool",
-        "minecraft:blue_wool",
-        "minecraft:brown_wool",
-        "minecraft:red_wool",
-        "minecraft:black_wool"
-    ]
-}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_20.json b/core/src/main/resources/bedrock/item_tags.1_21_20.json
deleted file mode 100644
index faad0ed0c..000000000
--- a/core/src/main/resources/bedrock/item_tags.1_21_20.json
+++ /dev/null
@@ -1,806 +0,0 @@
-{
-    "minecraft:arrow": [
-        "minecraft:arrow"
-    ],
-    "minecraft:banner": [
-        "minecraft:banner"
-    ],
-    "minecraft:boat": [
-        "minecraft:cherry_chest_boat",
-        "minecraft:oak_chest_boat",
-        "minecraft:mangrove_boat",
-        "minecraft:oak_boat",
-        "minecraft:birch_boat",
-        "minecraft:jungle_boat",
-        "minecraft:spruce_boat",
-        "minecraft:acacia_boat",
-        "minecraft:dark_oak_boat",
-        "minecraft:birch_chest_boat",
-        "minecraft:jungle_chest_boat",
-        "minecraft:spruce_chest_boat",
-        "minecraft:acacia_chest_boat",
-        "minecraft:dark_oak_chest_boat",
-        "minecraft:mangrove_chest_boat",
-        "minecraft:cherry_boat",
-        "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
-    ],
-    "minecraft:boats": [
-        "minecraft:cherry_chest_boat",
-        "minecraft:oak_chest_boat",
-        "minecraft:mangrove_boat",
-        "minecraft:oak_boat",
-        "minecraft:birch_boat",
-        "minecraft:jungle_boat",
-        "minecraft:spruce_boat",
-        "minecraft:acacia_boat",
-        "minecraft:dark_oak_boat",
-        "minecraft:birch_chest_boat",
-        "minecraft:jungle_chest_boat",
-        "minecraft:spruce_chest_boat",
-        "minecraft:acacia_chest_boat",
-        "minecraft:dark_oak_chest_boat",
-        "minecraft:mangrove_chest_boat",
-        "minecraft:cherry_boat",
-        "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
-    ],
-    "minecraft:bookshelf_books": [
-        "minecraft:written_book",
-        "minecraft:book",
-        "minecraft:writable_book",
-        "minecraft:enchanted_book"
-    ],
-    "minecraft:chainmail_tier": [
-        "minecraft:chainmail_helmet",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_boots"
-    ],
-    "minecraft:coals": [
-        "minecraft:coal",
-        "minecraft:charcoal"
-    ],
-    "minecraft:crimson_stems": [
-        "minecraft:stripped_crimson_stem",
-        "minecraft:crimson_hyphae",
-        "minecraft:crimson_stem",
-        "minecraft:stripped_crimson_hyphae"
-    ],
-    "minecraft:decorated_pot_sherds": [
-        "minecraft:angler_pottery_sherd",
-        "minecraft:skull_pottery_sherd",
-        "minecraft:prize_pottery_sherd",
-        "minecraft:mourner_pottery_sherd",
-        "minecraft:arms_up_pottery_sherd",
-        "minecraft:burn_pottery_sherd",
-        "minecraft:snort_pottery_sherd",
-        "minecraft:brick",
-        "minecraft:heartbreak_pottery_sherd",
-        "minecraft:miner_pottery_sherd",
-        "minecraft:brewer_pottery_sherd",
-        "minecraft:plenty_pottery_sherd",
-        "minecraft:scrape_pottery_sherd",
-        "minecraft:howl_pottery_sherd",
-        "minecraft:explorer_pottery_sherd",
-        "minecraft:archer_pottery_sherd",
-        "minecraft:blade_pottery_sherd",
-        "minecraft:danger_pottery_sherd",
-        "minecraft:flow_pottery_sherd",
-        "minecraft:friend_pottery_sherd",
-        "minecraft:guster_pottery_sherd",
-        "minecraft:heart_pottery_sherd",
-        "minecraft:sheaf_pottery_sherd",
-        "minecraft:shelter_pottery_sherd"
-    ],
-    "minecraft:diamond_tier": [
-        "minecraft:diamond_sword",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:mace",
-        "minecraft:diamond_hoe",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots"
-    ],
-    "minecraft:digger": [
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:iron_axe",
-        "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:wooden_axe",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:door": [
-        "minecraft:warped_door",
-        "minecraft:waxed_weathered_copper_door",
-        "minecraft:wooden_door",
-        "minecraft:iron_door",
-        "minecraft:mangrove_door",
-        "minecraft:exposed_copper_door",
-        "minecraft:bamboo_door",
-        "minecraft:weathered_copper_door",
-        "minecraft:jungle_door",
-        "minecraft:spruce_door",
-        "minecraft:birch_door",
-        "minecraft:acacia_door",
-        "minecraft:dark_oak_door",
-        "minecraft:crimson_door",
-        "minecraft:cherry_door",
-        "minecraft:copper_door",
-        "minecraft:oxidized_copper_door",
-        "minecraft:waxed_copper_door",
-        "minecraft:waxed_exposed_copper_door",
-        "minecraft:waxed_oxidized_copper_door"
-    ],
-    "minecraft:golden_tier": [
-        "minecraft:golden_sword",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:golden_hoe",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots"
-    ],
-    "minecraft:hanging_actor": [
-        "minecraft:painting"
-    ],
-    "minecraft:hanging_sign": [
-        "minecraft:mangrove_hanging_sign",
-        "minecraft:bamboo_hanging_sign",
-        "minecraft:spruce_hanging_sign",
-        "minecraft:birch_hanging_sign",
-        "minecraft:cherry_hanging_sign",
-        "minecraft:oak_hanging_sign",
-        "minecraft:jungle_hanging_sign",
-        "minecraft:acacia_hanging_sign",
-        "minecraft:dark_oak_hanging_sign",
-        "minecraft:crimson_hanging_sign",
-        "minecraft:warped_hanging_sign"
-    ],
-    "minecraft:horse_armor": [
-        "minecraft:golden_horse_armor",
-        "minecraft:leather_horse_armor",
-        "minecraft:iron_horse_armor",
-        "minecraft:diamond_horse_armor"
-    ],
-    "minecraft:iron_tier": [
-        "minecraft:iron_sword",
-        "minecraft:iron_pickaxe",
-        "minecraft:iron_axe",
-        "minecraft:iron_shovel",
-        "minecraft:iron_hoe",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots"
-    ],
-    "minecraft:is_armor": [
-        "minecraft:netherite_boots",
-        "minecraft:chainmail_helmet",
-        "minecraft:elytra",
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_boots",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots",
-        "minecraft:turtle_helmet",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_helmet"
-    ],
-    "minecraft:is_axe": [
-        "minecraft:iron_axe",
-        "minecraft:wooden_axe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_axe",
-        "minecraft:golden_axe",
-        "minecraft:netherite_axe"
-    ],
-    "minecraft:is_cooked": [
-        "minecraft:cooked_cod",
-        "minecraft:cooked_porkchop",
-        "minecraft:cooked_rabbit",
-        "minecraft:cooked_salmon",
-        "minecraft:cooked_beef",
-        "minecraft:cooked_chicken",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_mutton"
-    ],
-    "minecraft:is_fish": [
-        "minecraft:cooked_cod",
-        "minecraft:cod",
-        "minecraft:salmon",
-        "minecraft:tropical_fish",
-        "minecraft:pufferfish",
-        "minecraft:cooked_salmon"
-    ],
-    "minecraft:is_food": [
-        "minecraft:beetroot",
-        "minecraft:apple",
-        "minecraft:carrot",
-        "minecraft:chicken",
-        "minecraft:potato",
-        "minecraft:enchanted_golden_apple",
-        "minecraft:sweet_berries",
-        "minecraft:golden_carrot",
-        "minecraft:golden_apple",
-        "minecraft:rabbit",
-        "minecraft:cooked_porkchop",
-        "minecraft:mushroom_stew",
-        "minecraft:bread",
-        "minecraft:porkchop",
-        "minecraft:cookie",
-        "minecraft:cooked_rabbit",
-        "minecraft:beef",
-        "minecraft:dried_kelp",
-        "minecraft:beetroot_soup",
-        "minecraft:melon_slice",
-        "minecraft:cooked_beef",
-        "minecraft:rotten_flesh",
-        "minecraft:cooked_chicken",
-        "minecraft:baked_potato",
-        "minecraft:pumpkin_pie",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_mutton",
-        "minecraft:mutton"
-    ],
-    "minecraft:is_hoe": [
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:is_meat": [
-        "minecraft:chicken",
-        "minecraft:rabbit",
-        "minecraft:cooked_porkchop",
-        "minecraft:porkchop",
-        "minecraft:cooked_rabbit",
-        "minecraft:beef",
-        "minecraft:cooked_beef",
-        "minecraft:rotten_flesh",
-        "minecraft:cooked_chicken",
-        "minecraft:rabbit_stew",
-        "minecraft:cooked_mutton",
-        "minecraft:mutton"
-    ],
-    "minecraft:is_minecart": [
-        "minecraft:command_block_minecart",
-        "minecraft:minecart",
-        "minecraft:chest_minecart",
-        "minecraft:tnt_minecart",
-        "minecraft:hopper_minecart"
-    ],
-    "minecraft:is_pickaxe": [
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:stone_pickaxe",
-        "minecraft:diamond_pickaxe",
-        "minecraft:golden_pickaxe",
-        "minecraft:netherite_pickaxe"
-    ],
-    "minecraft:is_shovel": [
-        "minecraft:wooden_shovel",
-        "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:diamond_shovel",
-        "minecraft:golden_shovel",
-        "minecraft:netherite_shovel"
-    ],
-    "minecraft:is_sword": [
-        "minecraft:iron_sword",
-        "minecraft:stone_sword",
-        "minecraft:wooden_sword",
-        "minecraft:diamond_sword",
-        "minecraft:mace",
-        "minecraft:golden_sword",
-        "minecraft:netherite_sword"
-    ],
-    "minecraft:is_tool": [
-        "minecraft:iron_sword",
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:stone_sword",
-        "minecraft:iron_axe",
-        "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
-        "minecraft:wooden_sword",
-        "minecraft:wooden_axe",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:diamond_sword",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:mace",
-        "minecraft:golden_sword",
-        "minecraft:golden_shovel",
-        "minecraft:golden_pickaxe",
-        "minecraft:golden_axe",
-        "minecraft:wooden_hoe",
-        "minecraft:stone_hoe",
-        "minecraft:iron_hoe",
-        "minecraft:diamond_hoe",
-        "minecraft:golden_hoe",
-        "minecraft:netherite_sword",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe"
-    ],
-    "minecraft:is_trident": [
-        "minecraft:trident"
-    ],
-    "minecraft:leather_tier": [
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots"
-    ],
-    "minecraft:lectern_books": [
-        "minecraft:written_book",
-        "minecraft:writable_book"
-    ],
-    "minecraft:logs": [
-        "minecraft:mangrove_wood",
-        "minecraft:spruce_wood",
-        "minecraft:stripped_cherry_wood",
-        "minecraft:stripped_crimson_stem",
-        "minecraft:stripped_spruce_wood",
-        "minecraft:spruce_log",
-        "minecraft:acacia_wood",
-        "minecraft:stripped_acacia_wood",
-        "minecraft:stripped_warped_hyphae",
-        "minecraft:acacia_log",
-        "minecraft:stripped_warped_stem",
-        "minecraft:oak_log",
-        "minecraft:birch_log",
-        "minecraft:jungle_log",
-        "minecraft:dark_oak_log",
-        "minecraft:jungle_wood",
-        "minecraft:stripped_jungle_wood",
-        "minecraft:oak_wood",
-        "minecraft:birch_wood",
-        "minecraft:dark_oak_wood",
-        "minecraft:stripped_oak_wood",
-        "minecraft:stripped_birch_wood",
-        "minecraft:stripped_dark_oak_wood",
-        "minecraft:stripped_oak_log",
-        "minecraft:stripped_dark_oak_log",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_jungle_log",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:crimson_hyphae",
-        "minecraft:stripped_cherry_log",
-        "minecraft:stripped_birch_log",
-        "minecraft:stripped_acacia_log",
-        "minecraft:crimson_stem",
-        "minecraft:warped_hyphae",
-        "minecraft:stripped_spruce_log",
-        "minecraft:warped_stem",
-        "minecraft:stripped_crimson_hyphae",
-        "minecraft:cherry_wood",
-        "minecraft:cherry_log",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:logs_that_burn": [
-        "minecraft:mangrove_wood",
-        "minecraft:spruce_wood",
-        "minecraft:stripped_cherry_wood",
-        "minecraft:stripped_spruce_wood",
-        "minecraft:spruce_log",
-        "minecraft:acacia_wood",
-        "minecraft:stripped_acacia_wood",
-        "minecraft:acacia_log",
-        "minecraft:oak_log",
-        "minecraft:birch_log",
-        "minecraft:jungle_log",
-        "minecraft:dark_oak_log",
-        "minecraft:jungle_wood",
-        "minecraft:stripped_jungle_wood",
-        "minecraft:oak_wood",
-        "minecraft:birch_wood",
-        "minecraft:dark_oak_wood",
-        "minecraft:stripped_oak_wood",
-        "minecraft:stripped_birch_wood",
-        "minecraft:stripped_dark_oak_wood",
-        "minecraft:stripped_oak_log",
-        "minecraft:stripped_dark_oak_log",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_jungle_log",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:stripped_cherry_log",
-        "minecraft:stripped_birch_log",
-        "minecraft:stripped_acacia_log",
-        "minecraft:stripped_spruce_log",
-        "minecraft:cherry_wood",
-        "minecraft:cherry_log",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:mangrove_logs": [
-        "minecraft:mangrove_wood",
-        "minecraft:mangrove_log",
-        "minecraft:stripped_mangrove_wood",
-        "minecraft:stripped_mangrove_log"
-    ],
-    "minecraft:music_disc": [
-        "minecraft:music_disc_ward",
-        "minecraft:music_disc_strad",
-        "minecraft:music_disc_chirp",
-        "minecraft:music_disc_creator_music_box",
-        "minecraft:music_disc_mall",
-        "minecraft:music_disc_pigstep",
-        "minecraft:music_disc_wait",
-        "minecraft:music_disc_11",
-        "minecraft:music_disc_stal",
-        "minecraft:music_disc_13",
-        "minecraft:music_disc_cat",
-        "minecraft:music_disc_blocks",
-        "minecraft:music_disc_far",
-        "minecraft:music_disc_mellohi",
-        "minecraft:music_disc_otherside",
-        "minecraft:music_disc_5",
-        "minecraft:music_disc_relic",
-        "minecraft:music_disc_creator",
-        "minecraft:music_disc_precipice"
-    ],
-    "minecraft:netherite_tier": [
-        "minecraft:netherite_boots",
-        "minecraft:netherite_sword",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_pickaxe",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_shovel",
-        "minecraft:netherite_axe",
-        "minecraft:netherite_hoe",
-        "minecraft:netherite_helmet"
-    ],
-    "minecraft:planks": [
-        "minecraft:spruce_planks",
-        "minecraft:oak_planks",
-        "minecraft:mangrove_planks",
-        "minecraft:dark_oak_planks",
-        "minecraft:birch_planks",
-        "minecraft:jungle_planks",
-        "minecraft:acacia_planks",
-        "minecraft:bamboo_planks",
-        "minecraft:warped_planks",
-        "minecraft:crimson_planks",
-        "minecraft:cherry_planks"
-    ],
-    "minecraft:sand": [
-        "minecraft:sand",
-        "minecraft:red_sand"
-    ],
-    "minecraft:sign": [
-        "minecraft:bamboo_sign",
-        "minecraft:mangrove_hanging_sign",
-        "minecraft:cherry_sign",
-        "minecraft:oak_sign",
-        "minecraft:bamboo_hanging_sign",
-        "minecraft:warped_sign",
-        "minecraft:spruce_sign",
-        "minecraft:spruce_hanging_sign",
-        "minecraft:acacia_sign",
-        "minecraft:birch_hanging_sign",
-        "minecraft:birch_sign",
-        "minecraft:jungle_sign",
-        "minecraft:dark_oak_sign",
-        "minecraft:mangrove_sign",
-        "minecraft:crimson_sign",
-        "minecraft:cherry_hanging_sign",
-        "minecraft:oak_hanging_sign",
-        "minecraft:jungle_hanging_sign",
-        "minecraft:acacia_hanging_sign",
-        "minecraft:dark_oak_hanging_sign",
-        "minecraft:crimson_hanging_sign",
-        "minecraft:warped_hanging_sign"
-    ],
-    "minecraft:soul_fire_base_blocks": [
-        "minecraft:soul_soil",
-        "minecraft:soul_sand"
-    ],
-    "minecraft:spawn_egg": [
-        "minecraft:enderman_spawn_egg",
-        "minecraft:strider_spawn_egg",
-        "minecraft:ravager_spawn_egg",
-        "minecraft:slime_spawn_egg",
-        "minecraft:glow_squid_spawn_egg",
-        "minecraft:pillager_spawn_egg",
-        "minecraft:blaze_spawn_egg",
-        "minecraft:witch_spawn_egg",
-        "minecraft:horse_spawn_egg",
-        "minecraft:polar_bear_spawn_egg",
-        "minecraft:zoglin_spawn_egg",
-        "minecraft:stray_spawn_egg",
-        "minecraft:zombie_pigman_spawn_egg",
-        "minecraft:snow_golem_spawn_egg",
-        "minecraft:panda_spawn_egg",
-        "minecraft:axolotl_spawn_egg",
-        "minecraft:agent_spawn_egg",
-        "minecraft:shulker_spawn_egg",
-        "minecraft:vindicator_spawn_egg",
-        "minecraft:evoker_spawn_egg",
-        "minecraft:parrot_spawn_egg",
-        "minecraft:wolf_spawn_egg",
-        "minecraft:elder_guardian_spawn_egg",
-        "minecraft:silverfish_spawn_egg",
-        "minecraft:tadpole_spawn_egg",
-        "minecraft:cow_spawn_egg",
-        "minecraft:bogged_spawn_egg",
-        "minecraft:ocelot_spawn_egg",
-        "minecraft:bee_spawn_egg",
-        "minecraft:piglin_brute_spawn_egg",
-        "minecraft:rabbit_spawn_egg",
-        "minecraft:camel_spawn_egg",
-        "minecraft:creeper_spawn_egg",
-        "minecraft:drowned_spawn_egg",
-        "minecraft:chicken_spawn_egg",
-        "minecraft:pig_spawn_egg",
-        "minecraft:sheep_spawn_egg",
-        "minecraft:mooshroom_spawn_egg",
-        "minecraft:skeleton_spawn_egg",
-        "minecraft:spider_spawn_egg",
-        "minecraft:zombie_spawn_egg",
-        "minecraft:villager_spawn_egg",
-        "minecraft:squid_spawn_egg",
-        "minecraft:bat_spawn_egg",
-        "minecraft:ghast_spawn_egg",
-        "minecraft:magma_cube_spawn_egg",
-        "minecraft:cave_spider_spawn_egg",
-        "minecraft:endermite_spawn_egg",
-        "minecraft:guardian_spawn_egg",
-        "minecraft:husk_spawn_egg",
-        "minecraft:piglin_spawn_egg",
-        "minecraft:wither_skeleton_spawn_egg",
-        "minecraft:donkey_spawn_egg",
-        "minecraft:mule_spawn_egg",
-        "minecraft:skeleton_horse_spawn_egg",
-        "minecraft:zombie_horse_spawn_egg",
-        "minecraft:npc_spawn_egg",
-        "minecraft:breeze_spawn_egg",
-        "minecraft:llama_spawn_egg",
-        "minecraft:vex_spawn_egg",
-        "minecraft:warden_spawn_egg",
-        "minecraft:zombie_villager_spawn_egg",
-        "minecraft:tropical_fish_spawn_egg",
-        "minecraft:cod_spawn_egg",
-        "minecraft:pufferfish_spawn_egg",
-        "minecraft:salmon_spawn_egg",
-        "minecraft:dolphin_spawn_egg",
-        "minecraft:turtle_spawn_egg",
-        "minecraft:phantom_spawn_egg",
-        "minecraft:cat_spawn_egg",
-        "minecraft:fox_spawn_egg",
-        "minecraft:wandering_trader_spawn_egg",
-        "minecraft:hoglin_spawn_egg",
-        "minecraft:sniffer_spawn_egg",
-        "minecraft:goat_spawn_egg",
-        "minecraft:iron_golem_spawn_egg",
-        "minecraft:ender_dragon_spawn_egg",
-        "minecraft:wither_spawn_egg",
-        "minecraft:frog_spawn_egg",
-        "minecraft:allay_spawn_egg",
-        "minecraft:trader_llama_spawn_egg",
-        "minecraft:armadillo_spawn_egg",
-        "minecraft:spawn_egg"
-    ],
-    "minecraft:stone_bricks": [
-        "minecraft:mossy_stone_bricks",
-        "minecraft:stone_bricks",
-        "minecraft:cracked_stone_bricks",
-        "minecraft:chiseled_stone_bricks"
-    ],
-    "minecraft:stone_crafting_materials": [
-        "minecraft:cobblestone",
-        "minecraft:cobbled_deepslate",
-        "minecraft:blackstone"
-    ],
-    "minecraft:stone_tier": [
-        "minecraft:stone_sword",
-        "minecraft:stone_shovel",
-        "minecraft:stone_pickaxe",
-        "minecraft:stone_axe",
-        "minecraft:stone_hoe"
-    ],
-    "minecraft:stone_tool_materials": [
-        "minecraft:cobblestone",
-        "minecraft:cobbled_deepslate",
-        "minecraft:blackstone"
-    ],
-    "minecraft:transform_materials": [
-        "minecraft:netherite_ingot"
-    ],
-    "minecraft:transform_templates": [
-        "minecraft:netherite_upgrade_smithing_template"
-    ],
-    "minecraft:transformable_items": [
-        "minecraft:diamond_sword",
-        "minecraft:diamond_shovel",
-        "minecraft:diamond_pickaxe",
-        "minecraft:diamond_axe",
-        "minecraft:diamond_hoe",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_boots"
-    ],
-    "minecraft:trim_materials": [
-        "minecraft:gold_ingot",
-        "minecraft:iron_ingot",
-        "minecraft:diamond",
-        "minecraft:redstone",
-        "minecraft:netherite_ingot",
-        "minecraft:lapis_lazuli",
-        "minecraft:quartz",
-        "minecraft:copper_ingot",
-        "minecraft:emerald",
-        "minecraft:amethyst_shard"
-    ],
-    "minecraft:trim_templates": [
-        "minecraft:vex_armor_trim_smithing_template",
-        "minecraft:wild_armor_trim_smithing_template",
-        "minecraft:flow_armor_trim_smithing_template",
-        "minecraft:raiser_armor_trim_smithing_template",
-        "minecraft:silence_armor_trim_smithing_template",
-        "minecraft:coast_armor_trim_smithing_template",
-        "minecraft:snout_armor_trim_smithing_template",
-        "minecraft:dune_armor_trim_smithing_template",
-        "minecraft:rib_armor_trim_smithing_template",
-        "minecraft:host_armor_trim_smithing_template",
-        "minecraft:bolt_armor_trim_smithing_template",
-        "minecraft:shaper_armor_trim_smithing_template",
-        "minecraft:eye_armor_trim_smithing_template",
-        "minecraft:spire_armor_trim_smithing_template",
-        "minecraft:sentry_armor_trim_smithing_template",
-        "minecraft:ward_armor_trim_smithing_template",
-        "minecraft:tide_armor_trim_smithing_template",
-        "minecraft:wayfinder_armor_trim_smithing_template"
-    ],
-    "minecraft:trimmable_armors": [
-        "minecraft:netherite_boots",
-        "minecraft:chainmail_helmet",
-        "minecraft:leather_helmet",
-        "minecraft:leather_chestplate",
-        "minecraft:leather_leggings",
-        "minecraft:leather_boots",
-        "minecraft:chainmail_chestplate",
-        "minecraft:chainmail_leggings",
-        "minecraft:chainmail_boots",
-        "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
-        "minecraft:iron_leggings",
-        "minecraft:iron_boots",
-        "minecraft:diamond_helmet",
-        "minecraft:diamond_chestplate",
-        "minecraft:diamond_leggings",
-        "minecraft:diamond_boots",
-        "minecraft:golden_helmet",
-        "minecraft:golden_chestplate",
-        "minecraft:golden_leggings",
-        "minecraft:golden_boots",
-        "minecraft:turtle_helmet",
-        "minecraft:netherite_chestplate",
-        "minecraft:netherite_leggings",
-        "minecraft:netherite_helmet"
-    ],
-    "minecraft:vibration_damper": [
-        "minecraft:black_carpet",
-        "minecraft:blue_carpet",
-        "minecraft:pink_carpet",
-        "minecraft:lime_carpet",
-        "minecraft:green_wool",
-        "minecraft:cyan_carpet",
-        "minecraft:orange_wool",
-        "minecraft:white_carpet",
-        "minecraft:purple_carpet",
-        "minecraft:yellow_carpet",
-        "minecraft:light_gray_wool",
-        "minecraft:magenta_carpet",
-        "minecraft:purple_wool",
-        "minecraft:gray_wool",
-        "minecraft:red_carpet",
-        "minecraft:brown_carpet",
-        "minecraft:light_blue_wool",
-        "minecraft:white_wool",
-        "minecraft:magenta_wool",
-        "minecraft:yellow_wool",
-        "minecraft:lime_wool",
-        "minecraft:pink_wool",
-        "minecraft:cyan_wool",
-        "minecraft:blue_wool",
-        "minecraft:brown_wool",
-        "minecraft:red_wool",
-        "minecraft:black_wool",
-        "minecraft:orange_carpet",
-        "minecraft:light_blue_carpet",
-        "minecraft:gray_carpet",
-        "minecraft:light_gray_carpet",
-        "minecraft:green_carpet"
-    ],
-    "minecraft:warped_stems": [
-        "minecraft:stripped_warped_hyphae",
-        "minecraft:stripped_warped_stem",
-        "minecraft:warped_hyphae",
-        "minecraft:warped_stem"
-    ],
-    "minecraft:wooden_slabs": [
-        "minecraft:birch_slab",
-        "minecraft:oak_slab",
-        "minecraft:spruce_slab",
-        "minecraft:bamboo_slab",
-        "minecraft:warped_slab",
-        "minecraft:mangrove_slab",
-        "minecraft:cherry_slab",
-        "minecraft:jungle_slab",
-        "minecraft:acacia_slab",
-        "minecraft:dark_oak_slab",
-        "minecraft:crimson_slab"
-    ],
-    "minecraft:wooden_tier": [
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:wooden_sword",
-        "minecraft:wooden_axe",
-        "minecraft:wooden_hoe"
-    ],
-    "minecraft:wool": [
-        "minecraft:green_wool",
-        "minecraft:orange_wool",
-        "minecraft:light_gray_wool",
-        "minecraft:purple_wool",
-        "minecraft:gray_wool",
-        "minecraft:light_blue_wool",
-        "minecraft:white_wool",
-        "minecraft:magenta_wool",
-        "minecraft:yellow_wool",
-        "minecraft:lime_wool",
-        "minecraft:pink_wool",
-        "minecraft:cyan_wool",
-        "minecraft:blue_wool",
-        "minecraft:brown_wool",
-        "minecraft:red_wool",
-        "minecraft:black_wool"
-    ]
-}
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/item_tags.1_21_30.json b/core/src/main/resources/bedrock/item_tags.1_21_50.json
similarity index 99%
rename from core/src/main/resources/bedrock/item_tags.1_21_30.json
rename to core/src/main/resources/bedrock/item_tags.1_21_50.json
index cff3f2556..d9e63ed26 100644
--- a/core/src/main/resources/bedrock/item_tags.1_21_30.json
+++ b/core/src/main/resources/bedrock/item_tags.1_21_50.json
@@ -68,10 +68,10 @@
         "minecraft:stripped_crimson_hyphae"
     ],
     "minecraft:decorated_pot_sherds": [
-        "minecraft:angler_pottery_sherd",
         "minecraft:skull_pottery_sherd",
-        "minecraft:prize_pottery_sherd",
         "minecraft:mourner_pottery_sherd",
+        "minecraft:angler_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
         "minecraft:arms_up_pottery_sherd",
         "minecraft:burn_pottery_sherd",
         "minecraft:snort_pottery_sherd",
@@ -106,13 +106,13 @@
         "minecraft:diamond_boots"
     ],
     "minecraft:digger": [
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:iron_axe",
         "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:wooden_shovel",
         "minecraft:wooden_axe",
+        "minecraft:stone_shovel",
         "minecraft:stone_pickaxe",
         "minecraft:stone_axe",
         "minecraft:diamond_shovel",
@@ -132,15 +132,15 @@
         "minecraft:netherite_hoe"
     ],
     "minecraft:door": [
+        "minecraft:weathered_copper_door",
         "minecraft:warped_door",
-        "minecraft:waxed_weathered_copper_door",
         "minecraft:wooden_door",
+        "minecraft:jungle_door",
+        "minecraft:waxed_weathered_copper_door",
         "minecraft:iron_door",
         "minecraft:mangrove_door",
         "minecraft:exposed_copper_door",
         "minecraft:bamboo_door",
-        "minecraft:weathered_copper_door",
-        "minecraft:jungle_door",
         "minecraft:spruce_door",
         "minecraft:birch_door",
         "minecraft:acacia_door",
@@ -181,23 +181,24 @@
         "minecraft:warped_hanging_sign"
     ],
     "minecraft:horse_armor": [
+        "minecraft:iron_horse_armor",
         "minecraft:golden_horse_armor",
         "minecraft:leather_horse_armor",
-        "minecraft:iron_horse_armor",
         "minecraft:diamond_horse_armor"
     ],
     "minecraft:iron_tier": [
+        "minecraft:iron_chestplate",
+        "minecraft:iron_shovel",
         "minecraft:iron_sword",
         "minecraft:iron_pickaxe",
         "minecraft:iron_axe",
-        "minecraft:iron_shovel",
         "minecraft:iron_hoe",
         "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
         "minecraft:iron_leggings",
         "minecraft:iron_boots"
     ],
     "minecraft:is_armor": [
+        "minecraft:iron_chestplate",
         "minecraft:netherite_boots",
         "minecraft:chainmail_helmet",
         "minecraft:elytra",
@@ -209,7 +210,6 @@
         "minecraft:chainmail_leggings",
         "minecraft:chainmail_boots",
         "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
         "minecraft:iron_leggings",
         "minecraft:iron_boots",
         "minecraft:diamond_helmet",
@@ -236,8 +236,8 @@
     "minecraft:is_cooked": [
         "minecraft:cooked_cod",
         "minecraft:cooked_porkchop",
-        "minecraft:cooked_rabbit",
         "minecraft:cooked_salmon",
+        "minecraft:cooked_rabbit",
         "minecraft:cooked_beef",
         "minecraft:cooked_chicken",
         "minecraft:rabbit_stew",
@@ -245,25 +245,25 @@
     ],
     "minecraft:is_fish": [
         "minecraft:cooked_cod",
+        "minecraft:cooked_salmon",
         "minecraft:cod",
         "minecraft:salmon",
         "minecraft:tropical_fish",
-        "minecraft:pufferfish",
-        "minecraft:cooked_salmon"
+        "minecraft:pufferfish"
     ],
     "minecraft:is_food": [
-        "minecraft:golden_carrot",
-        "minecraft:carrot",
-        "minecraft:chicken",
-        "minecraft:apple",
-        "minecraft:beetroot",
-        "minecraft:potato",
-        "minecraft:enchanted_golden_apple",
-        "minecraft:sweet_berries",
-        "minecraft:golden_apple",
         "minecraft:rabbit",
         "minecraft:cooked_porkchop",
         "minecraft:mushroom_stew",
+        "minecraft:potato",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:golden_carrot",
+        "minecraft:carrot",
+        "minecraft:chicken",
+        "minecraft:beetroot",
+        "minecraft:sweet_berries",
+        "minecraft:apple",
+        "minecraft:golden_apple",
         "minecraft:bread",
         "minecraft:porkchop",
         "minecraft:cookie",
@@ -290,9 +290,9 @@
         "minecraft:netherite_hoe"
     ],
     "minecraft:is_meat": [
-        "minecraft:chicken",
         "minecraft:rabbit",
         "minecraft:cooked_porkchop",
+        "minecraft:chicken",
         "minecraft:porkchop",
         "minecraft:cooked_rabbit",
         "minecraft:beef",
@@ -311,41 +311,42 @@
         "minecraft:hopper_minecart"
     ],
     "minecraft:is_pickaxe": [
-        "minecraft:iron_pickaxe",
         "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
         "minecraft:stone_pickaxe",
         "minecraft:diamond_pickaxe",
         "minecraft:golden_pickaxe",
         "minecraft:netherite_pickaxe"
     ],
     "minecraft:is_shovel": [
-        "minecraft:wooden_shovel",
         "minecraft:iron_shovel",
+        "minecraft:wooden_shovel",
         "minecraft:stone_shovel",
         "minecraft:diamond_shovel",
         "minecraft:golden_shovel",
         "minecraft:netherite_shovel"
     ],
     "minecraft:is_sword": [
+        "minecraft:netherite_sword",
         "minecraft:iron_sword",
-        "minecraft:stone_sword",
         "minecraft:wooden_sword",
+        "minecraft:stone_sword",
         "minecraft:diamond_sword",
         "minecraft:mace",
-        "minecraft:golden_sword",
-        "minecraft:netherite_sword"
+        "minecraft:golden_sword"
     ],
     "minecraft:is_tool": [
-        "minecraft:iron_sword",
-        "minecraft:iron_pickaxe",
-        "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
-        "minecraft:stone_sword",
-        "minecraft:iron_axe",
+        "minecraft:netherite_sword",
         "minecraft:iron_shovel",
-        "minecraft:stone_shovel",
+        "minecraft:iron_sword",
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
         "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
         "minecraft:wooden_axe",
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
         "minecraft:stone_pickaxe",
         "minecraft:stone_axe",
         "minecraft:diamond_sword",
@@ -362,7 +363,6 @@
         "minecraft:iron_hoe",
         "minecraft:diamond_hoe",
         "minecraft:golden_hoe",
-        "minecraft:netherite_sword",
         "minecraft:netherite_pickaxe",
         "minecraft:netherite_shovel",
         "minecraft:netherite_axe",
@@ -465,16 +465,16 @@
     ],
     "minecraft:music_disc": [
         "minecraft:music_disc_ward",
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_cat",
         "minecraft:music_disc_strad",
         "minecraft:music_disc_chirp",
-        "minecraft:music_disc_creator_music_box",
         "minecraft:music_disc_mall",
+        "minecraft:music_disc_creator_music_box",
         "minecraft:music_disc_pigstep",
-        "minecraft:music_disc_wait",
         "minecraft:music_disc_11",
-        "minecraft:music_disc_stal",
         "minecraft:music_disc_13",
-        "minecraft:music_disc_cat",
         "minecraft:music_disc_blocks",
         "minecraft:music_disc_far",
         "minecraft:music_disc_mellohi",
@@ -485,8 +485,8 @@
         "minecraft:music_disc_precipice"
     ],
     "minecraft:netherite_tier": [
-        "minecraft:netherite_boots",
         "minecraft:netherite_sword",
+        "minecraft:netherite_boots",
         "minecraft:netherite_chestplate",
         "minecraft:netherite_pickaxe",
         "minecraft:netherite_leggings",
@@ -513,6 +513,7 @@
         "minecraft:red_sand"
     ],
     "minecraft:sign": [
+        "minecraft:jungle_sign",
         "minecraft:bamboo_sign",
         "minecraft:mangrove_hanging_sign",
         "minecraft:cherry_sign",
@@ -524,7 +525,6 @@
         "minecraft:acacia_sign",
         "minecraft:birch_hanging_sign",
         "minecraft:birch_sign",
-        "minecraft:jungle_sign",
         "minecraft:dark_oak_sign",
         "minecraft:mangrove_sign",
         "minecraft:crimson_sign",
@@ -542,16 +542,19 @@
     ],
     "minecraft:spawn_egg": [
         "minecraft:enderman_spawn_egg",
-        "minecraft:strider_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
         "minecraft:ravager_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:strider_spawn_egg",
         "minecraft:slime_spawn_egg",
         "minecraft:glow_squid_spawn_egg",
-        "minecraft:pillager_spawn_egg",
         "minecraft:blaze_spawn_egg",
         "minecraft:witch_spawn_egg",
         "minecraft:horse_spawn_egg",
         "minecraft:polar_bear_spawn_egg",
-        "minecraft:zoglin_spawn_egg",
+        "minecraft:pillager_spawn_egg",
         "minecraft:stray_spawn_egg",
         "minecraft:zombie_pigman_spawn_egg",
         "minecraft:snow_golem_spawn_egg",
@@ -588,7 +591,6 @@
         "minecraft:ghast_spawn_egg",
         "minecraft:magma_cube_spawn_egg",
         "minecraft:cave_spider_spawn_egg",
-        "minecraft:endermite_spawn_egg",
         "minecraft:guardian_spawn_egg",
         "minecraft:husk_spawn_egg",
         "minecraft:piglin_spawn_egg",
@@ -603,9 +605,7 @@
         "minecraft:vex_spawn_egg",
         "minecraft:warden_spawn_egg",
         "minecraft:zombie_villager_spawn_egg",
-        "minecraft:tropical_fish_spawn_egg",
         "minecraft:cod_spawn_egg",
-        "minecraft:pufferfish_spawn_egg",
         "minecraft:salmon_spawn_egg",
         "minecraft:dolphin_spawn_egg",
         "minecraft:turtle_spawn_egg",
@@ -667,9 +667,9 @@
         "minecraft:golden_boots"
     ],
     "minecraft:trim_materials": [
-        "minecraft:gold_ingot",
-        "minecraft:iron_ingot",
         "minecraft:diamond",
+        "minecraft:iron_ingot",
+        "minecraft:gold_ingot",
         "minecraft:redstone",
         "minecraft:netherite_ingot",
         "minecraft:lapis_lazuli",
@@ -679,26 +679,27 @@
         "minecraft:amethyst_shard"
     ],
     "minecraft:trim_templates": [
+        "minecraft:coast_armor_trim_smithing_template",
         "minecraft:vex_armor_trim_smithing_template",
         "minecraft:wild_armor_trim_smithing_template",
         "minecraft:flow_armor_trim_smithing_template",
-        "minecraft:raiser_armor_trim_smithing_template",
         "minecraft:silence_armor_trim_smithing_template",
-        "minecraft:coast_armor_trim_smithing_template",
         "minecraft:snout_armor_trim_smithing_template",
         "minecraft:dune_armor_trim_smithing_template",
         "minecraft:rib_armor_trim_smithing_template",
         "minecraft:host_armor_trim_smithing_template",
-        "minecraft:bolt_armor_trim_smithing_template",
-        "minecraft:shaper_armor_trim_smithing_template",
         "minecraft:eye_armor_trim_smithing_template",
         "minecraft:spire_armor_trim_smithing_template",
         "minecraft:sentry_armor_trim_smithing_template",
         "minecraft:ward_armor_trim_smithing_template",
         "minecraft:tide_armor_trim_smithing_template",
-        "minecraft:wayfinder_armor_trim_smithing_template"
+        "minecraft:wayfinder_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:bolt_armor_trim_smithing_template"
     ],
     "minecraft:trimmable_armors": [
+        "minecraft:iron_chestplate",
         "minecraft:netherite_boots",
         "minecraft:chainmail_helmet",
         "minecraft:leather_helmet",
@@ -709,7 +710,6 @@
         "minecraft:chainmail_leggings",
         "minecraft:chainmail_boots",
         "minecraft:iron_helmet",
-        "minecraft:iron_chestplate",
         "minecraft:iron_leggings",
         "minecraft:iron_boots",
         "minecraft:diamond_helmet",
@@ -727,9 +727,9 @@
     ],
     "minecraft:vibration_damper": [
         "minecraft:black_carpet",
-        "minecraft:blue_carpet",
         "minecraft:pink_carpet",
         "minecraft:lime_carpet",
+        "minecraft:blue_carpet",
         "minecraft:green_wool",
         "minecraft:cyan_carpet",
         "minecraft:orange_wool",
@@ -780,8 +780,8 @@
     ],
     "minecraft:wooden_tier": [
         "minecraft:wooden_pickaxe",
-        "minecraft:wooden_shovel",
         "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
         "minecraft:wooden_axe",
         "minecraft:wooden_hoe"
     ],
@@ -803,4 +803,4 @@
         "minecraft:red_wool",
         "minecraft:black_wool"
     ]
-}
\ No newline at end of file
+}
diff --git a/core/src/main/resources/bedrock/runtime_item_states.1_20_80.json b/core/src/main/resources/bedrock/runtime_item_states.1_20_80.json
deleted file mode 100644
index 4db89f62b..000000000
--- a/core/src/main/resources/bedrock/runtime_item_states.1_20_80.json
+++ /dev/null
@@ -1,6274 +0,0 @@
-[
-    {
-        "name": "minecraft:acacia_boat",
-        "id": 384
-    },
-    {
-        "name": "minecraft:acacia_button",
-        "id": -140
-    },
-    {
-        "name": "minecraft:acacia_chest_boat",
-        "id": 657
-    },
-    {
-        "name": "minecraft:acacia_door",
-        "id": 569
-    },
-    {
-        "name": "minecraft:acacia_double_slab",
-        "id": -812
-    },
-    {
-        "name": "minecraft:acacia_fence",
-        "id": -575
-    },
-    {
-        "name": "minecraft:acacia_fence_gate",
-        "id": 187
-    },
-    {
-        "name": "minecraft:acacia_hanging_sign",
-        "id": -504
-    },
-    {
-        "name": "minecraft:acacia_leaves",
-        "id": 161
-    },
-    {
-        "name": "minecraft:acacia_log",
-        "id": 162
-    },
-    {
-        "name": "minecraft:acacia_planks",
-        "id": -742
-    },
-    {
-        "name": "minecraft:acacia_pressure_plate",
-        "id": -150
-    },
-    {
-        "name": "minecraft:acacia_sapling",
-        "id": -828
-    },
-    {
-        "name": "minecraft:acacia_sign",
-        "id": 592
-    },
-    {
-        "name": "minecraft:acacia_slab",
-        "id": -807
-    },
-    {
-        "name": "minecraft:acacia_stairs",
-        "id": 163
-    },
-    {
-        "name": "minecraft:acacia_standing_sign",
-        "id": -190
-    },
-    {
-        "name": "minecraft:acacia_trapdoor",
-        "id": -145
-    },
-    {
-        "name": "minecraft:acacia_wall_sign",
-        "id": -191
-    },
-    {
-        "name": "minecraft:acacia_wood",
-        "id": -817
-    },
-    {
-        "name": "minecraft:activator_rail",
-        "id": 126
-    },
-    {
-        "name": "minecraft:agent_spawn_egg",
-        "id": 494
-    },
-    {
-        "name": "minecraft:air",
-        "id": -158
-    },
-    {
-        "name": "minecraft:allay_spawn_egg",
-        "id": 646
-    },
-    {
-        "name": "minecraft:allium",
-        "id": -831
-    },
-    {
-        "name": "minecraft:allow",
-        "id": 210
-    },
-    {
-        "name": "minecraft:amethyst_block",
-        "id": -327
-    },
-    {
-        "name": "minecraft:amethyst_cluster",
-        "id": -329
-    },
-    {
-        "name": "minecraft:amethyst_shard",
-        "id": 639
-    },
-    {
-        "name": "minecraft:ancient_debris",
-        "id": -271
-    },
-    {
-        "name": "minecraft:andesite",
-        "id": -594
-    },
-    {
-        "name": "minecraft:andesite_stairs",
-        "id": -171
-    },
-    {
-        "name": "minecraft:angler_pottery_sherd",
-        "id": 671
-    },
-    {
-        "name": "minecraft:anvil",
-        "id": 145
-    },
-    {
-        "name": "minecraft:apple",
-        "id": 257
-    },
-    {
-        "name": "minecraft:archer_pottery_sherd",
-        "id": 672
-    },
-    {
-        "name": "minecraft:armadillo_scute",
-        "id": 717
-    },
-    {
-        "name": "minecraft:armadillo_spawn_egg",
-        "id": 716
-    },
-    {
-        "name": "minecraft:armor_stand",
-        "id": 565
-    },
-    {
-        "name": "minecraft:arms_up_pottery_sherd",
-        "id": 673
-    },
-    {
-        "name": "minecraft:arrow",
-        "id": 304
-    },
-    {
-        "name": "minecraft:axolotl_bucket",
-        "id": 373
-    },
-    {
-        "name": "minecraft:axolotl_spawn_egg",
-        "id": 509
-    },
-    {
-        "name": "minecraft:azalea",
-        "id": -337
-    },
-    {
-        "name": "minecraft:azalea_leaves",
-        "id": -324
-    },
-    {
-        "name": "minecraft:azalea_leaves_flowered",
-        "id": -325
-    },
-    {
-        "name": "minecraft:azure_bluet",
-        "id": -832
-    },
-    {
-        "name": "minecraft:baked_potato",
-        "id": 282
-    },
-    {
-        "name": "minecraft:balloon",
-        "id": 613
-    },
-    {
-        "name": "minecraft:bamboo",
-        "id": -163
-    },
-    {
-        "name": "minecraft:bamboo_block",
-        "id": -527
-    },
-    {
-        "name": "minecraft:bamboo_button",
-        "id": -511
-    },
-    {
-        "name": "minecraft:bamboo_chest_raft",
-        "id": 669
-    },
-    {
-        "name": "minecraft:bamboo_door",
-        "id": -517
-    },
-    {
-        "name": "minecraft:bamboo_double_slab",
-        "id": -521
-    },
-    {
-        "name": "minecraft:bamboo_fence",
-        "id": -515
-    },
-    {
-        "name": "minecraft:bamboo_fence_gate",
-        "id": -516
-    },
-    {
-        "name": "minecraft:bamboo_hanging_sign",
-        "id": -522
-    },
-    {
-        "name": "minecraft:bamboo_mosaic",
-        "id": -509
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_double_slab",
-        "id": -525
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_slab",
-        "id": -524
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_stairs",
-        "id": -523
-    },
-    {
-        "name": "minecraft:bamboo_planks",
-        "id": -510
-    },
-    {
-        "name": "minecraft:bamboo_pressure_plate",
-        "id": -514
-    },
-    {
-        "name": "minecraft:bamboo_raft",
-        "id": 668
-    },
-    {
-        "name": "minecraft:bamboo_sapling",
-        "id": -164
-    },
-    {
-        "name": "minecraft:bamboo_sign",
-        "id": 667
-    },
-    {
-        "name": "minecraft:bamboo_slab",
-        "id": -513
-    },
-    {
-        "name": "minecraft:bamboo_stairs",
-        "id": -512
-    },
-    {
-        "name": "minecraft:bamboo_standing_sign",
-        "id": -518
-    },
-    {
-        "name": "minecraft:bamboo_trapdoor",
-        "id": -520
-    },
-    {
-        "name": "minecraft:bamboo_wall_sign",
-        "id": -519
-    },
-    {
-        "name": "minecraft:banner",
-        "id": 580
-    },
-    {
-        "name": "minecraft:banner_pattern",
-        "id": 744
-    },
-    {
-        "name": "minecraft:barrel",
-        "id": -203
-    },
-    {
-        "name": "minecraft:barrier",
-        "id": -161
-    },
-    {
-        "name": "minecraft:basalt",
-        "id": -234
-    },
-    {
-        "name": "minecraft:bat_spawn_egg",
-        "id": 459
-    },
-    {
-        "name": "minecraft:beacon",
-        "id": 138
-    },
-    {
-        "name": "minecraft:bed",
-        "id": 423
-    },
-    {
-        "name": "minecraft:bedrock",
-        "id": 7
-    },
-    {
-        "name": "minecraft:bee_nest",
-        "id": -218
-    },
-    {
-        "name": "minecraft:bee_spawn_egg",
-        "id": 501
-    },
-    {
-        "name": "minecraft:beef",
-        "id": 274
-    },
-    {
-        "name": "minecraft:beehive",
-        "id": -219
-    },
-    {
-        "name": "minecraft:beetroot",
-        "id": 286
-    },
-    {
-        "name": "minecraft:beetroot_seeds",
-        "id": 296
-    },
-    {
-        "name": "minecraft:beetroot_soup",
-        "id": 287
-    },
-    {
-        "name": "minecraft:bell",
-        "id": -206
-    },
-    {
-        "name": "minecraft:big_dripleaf",
-        "id": -323
-    },
-    {
-        "name": "minecraft:birch_boat",
-        "id": 381
-    },
-    {
-        "name": "minecraft:birch_button",
-        "id": -141
-    },
-    {
-        "name": "minecraft:birch_chest_boat",
-        "id": 654
-    },
-    {
-        "name": "minecraft:birch_door",
-        "id": 567
-    },
-    {
-        "name": "minecraft:birch_double_slab",
-        "id": -810
-    },
-    {
-        "name": "minecraft:birch_fence",
-        "id": -576
-    },
-    {
-        "name": "minecraft:birch_fence_gate",
-        "id": 184
-    },
-    {
-        "name": "minecraft:birch_hanging_sign",
-        "id": -502
-    },
-    {
-        "name": "minecraft:birch_leaves",
-        "id": -801
-    },
-    {
-        "name": "minecraft:birch_log",
-        "id": -570
-    },
-    {
-        "name": "minecraft:birch_planks",
-        "id": -740
-    },
-    {
-        "name": "minecraft:birch_pressure_plate",
-        "id": -151
-    },
-    {
-        "name": "minecraft:birch_sapling",
-        "id": -826
-    },
-    {
-        "name": "minecraft:birch_sign",
-        "id": 590
-    },
-    {
-        "name": "minecraft:birch_slab",
-        "id": -805
-    },
-    {
-        "name": "minecraft:birch_stairs",
-        "id": 135
-    },
-    {
-        "name": "minecraft:birch_standing_sign",
-        "id": -186
-    },
-    {
-        "name": "minecraft:birch_trapdoor",
-        "id": -146
-    },
-    {
-        "name": "minecraft:birch_wall_sign",
-        "id": -187
-    },
-    {
-        "name": "minecraft:birch_wood",
-        "id": -815
-    },
-    {
-        "name": "minecraft:black_candle",
-        "id": -428
-    },
-    {
-        "name": "minecraft:black_candle_cake",
-        "id": -445
-    },
-    {
-        "name": "minecraft:black_carpet",
-        "id": -611
-    },
-    {
-        "name": "minecraft:black_concrete",
-        "id": -642
-    },
-    {
-        "name": "minecraft:black_concrete_powder",
-        "id": -723
-    },
-    {
-        "name": "minecraft:black_dye",
-        "id": 400
-    },
-    {
-        "name": "minecraft:black_glazed_terracotta",
-        "id": 235
-    },
-    {
-        "name": "minecraft:black_shulker_box",
-        "id": -627
-    },
-    {
-        "name": "minecraft:black_stained_glass",
-        "id": -687
-    },
-    {
-        "name": "minecraft:black_stained_glass_pane",
-        "id": -657
-    },
-    {
-        "name": "minecraft:black_terracotta",
-        "id": -738
-    },
-    {
-        "name": "minecraft:black_wool",
-        "id": -554
-    },
-    {
-        "name": "minecraft:blackstone",
-        "id": -273
-    },
-    {
-        "name": "minecraft:blackstone_double_slab",
-        "id": -283
-    },
-    {
-        "name": "minecraft:blackstone_slab",
-        "id": -282
-    },
-    {
-        "name": "minecraft:blackstone_stairs",
-        "id": -276
-    },
-    {
-        "name": "minecraft:blackstone_wall",
-        "id": -277
-    },
-    {
-        "name": "minecraft:blade_pottery_sherd",
-        "id": 674
-    },
-    {
-        "name": "minecraft:blast_furnace",
-        "id": -196
-    },
-    {
-        "name": "minecraft:blaze_powder",
-        "id": 435
-    },
-    {
-        "name": "minecraft:blaze_rod",
-        "id": 428
-    },
-    {
-        "name": "minecraft:blaze_spawn_egg",
-        "id": 462
-    },
-    {
-        "name": "minecraft:bleach",
-        "id": 611
-    },
-    {
-        "name": "minecraft:blue_candle",
-        "id": -424
-    },
-    {
-        "name": "minecraft:blue_candle_cake",
-        "id": -441
-    },
-    {
-        "name": "minecraft:blue_carpet",
-        "id": -607
-    },
-    {
-        "name": "minecraft:blue_concrete",
-        "id": -638
-    },
-    {
-        "name": "minecraft:blue_concrete_powder",
-        "id": -719
-    },
-    {
-        "name": "minecraft:blue_dye",
-        "id": 404
-    },
-    {
-        "name": "minecraft:blue_glazed_terracotta",
-        "id": 231
-    },
-    {
-        "name": "minecraft:blue_ice",
-        "id": -11
-    },
-    {
-        "name": "minecraft:blue_orchid",
-        "id": -830
-    },
-    {
-        "name": "minecraft:blue_shulker_box",
-        "id": -623
-    },
-    {
-        "name": "minecraft:blue_stained_glass",
-        "id": -683
-    },
-    {
-        "name": "minecraft:blue_stained_glass_pane",
-        "id": -653
-    },
-    {
-        "name": "minecraft:blue_terracotta",
-        "id": -734
-    },
-    {
-        "name": "minecraft:blue_wool",
-        "id": -563
-    },
-    {
-        "name": "minecraft:boat",
-        "id": 742
-    },
-    {
-        "name": "minecraft:bogged_spawn_egg",
-        "id": 469
-    },
-    {
-        "name": "minecraft:bolt_armor_trim_smithing_template",
-        "id": 713
-    },
-    {
-        "name": "minecraft:bone",
-        "id": 420
-    },
-    {
-        "name": "minecraft:bone_block",
-        "id": 216
-    },
-    {
-        "name": "minecraft:bone_meal",
-        "id": 416
-    },
-    {
-        "name": "minecraft:book",
-        "id": 392
-    },
-    {
-        "name": "minecraft:bookshelf",
-        "id": 47
-    },
-    {
-        "name": "minecraft:border_block",
-        "id": 212
-    },
-    {
-        "name": "minecraft:bordure_indented_banner_pattern",
-        "id": 599
-    },
-    {
-        "name": "minecraft:bow",
-        "id": 303
-    },
-    {
-        "name": "minecraft:bowl",
-        "id": 325
-    },
-    {
-        "name": "minecraft:brain_coral",
-        "id": -581
-    },
-    {
-        "name": "minecraft:brain_coral_fan",
-        "id": -840
-    },
-    {
-        "name": "minecraft:bread",
-        "id": 262
-    },
-    {
-        "name": "minecraft:breeze_rod",
-        "id": 429
-    },
-    {
-        "name": "minecraft:breeze_spawn_egg",
-        "id": 508
-    },
-    {
-        "name": "minecraft:brewer_pottery_sherd",
-        "id": 675
-    },
-    {
-        "name": "minecraft:brewing_stand",
-        "id": 437
-    },
-    {
-        "name": "minecraft:brick",
-        "id": 388
-    },
-    {
-        "name": "minecraft:brick_block",
-        "id": 45
-    },
-    {
-        "name": "minecraft:brick_stairs",
-        "id": 108
-    },
-    {
-        "name": "minecraft:brown_candle",
-        "id": -425
-    },
-    {
-        "name": "minecraft:brown_candle_cake",
-        "id": -442
-    },
-    {
-        "name": "minecraft:brown_carpet",
-        "id": -608
-    },
-    {
-        "name": "minecraft:brown_concrete",
-        "id": -639
-    },
-    {
-        "name": "minecraft:brown_concrete_powder",
-        "id": -720
-    },
-    {
-        "name": "minecraft:brown_dye",
-        "id": 403
-    },
-    {
-        "name": "minecraft:brown_glazed_terracotta",
-        "id": 232
-    },
-    {
-        "name": "minecraft:brown_mushroom",
-        "id": 39
-    },
-    {
-        "name": "minecraft:brown_mushroom_block",
-        "id": 99
-    },
-    {
-        "name": "minecraft:brown_shulker_box",
-        "id": -624
-    },
-    {
-        "name": "minecraft:brown_stained_glass",
-        "id": -684
-    },
-    {
-        "name": "minecraft:brown_stained_glass_pane",
-        "id": -654
-    },
-    {
-        "name": "minecraft:brown_terracotta",
-        "id": -735
-    },
-    {
-        "name": "minecraft:brown_wool",
-        "id": -555
-    },
-    {
-        "name": "minecraft:brush",
-        "id": 694
-    },
-    {
-        "name": "minecraft:bubble_column",
-        "id": -160
-    },
-    {
-        "name": "minecraft:bubble_coral",
-        "id": -582
-    },
-    {
-        "name": "minecraft:bubble_coral_fan",
-        "id": -841
-    },
-    {
-        "name": "minecraft:bucket",
-        "id": 364
-    },
-    {
-        "name": "minecraft:budding_amethyst",
-        "id": -328
-    },
-    {
-        "name": "minecraft:burn_pottery_sherd",
-        "id": 676
-    },
-    {
-        "name": "minecraft:cactus",
-        "id": 81
-    },
-    {
-        "name": "minecraft:cake",
-        "id": 422
-    },
-    {
-        "name": "minecraft:calcite",
-        "id": -326
-    },
-    {
-        "name": "minecraft:calibrated_sculk_sensor",
-        "id": -580
-    },
-    {
-        "name": "minecraft:camel_spawn_egg",
-        "id": 670
-    },
-    {
-        "name": "minecraft:camera",
-        "id": 608
-    },
-    {
-        "name": "minecraft:campfire",
-        "id": 604
-    },
-    {
-        "name": "minecraft:candle",
-        "id": -412
-    },
-    {
-        "name": "minecraft:candle_cake",
-        "id": -429
-    },
-    {
-        "name": "minecraft:carpet",
-        "id": 721
-    },
-    {
-        "name": "minecraft:carrot",
-        "id": 280
-    },
-    {
-        "name": "minecraft:carrot_on_a_stick",
-        "id": 530
-    },
-    {
-        "name": "minecraft:carrots",
-        "id": 141
-    },
-    {
-        "name": "minecraft:cartography_table",
-        "id": -200
-    },
-    {
-        "name": "minecraft:carved_pumpkin",
-        "id": -155
-    },
-    {
-        "name": "minecraft:cat_spawn_egg",
-        "id": 495
-    },
-    {
-        "name": "minecraft:cauldron",
-        "id": 438
-    },
-    {
-        "name": "minecraft:cave_spider_spawn_egg",
-        "id": 463
-    },
-    {
-        "name": "minecraft:cave_vines",
-        "id": -322
-    },
-    {
-        "name": "minecraft:cave_vines_body_with_berries",
-        "id": -375
-    },
-    {
-        "name": "minecraft:cave_vines_head_with_berries",
-        "id": -376
-    },
-    {
-        "name": "minecraft:chain",
-        "id": 634
-    },
-    {
-        "name": "minecraft:chain_command_block",
-        "id": 189
-    },
-    {
-        "name": "minecraft:chainmail_boots",
-        "id": 346
-    },
-    {
-        "name": "minecraft:chainmail_chestplate",
-        "id": 344
-    },
-    {
-        "name": "minecraft:chainmail_helmet",
-        "id": 343
-    },
-    {
-        "name": "minecraft:chainmail_leggings",
-        "id": 345
-    },
-    {
-        "name": "minecraft:charcoal",
-        "id": 306
-    },
-    {
-        "name": "minecraft:chemical_heat",
-        "id": 192
-    },
-    {
-        "name": "minecraft:chemistry_table",
-        "id": 238
-    },
-    {
-        "name": "minecraft:cherry_boat",
-        "id": 664
-    },
-    {
-        "name": "minecraft:cherry_button",
-        "id": -530
-    },
-    {
-        "name": "minecraft:cherry_chest_boat",
-        "id": 665
-    },
-    {
-        "name": "minecraft:cherry_door",
-        "id": -531
-    },
-    {
-        "name": "minecraft:cherry_double_slab",
-        "id": -540
-    },
-    {
-        "name": "minecraft:cherry_fence",
-        "id": -532
-    },
-    {
-        "name": "minecraft:cherry_fence_gate",
-        "id": -533
-    },
-    {
-        "name": "minecraft:cherry_hanging_sign",
-        "id": -534
-    },
-    {
-        "name": "minecraft:cherry_leaves",
-        "id": -548
-    },
-    {
-        "name": "minecraft:cherry_log",
-        "id": -536
-    },
-    {
-        "name": "minecraft:cherry_planks",
-        "id": -537
-    },
-    {
-        "name": "minecraft:cherry_pressure_plate",
-        "id": -538
-    },
-    {
-        "name": "minecraft:cherry_sapling",
-        "id": -547
-    },
-    {
-        "name": "minecraft:cherry_sign",
-        "id": 666
-    },
-    {
-        "name": "minecraft:cherry_slab",
-        "id": -539
-    },
-    {
-        "name": "minecraft:cherry_stairs",
-        "id": -541
-    },
-    {
-        "name": "minecraft:cherry_standing_sign",
-        "id": -542
-    },
-    {
-        "name": "minecraft:cherry_trapdoor",
-        "id": -543
-    },
-    {
-        "name": "minecraft:cherry_wall_sign",
-        "id": -544
-    },
-    {
-        "name": "minecraft:cherry_wood",
-        "id": -546
-    },
-    {
-        "name": "minecraft:chest",
-        "id": 54
-    },
-    {
-        "name": "minecraft:chest_boat",
-        "id": 660
-    },
-    {
-        "name": "minecraft:chest_minecart",
-        "id": 394
-    },
-    {
-        "name": "minecraft:chicken",
-        "id": 276
-    },
-    {
-        "name": "minecraft:chicken_spawn_egg",
-        "id": 441
-    },
-    {
-        "name": "minecraft:chiseled_bookshelf",
-        "id": -526
-    },
-    {
-        "name": "minecraft:chiseled_copper",
-        "id": -760
-    },
-    {
-        "name": "minecraft:chiseled_deepslate",
-        "id": -395
-    },
-    {
-        "name": "minecraft:chiseled_nether_bricks",
-        "id": -302
-    },
-    {
-        "name": "minecraft:chiseled_polished_blackstone",
-        "id": -279
-    },
-    {
-        "name": "minecraft:chiseled_tuff",
-        "id": -753
-    },
-    {
-        "name": "minecraft:chiseled_tuff_bricks",
-        "id": -759
-    },
-    {
-        "name": "minecraft:chorus_flower",
-        "id": 200
-    },
-    {
-        "name": "minecraft:chorus_fruit",
-        "id": 571
-    },
-    {
-        "name": "minecraft:chorus_plant",
-        "id": 240
-    },
-    {
-        "name": "minecraft:clay",
-        "id": 82
-    },
-    {
-        "name": "minecraft:clay_ball",
-        "id": 389
-    },
-    {
-        "name": "minecraft:client_request_placeholder_block",
-        "id": -465
-    },
-    {
-        "name": "minecraft:clock",
-        "id": 398
-    },
-    {
-        "name": "minecraft:coal",
-        "id": 305
-    },
-    {
-        "name": "minecraft:coal_block",
-        "id": 173
-    },
-    {
-        "name": "minecraft:coal_ore",
-        "id": 16
-    },
-    {
-        "name": "minecraft:coast_armor_trim_smithing_template",
-        "id": 698
-    },
-    {
-        "name": "minecraft:cobbled_deepslate",
-        "id": -379
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_double_slab",
-        "id": -396
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_slab",
-        "id": -380
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_stairs",
-        "id": -381
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_wall",
-        "id": -382
-    },
-    {
-        "name": "minecraft:cobblestone",
-        "id": 4
-    },
-    {
-        "name": "minecraft:cobblestone_wall",
-        "id": 139
-    },
-    {
-        "name": "minecraft:cocoa",
-        "id": 127
-    },
-    {
-        "name": "minecraft:cocoa_beans",
-        "id": 417
-    },
-    {
-        "name": "minecraft:cod",
-        "id": 265
-    },
-    {
-        "name": "minecraft:cod_bucket",
-        "id": 368
-    },
-    {
-        "name": "minecraft:cod_spawn_egg",
-        "id": 487
-    },
-    {
-        "name": "minecraft:colored_torch_bp",
-        "id": 204
-    },
-    {
-        "name": "minecraft:colored_torch_rg",
-        "id": 202
-    },
-    {
-        "name": "minecraft:command_block",
-        "id": 137
-    },
-    {
-        "name": "minecraft:command_block_minecart",
-        "id": 576
-    },
-    {
-        "name": "minecraft:comparator",
-        "id": 535
-    },
-    {
-        "name": "minecraft:compass",
-        "id": 396
-    },
-    {
-        "name": "minecraft:composter",
-        "id": -213
-    },
-    {
-        "name": "minecraft:compound",
-        "id": 609
-    },
-    {
-        "name": "minecraft:concrete",
-        "id": 734
-    },
-    {
-        "name": "minecraft:concrete_powder",
-        "id": 735
-    },
-    {
-        "name": "minecraft:conduit",
-        "id": -157
-    },
-    {
-        "name": "minecraft:cooked_beef",
-        "id": 275
-    },
-    {
-        "name": "minecraft:cooked_chicken",
-        "id": 277
-    },
-    {
-        "name": "minecraft:cooked_cod",
-        "id": 269
-    },
-    {
-        "name": "minecraft:cooked_mutton",
-        "id": 564
-    },
-    {
-        "name": "minecraft:cooked_porkchop",
-        "id": 264
-    },
-    {
-        "name": "minecraft:cooked_rabbit",
-        "id": 290
-    },
-    {
-        "name": "minecraft:cooked_salmon",
-        "id": 270
-    },
-    {
-        "name": "minecraft:cookie",
-        "id": 272
-    },
-    {
-        "name": "minecraft:copper_block",
-        "id": -340
-    },
-    {
-        "name": "minecraft:copper_bulb",
-        "id": -776
-    },
-    {
-        "name": "minecraft:copper_door",
-        "id": -784
-    },
-    {
-        "name": "minecraft:copper_grate",
-        "id": -768
-    },
-    {
-        "name": "minecraft:copper_ingot",
-        "id": 517
-    },
-    {
-        "name": "minecraft:copper_ore",
-        "id": -311
-    },
-    {
-        "name": "minecraft:copper_trapdoor",
-        "id": -792
-    },
-    {
-        "name": "minecraft:coral",
-        "id": 732
-    },
-    {
-        "name": "minecraft:coral_block",
-        "id": -132
-    },
-    {
-        "name": "minecraft:coral_fan",
-        "id": 724
-    },
-    {
-        "name": "minecraft:coral_fan_dead",
-        "id": 725
-    },
-    {
-        "name": "minecraft:coral_fan_hang",
-        "id": -135
-    },
-    {
-        "name": "minecraft:coral_fan_hang2",
-        "id": -136
-    },
-    {
-        "name": "minecraft:coral_fan_hang3",
-        "id": -137
-    },
-    {
-        "name": "minecraft:cornflower",
-        "id": -838
-    },
-    {
-        "name": "minecraft:cow_spawn_egg",
-        "id": 442
-    },
-    {
-        "name": "minecraft:cracked_deepslate_bricks",
-        "id": -410
-    },
-    {
-        "name": "minecraft:cracked_deepslate_tiles",
-        "id": -409
-    },
-    {
-        "name": "minecraft:cracked_nether_bricks",
-        "id": -303
-    },
-    {
-        "name": "minecraft:cracked_polished_blackstone_bricks",
-        "id": -280
-    },
-    {
-        "name": "minecraft:crafter",
-        "id": -313
-    },
-    {
-        "name": "minecraft:crafting_table",
-        "id": 58
-    },
-    {
-        "name": "minecraft:creeper_banner_pattern",
-        "id": 595
-    },
-    {
-        "name": "minecraft:creeper_spawn_egg",
-        "id": 447
-    },
-    {
-        "name": "minecraft:crimson_button",
-        "id": -260
-    },
-    {
-        "name": "minecraft:crimson_door",
-        "id": 631
-    },
-    {
-        "name": "minecraft:crimson_double_slab",
-        "id": -266
-    },
-    {
-        "name": "minecraft:crimson_fence",
-        "id": -256
-    },
-    {
-        "name": "minecraft:crimson_fence_gate",
-        "id": -258
-    },
-    {
-        "name": "minecraft:crimson_fungus",
-        "id": -228
-    },
-    {
-        "name": "minecraft:crimson_hanging_sign",
-        "id": -506
-    },
-    {
-        "name": "minecraft:crimson_hyphae",
-        "id": -299
-    },
-    {
-        "name": "minecraft:crimson_nylium",
-        "id": -232
-    },
-    {
-        "name": "minecraft:crimson_planks",
-        "id": -242
-    },
-    {
-        "name": "minecraft:crimson_pressure_plate",
-        "id": -262
-    },
-    {
-        "name": "minecraft:crimson_roots",
-        "id": -223
-    },
-    {
-        "name": "minecraft:crimson_sign",
-        "id": 629
-    },
-    {
-        "name": "minecraft:crimson_slab",
-        "id": -264
-    },
-    {
-        "name": "minecraft:crimson_stairs",
-        "id": -254
-    },
-    {
-        "name": "minecraft:crimson_standing_sign",
-        "id": -250
-    },
-    {
-        "name": "minecraft:crimson_stem",
-        "id": -225
-    },
-    {
-        "name": "minecraft:crimson_trapdoor",
-        "id": -246
-    },
-    {
-        "name": "minecraft:crimson_wall_sign",
-        "id": -252
-    },
-    {
-        "name": "minecraft:crossbow",
-        "id": 588
-    },
-    {
-        "name": "minecraft:crying_obsidian",
-        "id": -289
-    },
-    {
-        "name": "minecraft:cut_copper",
-        "id": -347
-    },
-    {
-        "name": "minecraft:cut_copper_slab",
-        "id": -361
-    },
-    {
-        "name": "minecraft:cut_copper_stairs",
-        "id": -354
-    },
-    {
-        "name": "minecraft:cyan_candle",
-        "id": -422
-    },
-    {
-        "name": "minecraft:cyan_candle_cake",
-        "id": -439
-    },
-    {
-        "name": "minecraft:cyan_carpet",
-        "id": -605
-    },
-    {
-        "name": "minecraft:cyan_concrete",
-        "id": -636
-    },
-    {
-        "name": "minecraft:cyan_concrete_powder",
-        "id": -717
-    },
-    {
-        "name": "minecraft:cyan_dye",
-        "id": 406
-    },
-    {
-        "name": "minecraft:cyan_glazed_terracotta",
-        "id": 229
-    },
-    {
-        "name": "minecraft:cyan_shulker_box",
-        "id": -621
-    },
-    {
-        "name": "minecraft:cyan_stained_glass",
-        "id": -681
-    },
-    {
-        "name": "minecraft:cyan_stained_glass_pane",
-        "id": -651
-    },
-    {
-        "name": "minecraft:cyan_terracotta",
-        "id": -732
-    },
-    {
-        "name": "minecraft:cyan_wool",
-        "id": -561
-    },
-    {
-        "name": "minecraft:danger_pottery_sherd",
-        "id": 677
-    },
-    {
-        "name": "minecraft:dark_oak_boat",
-        "id": 385
-    },
-    {
-        "name": "minecraft:dark_oak_button",
-        "id": -142
-    },
-    {
-        "name": "minecraft:dark_oak_chest_boat",
-        "id": 658
-    },
-    {
-        "name": "minecraft:dark_oak_door",
-        "id": 570
-    },
-    {
-        "name": "minecraft:dark_oak_double_slab",
-        "id": -813
-    },
-    {
-        "name": "minecraft:dark_oak_fence",
-        "id": -577
-    },
-    {
-        "name": "minecraft:dark_oak_fence_gate",
-        "id": 186
-    },
-    {
-        "name": "minecraft:dark_oak_hanging_sign",
-        "id": -505
-    },
-    {
-        "name": "minecraft:dark_oak_leaves",
-        "id": -803
-    },
-    {
-        "name": "minecraft:dark_oak_log",
-        "id": -572
-    },
-    {
-        "name": "minecraft:dark_oak_planks",
-        "id": -743
-    },
-    {
-        "name": "minecraft:dark_oak_pressure_plate",
-        "id": -152
-    },
-    {
-        "name": "minecraft:dark_oak_sapling",
-        "id": -829
-    },
-    {
-        "name": "minecraft:dark_oak_sign",
-        "id": 593
-    },
-    {
-        "name": "minecraft:dark_oak_slab",
-        "id": -808
-    },
-    {
-        "name": "minecraft:dark_oak_stairs",
-        "id": 164
-    },
-    {
-        "name": "minecraft:dark_oak_trapdoor",
-        "id": -147
-    },
-    {
-        "name": "minecraft:dark_oak_wood",
-        "id": -818
-    },
-    {
-        "name": "minecraft:dark_prismarine_stairs",
-        "id": -3
-    },
-    {
-        "name": "minecraft:darkoak_standing_sign",
-        "id": -192
-    },
-    {
-        "name": "minecraft:darkoak_wall_sign",
-        "id": -193
-    },
-    {
-        "name": "minecraft:daylight_detector",
-        "id": 151
-    },
-    {
-        "name": "minecraft:daylight_detector_inverted",
-        "id": 178
-    },
-    {
-        "name": "minecraft:dead_brain_coral",
-        "id": -586
-    },
-    {
-        "name": "minecraft:dead_brain_coral_fan",
-        "id": -844
-    },
-    {
-        "name": "minecraft:dead_bubble_coral",
-        "id": -587
-    },
-    {
-        "name": "minecraft:dead_bubble_coral_fan",
-        "id": -845
-    },
-    {
-        "name": "minecraft:dead_fire_coral",
-        "id": -588
-    },
-    {
-        "name": "minecraft:dead_fire_coral_fan",
-        "id": -846
-    },
-    {
-        "name": "minecraft:dead_horn_coral",
-        "id": -589
-    },
-    {
-        "name": "minecraft:dead_horn_coral_fan",
-        "id": -847
-    },
-    {
-        "name": "minecraft:dead_tube_coral",
-        "id": -585
-    },
-    {
-        "name": "minecraft:dead_tube_coral_fan",
-        "id": -134
-    },
-    {
-        "name": "minecraft:deadbush",
-        "id": 32
-    },
-    {
-        "name": "minecraft:decorated_pot",
-        "id": -551
-    },
-    {
-        "name": "minecraft:deepslate",
-        "id": -378
-    },
-    {
-        "name": "minecraft:deepslate_brick_double_slab",
-        "id": -399
-    },
-    {
-        "name": "minecraft:deepslate_brick_slab",
-        "id": -392
-    },
-    {
-        "name": "minecraft:deepslate_brick_stairs",
-        "id": -393
-    },
-    {
-        "name": "minecraft:deepslate_brick_wall",
-        "id": -394
-    },
-    {
-        "name": "minecraft:deepslate_bricks",
-        "id": -391
-    },
-    {
-        "name": "minecraft:deepslate_coal_ore",
-        "id": -406
-    },
-    {
-        "name": "minecraft:deepslate_copper_ore",
-        "id": -408
-    },
-    {
-        "name": "minecraft:deepslate_diamond_ore",
-        "id": -405
-    },
-    {
-        "name": "minecraft:deepslate_emerald_ore",
-        "id": -407
-    },
-    {
-        "name": "minecraft:deepslate_gold_ore",
-        "id": -402
-    },
-    {
-        "name": "minecraft:deepslate_iron_ore",
-        "id": -401
-    },
-    {
-        "name": "minecraft:deepslate_lapis_ore",
-        "id": -400
-    },
-    {
-        "name": "minecraft:deepslate_redstone_ore",
-        "id": -403
-    },
-    {
-        "name": "minecraft:deepslate_tile_double_slab",
-        "id": -398
-    },
-    {
-        "name": "minecraft:deepslate_tile_slab",
-        "id": -388
-    },
-    {
-        "name": "minecraft:deepslate_tile_stairs",
-        "id": -389
-    },
-    {
-        "name": "minecraft:deepslate_tile_wall",
-        "id": -390
-    },
-    {
-        "name": "minecraft:deepslate_tiles",
-        "id": -387
-    },
-    {
-        "name": "minecraft:deny",
-        "id": 211
-    },
-    {
-        "name": "minecraft:detector_rail",
-        "id": 28
-    },
-    {
-        "name": "minecraft:diamond",
-        "id": 307
-    },
-    {
-        "name": "minecraft:diamond_axe",
-        "id": 322
-    },
-    {
-        "name": "minecraft:diamond_block",
-        "id": 57
-    },
-    {
-        "name": "minecraft:diamond_boots",
-        "id": 354
-    },
-    {
-        "name": "minecraft:diamond_chestplate",
-        "id": 352
-    },
-    {
-        "name": "minecraft:diamond_helmet",
-        "id": 351
-    },
-    {
-        "name": "minecraft:diamond_hoe",
-        "id": 336
-    },
-    {
-        "name": "minecraft:diamond_horse_armor",
-        "id": 546
-    },
-    {
-        "name": "minecraft:diamond_leggings",
-        "id": 353
-    },
-    {
-        "name": "minecraft:diamond_ore",
-        "id": 56
-    },
-    {
-        "name": "minecraft:diamond_pickaxe",
-        "id": 321
-    },
-    {
-        "name": "minecraft:diamond_shovel",
-        "id": 320
-    },
-    {
-        "name": "minecraft:diamond_sword",
-        "id": 319
-    },
-    {
-        "name": "minecraft:diorite",
-        "id": -592
-    },
-    {
-        "name": "minecraft:diorite_stairs",
-        "id": -170
-    },
-    {
-        "name": "minecraft:dirt",
-        "id": 3
-    },
-    {
-        "name": "minecraft:dirt_with_roots",
-        "id": -318
-    },
-    {
-        "name": "minecraft:disc_fragment_5",
-        "id": 652
-    },
-    {
-        "name": "minecraft:dispenser",
-        "id": 23
-    },
-    {
-        "name": "minecraft:dolphin_spawn_egg",
-        "id": 491
-    },
-    {
-        "name": "minecraft:donkey_spawn_egg",
-        "id": 472
-    },
-    {
-        "name": "minecraft:double_cut_copper_slab",
-        "id": -368
-    },
-    {
-        "name": "minecraft:double_plant",
-        "id": 175
-    },
-    {
-        "name": "minecraft:double_stone_block_slab",
-        "id": 43
-    },
-    {
-        "name": "minecraft:double_stone_block_slab2",
-        "id": 181
-    },
-    {
-        "name": "minecraft:double_stone_block_slab3",
-        "id": -167
-    },
-    {
-        "name": "minecraft:double_stone_block_slab4",
-        "id": -168
-    },
-    {
-        "name": "minecraft:dragon_breath",
-        "id": 573
-    },
-    {
-        "name": "minecraft:dragon_egg",
-        "id": 122
-    },
-    {
-        "name": "minecraft:dried_kelp",
-        "id": 271
-    },
-    {
-        "name": "minecraft:dried_kelp_block",
-        "id": -139
-    },
-    {
-        "name": "minecraft:dripstone_block",
-        "id": -317
-    },
-    {
-        "name": "minecraft:dropper",
-        "id": 125
-    },
-    {
-        "name": "minecraft:drowned_spawn_egg",
-        "id": 490
-    },
-    {
-        "name": "minecraft:dune_armor_trim_smithing_template",
-        "id": 697
-    },
-    {
-        "name": "minecraft:dye",
-        "id": 743
-    },
-    {
-        "name": "minecraft:echo_shard",
-        "id": 662
-    },
-    {
-        "name": "minecraft:egg",
-        "id": 395
-    },
-    {
-        "name": "minecraft:elder_guardian_spawn_egg",
-        "id": 478
-    },
-    {
-        "name": "minecraft:element_0",
-        "id": 36
-    },
-    {
-        "name": "minecraft:element_1",
-        "id": -12
-    },
-    {
-        "name": "minecraft:element_10",
-        "id": -21
-    },
-    {
-        "name": "minecraft:element_100",
-        "id": -111
-    },
-    {
-        "name": "minecraft:element_101",
-        "id": -112
-    },
-    {
-        "name": "minecraft:element_102",
-        "id": -113
-    },
-    {
-        "name": "minecraft:element_103",
-        "id": -114
-    },
-    {
-        "name": "minecraft:element_104",
-        "id": -115
-    },
-    {
-        "name": "minecraft:element_105",
-        "id": -116
-    },
-    {
-        "name": "minecraft:element_106",
-        "id": -117
-    },
-    {
-        "name": "minecraft:element_107",
-        "id": -118
-    },
-    {
-        "name": "minecraft:element_108",
-        "id": -119
-    },
-    {
-        "name": "minecraft:element_109",
-        "id": -120
-    },
-    {
-        "name": "minecraft:element_11",
-        "id": -22
-    },
-    {
-        "name": "minecraft:element_110",
-        "id": -121
-    },
-    {
-        "name": "minecraft:element_111",
-        "id": -122
-    },
-    {
-        "name": "minecraft:element_112",
-        "id": -123
-    },
-    {
-        "name": "minecraft:element_113",
-        "id": -124
-    },
-    {
-        "name": "minecraft:element_114",
-        "id": -125
-    },
-    {
-        "name": "minecraft:element_115",
-        "id": -126
-    },
-    {
-        "name": "minecraft:element_116",
-        "id": -127
-    },
-    {
-        "name": "minecraft:element_117",
-        "id": -128
-    },
-    {
-        "name": "minecraft:element_118",
-        "id": -129
-    },
-    {
-        "name": "minecraft:element_12",
-        "id": -23
-    },
-    {
-        "name": "minecraft:element_13",
-        "id": -24
-    },
-    {
-        "name": "minecraft:element_14",
-        "id": -25
-    },
-    {
-        "name": "minecraft:element_15",
-        "id": -26
-    },
-    {
-        "name": "minecraft:element_16",
-        "id": -27
-    },
-    {
-        "name": "minecraft:element_17",
-        "id": -28
-    },
-    {
-        "name": "minecraft:element_18",
-        "id": -29
-    },
-    {
-        "name": "minecraft:element_19",
-        "id": -30
-    },
-    {
-        "name": "minecraft:element_2",
-        "id": -13
-    },
-    {
-        "name": "minecraft:element_20",
-        "id": -31
-    },
-    {
-        "name": "minecraft:element_21",
-        "id": -32
-    },
-    {
-        "name": "minecraft:element_22",
-        "id": -33
-    },
-    {
-        "name": "minecraft:element_23",
-        "id": -34
-    },
-    {
-        "name": "minecraft:element_24",
-        "id": -35
-    },
-    {
-        "name": "minecraft:element_25",
-        "id": -36
-    },
-    {
-        "name": "minecraft:element_26",
-        "id": -37
-    },
-    {
-        "name": "minecraft:element_27",
-        "id": -38
-    },
-    {
-        "name": "minecraft:element_28",
-        "id": -39
-    },
-    {
-        "name": "minecraft:element_29",
-        "id": -40
-    },
-    {
-        "name": "minecraft:element_3",
-        "id": -14
-    },
-    {
-        "name": "minecraft:element_30",
-        "id": -41
-    },
-    {
-        "name": "minecraft:element_31",
-        "id": -42
-    },
-    {
-        "name": "minecraft:element_32",
-        "id": -43
-    },
-    {
-        "name": "minecraft:element_33",
-        "id": -44
-    },
-    {
-        "name": "minecraft:element_34",
-        "id": -45
-    },
-    {
-        "name": "minecraft:element_35",
-        "id": -46
-    },
-    {
-        "name": "minecraft:element_36",
-        "id": -47
-    },
-    {
-        "name": "minecraft:element_37",
-        "id": -48
-    },
-    {
-        "name": "minecraft:element_38",
-        "id": -49
-    },
-    {
-        "name": "minecraft:element_39",
-        "id": -50
-    },
-    {
-        "name": "minecraft:element_4",
-        "id": -15
-    },
-    {
-        "name": "minecraft:element_40",
-        "id": -51
-    },
-    {
-        "name": "minecraft:element_41",
-        "id": -52
-    },
-    {
-        "name": "minecraft:element_42",
-        "id": -53
-    },
-    {
-        "name": "minecraft:element_43",
-        "id": -54
-    },
-    {
-        "name": "minecraft:element_44",
-        "id": -55
-    },
-    {
-        "name": "minecraft:element_45",
-        "id": -56
-    },
-    {
-        "name": "minecraft:element_46",
-        "id": -57
-    },
-    {
-        "name": "minecraft:element_47",
-        "id": -58
-    },
-    {
-        "name": "minecraft:element_48",
-        "id": -59
-    },
-    {
-        "name": "minecraft:element_49",
-        "id": -60
-    },
-    {
-        "name": "minecraft:element_5",
-        "id": -16
-    },
-    {
-        "name": "minecraft:element_50",
-        "id": -61
-    },
-    {
-        "name": "minecraft:element_51",
-        "id": -62
-    },
-    {
-        "name": "minecraft:element_52",
-        "id": -63
-    },
-    {
-        "name": "minecraft:element_53",
-        "id": -64
-    },
-    {
-        "name": "minecraft:element_54",
-        "id": -65
-    },
-    {
-        "name": "minecraft:element_55",
-        "id": -66
-    },
-    {
-        "name": "minecraft:element_56",
-        "id": -67
-    },
-    {
-        "name": "minecraft:element_57",
-        "id": -68
-    },
-    {
-        "name": "minecraft:element_58",
-        "id": -69
-    },
-    {
-        "name": "minecraft:element_59",
-        "id": -70
-    },
-    {
-        "name": "minecraft:element_6",
-        "id": -17
-    },
-    {
-        "name": "minecraft:element_60",
-        "id": -71
-    },
-    {
-        "name": "minecraft:element_61",
-        "id": -72
-    },
-    {
-        "name": "minecraft:element_62",
-        "id": -73
-    },
-    {
-        "name": "minecraft:element_63",
-        "id": -74
-    },
-    {
-        "name": "minecraft:element_64",
-        "id": -75
-    },
-    {
-        "name": "minecraft:element_65",
-        "id": -76
-    },
-    {
-        "name": "minecraft:element_66",
-        "id": -77
-    },
-    {
-        "name": "minecraft:element_67",
-        "id": -78
-    },
-    {
-        "name": "minecraft:element_68",
-        "id": -79
-    },
-    {
-        "name": "minecraft:element_69",
-        "id": -80
-    },
-    {
-        "name": "minecraft:element_7",
-        "id": -18
-    },
-    {
-        "name": "minecraft:element_70",
-        "id": -81
-    },
-    {
-        "name": "minecraft:element_71",
-        "id": -82
-    },
-    {
-        "name": "minecraft:element_72",
-        "id": -83
-    },
-    {
-        "name": "minecraft:element_73",
-        "id": -84
-    },
-    {
-        "name": "minecraft:element_74",
-        "id": -85
-    },
-    {
-        "name": "minecraft:element_75",
-        "id": -86
-    },
-    {
-        "name": "minecraft:element_76",
-        "id": -87
-    },
-    {
-        "name": "minecraft:element_77",
-        "id": -88
-    },
-    {
-        "name": "minecraft:element_78",
-        "id": -89
-    },
-    {
-        "name": "minecraft:element_79",
-        "id": -90
-    },
-    {
-        "name": "minecraft:element_8",
-        "id": -19
-    },
-    {
-        "name": "minecraft:element_80",
-        "id": -91
-    },
-    {
-        "name": "minecraft:element_81",
-        "id": -92
-    },
-    {
-        "name": "minecraft:element_82",
-        "id": -93
-    },
-    {
-        "name": "minecraft:element_83",
-        "id": -94
-    },
-    {
-        "name": "minecraft:element_84",
-        "id": -95
-    },
-    {
-        "name": "minecraft:element_85",
-        "id": -96
-    },
-    {
-        "name": "minecraft:element_86",
-        "id": -97
-    },
-    {
-        "name": "minecraft:element_87",
-        "id": -98
-    },
-    {
-        "name": "minecraft:element_88",
-        "id": -99
-    },
-    {
-        "name": "minecraft:element_89",
-        "id": -100
-    },
-    {
-        "name": "minecraft:element_9",
-        "id": -20
-    },
-    {
-        "name": "minecraft:element_90",
-        "id": -101
-    },
-    {
-        "name": "minecraft:element_91",
-        "id": -102
-    },
-    {
-        "name": "minecraft:element_92",
-        "id": -103
-    },
-    {
-        "name": "minecraft:element_93",
-        "id": -104
-    },
-    {
-        "name": "minecraft:element_94",
-        "id": -105
-    },
-    {
-        "name": "minecraft:element_95",
-        "id": -106
-    },
-    {
-        "name": "minecraft:element_96",
-        "id": -107
-    },
-    {
-        "name": "minecraft:element_97",
-        "id": -108
-    },
-    {
-        "name": "minecraft:element_98",
-        "id": -109
-    },
-    {
-        "name": "minecraft:element_99",
-        "id": -110
-    },
-    {
-        "name": "minecraft:elytra",
-        "id": 577
-    },
-    {
-        "name": "minecraft:emerald",
-        "id": 525
-    },
-    {
-        "name": "minecraft:emerald_block",
-        "id": 133
-    },
-    {
-        "name": "minecraft:emerald_ore",
-        "id": 129
-    },
-    {
-        "name": "minecraft:empty_map",
-        "id": 528
-    },
-    {
-        "name": "minecraft:enchanted_book",
-        "id": 534
-    },
-    {
-        "name": "minecraft:enchanted_golden_apple",
-        "id": 260
-    },
-    {
-        "name": "minecraft:enchanting_table",
-        "id": 116
-    },
-    {
-        "name": "minecraft:end_brick_stairs",
-        "id": -178
-    },
-    {
-        "name": "minecraft:end_bricks",
-        "id": 206
-    },
-    {
-        "name": "minecraft:end_crystal",
-        "id": 746
-    },
-    {
-        "name": "minecraft:end_gateway",
-        "id": 209
-    },
-    {
-        "name": "minecraft:end_portal",
-        "id": 119
-    },
-    {
-        "name": "minecraft:end_portal_frame",
-        "id": 120
-    },
-    {
-        "name": "minecraft:end_rod",
-        "id": 208
-    },
-    {
-        "name": "minecraft:end_stone",
-        "id": 121
-    },
-    {
-        "name": "minecraft:ender_chest",
-        "id": 130
-    },
-    {
-        "name": "minecraft:ender_dragon_spawn_egg",
-        "id": 514
-    },
-    {
-        "name": "minecraft:ender_eye",
-        "id": 439
-    },
-    {
-        "name": "minecraft:ender_pearl",
-        "id": 427
-    },
-    {
-        "name": "minecraft:enderman_spawn_egg",
-        "id": 448
-    },
-    {
-        "name": "minecraft:endermite_spawn_egg",
-        "id": 466
-    },
-    {
-        "name": "minecraft:evoker_spawn_egg",
-        "id": 482
-    },
-    {
-        "name": "minecraft:experience_bottle",
-        "id": 521
-    },
-    {
-        "name": "minecraft:explorer_pottery_sherd",
-        "id": 678
-    },
-    {
-        "name": "minecraft:exposed_chiseled_copper",
-        "id": -761
-    },
-    {
-        "name": "minecraft:exposed_copper",
-        "id": -341
-    },
-    {
-        "name": "minecraft:exposed_copper_bulb",
-        "id": -777
-    },
-    {
-        "name": "minecraft:exposed_copper_door",
-        "id": -785
-    },
-    {
-        "name": "minecraft:exposed_copper_grate",
-        "id": -769
-    },
-    {
-        "name": "minecraft:exposed_copper_trapdoor",
-        "id": -793
-    },
-    {
-        "name": "minecraft:exposed_cut_copper",
-        "id": -348
-    },
-    {
-        "name": "minecraft:exposed_cut_copper_slab",
-        "id": -362
-    },
-    {
-        "name": "minecraft:exposed_cut_copper_stairs",
-        "id": -355
-    },
-    {
-        "name": "minecraft:exposed_double_cut_copper_slab",
-        "id": -369
-    },
-    {
-        "name": "minecraft:eye_armor_trim_smithing_template",
-        "id": 701
-    },
-    {
-        "name": "minecraft:farmland",
-        "id": 60
-    },
-    {
-        "name": "minecraft:feather",
-        "id": 331
-    },
-    {
-        "name": "minecraft:fence",
-        "id": 723
-    },
-    {
-        "name": "minecraft:fence_gate",
-        "id": 107
-    },
-    {
-        "name": "minecraft:fermented_spider_eye",
-        "id": 434
-    },
-    {
-        "name": "minecraft:field_masoned_banner_pattern",
-        "id": 598
-    },
-    {
-        "name": "minecraft:filled_map",
-        "id": 425
-    },
-    {
-        "name": "minecraft:fire",
-        "id": 51
-    },
-    {
-        "name": "minecraft:fire_charge",
-        "id": 522
-    },
-    {
-        "name": "minecraft:fire_coral",
-        "id": -583
-    },
-    {
-        "name": "minecraft:fire_coral_fan",
-        "id": -842
-    },
-    {
-        "name": "minecraft:firework_rocket",
-        "id": 532
-    },
-    {
-        "name": "minecraft:firework_star",
-        "id": 533
-    },
-    {
-        "name": "minecraft:fishing_rod",
-        "id": 397
-    },
-    {
-        "name": "minecraft:fletching_table",
-        "id": -201
-    },
-    {
-        "name": "minecraft:flint",
-        "id": 360
-    },
-    {
-        "name": "minecraft:flint_and_steel",
-        "id": 302
-    },
-    {
-        "name": "minecraft:flow_armor_trim_smithing_template",
-        "id": 712
-    },
-    {
-        "name": "minecraft:flow_banner_pattern",
-        "id": 602
-    },
-    {
-        "name": "minecraft:flow_pottery_sherd",
-        "id": 679
-    },
-    {
-        "name": "minecraft:flower_banner_pattern",
-        "id": 594
-    },
-    {
-        "name": "minecraft:flower_pot",
-        "id": 527
-    },
-    {
-        "name": "minecraft:flowering_azalea",
-        "id": -338
-    },
-    {
-        "name": "minecraft:flowing_lava",
-        "id": 10
-    },
-    {
-        "name": "minecraft:flowing_water",
-        "id": 8
-    },
-    {
-        "name": "minecraft:fox_spawn_egg",
-        "id": 497
-    },
-    {
-        "name": "minecraft:frame",
-        "id": 526
-    },
-    {
-        "name": "minecraft:friend_pottery_sherd",
-        "id": 680
-    },
-    {
-        "name": "minecraft:frog_spawn",
-        "id": -468
-    },
-    {
-        "name": "minecraft:frog_spawn_egg",
-        "id": 643
-    },
-    {
-        "name": "minecraft:frosted_ice",
-        "id": 207
-    },
-    {
-        "name": "minecraft:furnace",
-        "id": 61
-    },
-    {
-        "name": "minecraft:ghast_spawn_egg",
-        "id": 460
-    },
-    {
-        "name": "minecraft:ghast_tear",
-        "id": 430
-    },
-    {
-        "name": "minecraft:gilded_blackstone",
-        "id": -281
-    },
-    {
-        "name": "minecraft:glass",
-        "id": 20
-    },
-    {
-        "name": "minecraft:glass_bottle",
-        "id": 433
-    },
-    {
-        "name": "minecraft:glass_pane",
-        "id": 102
-    },
-    {
-        "name": "minecraft:glistering_melon_slice",
-        "id": 440
-    },
-    {
-        "name": "minecraft:globe_banner_pattern",
-        "id": 601
-    },
-    {
-        "name": "minecraft:glow_berries",
-        "id": 747
-    },
-    {
-        "name": "minecraft:glow_frame",
-        "id": 638
-    },
-    {
-        "name": "minecraft:glow_ink_sac",
-        "id": 516
-    },
-    {
-        "name": "minecraft:glow_lichen",
-        "id": -411
-    },
-    {
-        "name": "minecraft:glow_squid_spawn_egg",
-        "id": 511
-    },
-    {
-        "name": "minecraft:glow_stick",
-        "id": 616
-    },
-    {
-        "name": "minecraft:glowingobsidian",
-        "id": 246
-    },
-    {
-        "name": "minecraft:glowstone",
-        "id": 89
-    },
-    {
-        "name": "minecraft:glowstone_dust",
-        "id": 399
-    },
-    {
-        "name": "minecraft:goat_horn",
-        "id": 642
-    },
-    {
-        "name": "minecraft:goat_spawn_egg",
-        "id": 510
-    },
-    {
-        "name": "minecraft:gold_block",
-        "id": 41
-    },
-    {
-        "name": "minecraft:gold_ingot",
-        "id": 309
-    },
-    {
-        "name": "minecraft:gold_nugget",
-        "id": 431
-    },
-    {
-        "name": "minecraft:gold_ore",
-        "id": 14
-    },
-    {
-        "name": "minecraft:golden_apple",
-        "id": 259
-    },
-    {
-        "name": "minecraft:golden_axe",
-        "id": 329
-    },
-    {
-        "name": "minecraft:golden_boots",
-        "id": 358
-    },
-    {
-        "name": "minecraft:golden_carrot",
-        "id": 284
-    },
-    {
-        "name": "minecraft:golden_chestplate",
-        "id": 356
-    },
-    {
-        "name": "minecraft:golden_helmet",
-        "id": 355
-    },
-    {
-        "name": "minecraft:golden_hoe",
-        "id": 337
-    },
-    {
-        "name": "minecraft:golden_horse_armor",
-        "id": 545
-    },
-    {
-        "name": "minecraft:golden_leggings",
-        "id": 357
-    },
-    {
-        "name": "minecraft:golden_pickaxe",
-        "id": 328
-    },
-    {
-        "name": "minecraft:golden_rail",
-        "id": 27
-    },
-    {
-        "name": "minecraft:golden_shovel",
-        "id": 327
-    },
-    {
-        "name": "minecraft:golden_sword",
-        "id": 326
-    },
-    {
-        "name": "minecraft:granite",
-        "id": -590
-    },
-    {
-        "name": "minecraft:granite_stairs",
-        "id": -169
-    },
-    {
-        "name": "minecraft:grass_block",
-        "id": 2
-    },
-    {
-        "name": "minecraft:grass_path",
-        "id": 198
-    },
-    {
-        "name": "minecraft:gravel",
-        "id": 13
-    },
-    {
-        "name": "minecraft:gray_candle",
-        "id": -420
-    },
-    {
-        "name": "minecraft:gray_candle_cake",
-        "id": -437
-    },
-    {
-        "name": "minecraft:gray_carpet",
-        "id": -603
-    },
-    {
-        "name": "minecraft:gray_concrete",
-        "id": -634
-    },
-    {
-        "name": "minecraft:gray_concrete_powder",
-        "id": -715
-    },
-    {
-        "name": "minecraft:gray_dye",
-        "id": 408
-    },
-    {
-        "name": "minecraft:gray_glazed_terracotta",
-        "id": 227
-    },
-    {
-        "name": "minecraft:gray_shulker_box",
-        "id": -619
-    },
-    {
-        "name": "minecraft:gray_stained_glass",
-        "id": -679
-    },
-    {
-        "name": "minecraft:gray_stained_glass_pane",
-        "id": -649
-    },
-    {
-        "name": "minecraft:gray_terracotta",
-        "id": -730
-    },
-    {
-        "name": "minecraft:gray_wool",
-        "id": -553
-    },
-    {
-        "name": "minecraft:green_candle",
-        "id": -426
-    },
-    {
-        "name": "minecraft:green_candle_cake",
-        "id": -443
-    },
-    {
-        "name": "minecraft:green_carpet",
-        "id": -609
-    },
-    {
-        "name": "minecraft:green_concrete",
-        "id": -640
-    },
-    {
-        "name": "minecraft:green_concrete_powder",
-        "id": -721
-    },
-    {
-        "name": "minecraft:green_dye",
-        "id": 402
-    },
-    {
-        "name": "minecraft:green_glazed_terracotta",
-        "id": 233
-    },
-    {
-        "name": "minecraft:green_shulker_box",
-        "id": -625
-    },
-    {
-        "name": "minecraft:green_stained_glass",
-        "id": -685
-    },
-    {
-        "name": "minecraft:green_stained_glass_pane",
-        "id": -655
-    },
-    {
-        "name": "minecraft:green_terracotta",
-        "id": -736
-    },
-    {
-        "name": "minecraft:green_wool",
-        "id": -560
-    },
-    {
-        "name": "minecraft:grindstone",
-        "id": -195
-    },
-    {
-        "name": "minecraft:guardian_spawn_egg",
-        "id": 467
-    },
-    {
-        "name": "minecraft:gunpowder",
-        "id": 332
-    },
-    {
-        "name": "minecraft:guster_banner_pattern",
-        "id": 603
-    },
-    {
-        "name": "minecraft:guster_pottery_sherd",
-        "id": 681
-    },
-    {
-        "name": "minecraft:hanging_roots",
-        "id": -319
-    },
-    {
-        "name": "minecraft:hard_black_stained_glass",
-        "id": -702
-    },
-    {
-        "name": "minecraft:hard_black_stained_glass_pane",
-        "id": -672
-    },
-    {
-        "name": "minecraft:hard_blue_stained_glass",
-        "id": -698
-    },
-    {
-        "name": "minecraft:hard_blue_stained_glass_pane",
-        "id": -668
-    },
-    {
-        "name": "minecraft:hard_brown_stained_glass",
-        "id": -699
-    },
-    {
-        "name": "minecraft:hard_brown_stained_glass_pane",
-        "id": -669
-    },
-    {
-        "name": "minecraft:hard_cyan_stained_glass",
-        "id": -696
-    },
-    {
-        "name": "minecraft:hard_cyan_stained_glass_pane",
-        "id": -666
-    },
-    {
-        "name": "minecraft:hard_glass",
-        "id": 253
-    },
-    {
-        "name": "minecraft:hard_glass_pane",
-        "id": 190
-    },
-    {
-        "name": "minecraft:hard_gray_stained_glass",
-        "id": -694
-    },
-    {
-        "name": "minecraft:hard_gray_stained_glass_pane",
-        "id": -664
-    },
-    {
-        "name": "minecraft:hard_green_stained_glass",
-        "id": -700
-    },
-    {
-        "name": "minecraft:hard_green_stained_glass_pane",
-        "id": -670
-    },
-    {
-        "name": "minecraft:hard_light_blue_stained_glass",
-        "id": -690
-    },
-    {
-        "name": "minecraft:hard_light_blue_stained_glass_pane",
-        "id": -660
-    },
-    {
-        "name": "minecraft:hard_light_gray_stained_glass",
-        "id": -695
-    },
-    {
-        "name": "minecraft:hard_light_gray_stained_glass_pane",
-        "id": -665
-    },
-    {
-        "name": "minecraft:hard_lime_stained_glass",
-        "id": -692
-    },
-    {
-        "name": "minecraft:hard_lime_stained_glass_pane",
-        "id": -662
-    },
-    {
-        "name": "minecraft:hard_magenta_stained_glass",
-        "id": -689
-    },
-    {
-        "name": "minecraft:hard_magenta_stained_glass_pane",
-        "id": -659
-    },
-    {
-        "name": "minecraft:hard_orange_stained_glass",
-        "id": -688
-    },
-    {
-        "name": "minecraft:hard_orange_stained_glass_pane",
-        "id": -658
-    },
-    {
-        "name": "minecraft:hard_pink_stained_glass",
-        "id": -693
-    },
-    {
-        "name": "minecraft:hard_pink_stained_glass_pane",
-        "id": -663
-    },
-    {
-        "name": "minecraft:hard_purple_stained_glass",
-        "id": -697
-    },
-    {
-        "name": "minecraft:hard_purple_stained_glass_pane",
-        "id": -667
-    },
-    {
-        "name": "minecraft:hard_red_stained_glass",
-        "id": -701
-    },
-    {
-        "name": "minecraft:hard_red_stained_glass_pane",
-        "id": -671
-    },
-    {
-        "name": "minecraft:hard_stained_glass",
-        "id": 740
-    },
-    {
-        "name": "minecraft:hard_stained_glass_pane",
-        "id": 741
-    },
-    {
-        "name": "minecraft:hard_white_stained_glass",
-        "id": 254
-    },
-    {
-        "name": "minecraft:hard_white_stained_glass_pane",
-        "id": 191
-    },
-    {
-        "name": "minecraft:hard_yellow_stained_glass",
-        "id": -691
-    },
-    {
-        "name": "minecraft:hard_yellow_stained_glass_pane",
-        "id": -661
-    },
-    {
-        "name": "minecraft:hardened_clay",
-        "id": 172
-    },
-    {
-        "name": "minecraft:hay_block",
-        "id": 170
-    },
-    {
-        "name": "minecraft:heart_of_the_sea",
-        "id": 584
-    },
-    {
-        "name": "minecraft:heart_pottery_sherd",
-        "id": 682
-    },
-    {
-        "name": "minecraft:heartbreak_pottery_sherd",
-        "id": 683
-    },
-    {
-        "name": "minecraft:heavy_core",
-        "id": -316
-    },
-    {
-        "name": "minecraft:heavy_weighted_pressure_plate",
-        "id": 148
-    },
-    {
-        "name": "minecraft:hoglin_spawn_egg",
-        "id": 503
-    },
-    {
-        "name": "minecraft:honey_block",
-        "id": -220
-    },
-    {
-        "name": "minecraft:honey_bottle",
-        "id": 607
-    },
-    {
-        "name": "minecraft:honeycomb",
-        "id": 606
-    },
-    {
-        "name": "minecraft:honeycomb_block",
-        "id": -221
-    },
-    {
-        "name": "minecraft:hopper",
-        "id": 540
-    },
-    {
-        "name": "minecraft:hopper_minecart",
-        "id": 539
-    },
-    {
-        "name": "minecraft:horn_coral",
-        "id": -584
-    },
-    {
-        "name": "minecraft:horn_coral_fan",
-        "id": -843
-    },
-    {
-        "name": "minecraft:horse_spawn_egg",
-        "id": 464
-    },
-    {
-        "name": "minecraft:host_armor_trim_smithing_template",
-        "id": 711
-    },
-    {
-        "name": "minecraft:howl_pottery_sherd",
-        "id": 684
-    },
-    {
-        "name": "minecraft:husk_spawn_egg",
-        "id": 470
-    },
-    {
-        "name": "minecraft:ice",
-        "id": 79
-    },
-    {
-        "name": "minecraft:ice_bomb",
-        "id": 610
-    },
-    {
-        "name": "minecraft:infested_deepslate",
-        "id": -454
-    },
-    {
-        "name": "minecraft:info_update",
-        "id": 248
-    },
-    {
-        "name": "minecraft:info_update2",
-        "id": 249
-    },
-    {
-        "name": "minecraft:ink_sac",
-        "id": 418
-    },
-    {
-        "name": "minecraft:invisible_bedrock",
-        "id": 95
-    },
-    {
-        "name": "minecraft:iron_axe",
-        "id": 301
-    },
-    {
-        "name": "minecraft:iron_bars",
-        "id": 101
-    },
-    {
-        "name": "minecraft:iron_block",
-        "id": 42
-    },
-    {
-        "name": "minecraft:iron_boots",
-        "id": 350
-    },
-    {
-        "name": "minecraft:iron_chestplate",
-        "id": 348
-    },
-    {
-        "name": "minecraft:iron_door",
-        "id": 376
-    },
-    {
-        "name": "minecraft:iron_golem_spawn_egg",
-        "id": 512
-    },
-    {
-        "name": "minecraft:iron_helmet",
-        "id": 347
-    },
-    {
-        "name": "minecraft:iron_hoe",
-        "id": 335
-    },
-    {
-        "name": "minecraft:iron_horse_armor",
-        "id": 544
-    },
-    {
-        "name": "minecraft:iron_ingot",
-        "id": 308
-    },
-    {
-        "name": "minecraft:iron_leggings",
-        "id": 349
-    },
-    {
-        "name": "minecraft:iron_nugget",
-        "id": 582
-    },
-    {
-        "name": "minecraft:iron_ore",
-        "id": 15
-    },
-    {
-        "name": "minecraft:iron_pickaxe",
-        "id": 300
-    },
-    {
-        "name": "minecraft:iron_shovel",
-        "id": 299
-    },
-    {
-        "name": "minecraft:iron_sword",
-        "id": 310
-    },
-    {
-        "name": "minecraft:iron_trapdoor",
-        "id": 167
-    },
-    {
-        "name": "minecraft:item.acacia_door",
-        "id": 196
-    },
-    {
-        "name": "minecraft:item.bed",
-        "id": 26
-    },
-    {
-        "name": "minecraft:item.beetroot",
-        "id": 244
-    },
-    {
-        "name": "minecraft:item.birch_door",
-        "id": 194
-    },
-    {
-        "name": "minecraft:item.brewing_stand",
-        "id": 117
-    },
-    {
-        "name": "minecraft:item.cake",
-        "id": 92
-    },
-    {
-        "name": "minecraft:item.camera",
-        "id": 242
-    },
-    {
-        "name": "minecraft:item.campfire",
-        "id": -209
-    },
-    {
-        "name": "minecraft:item.cauldron",
-        "id": 118
-    },
-    {
-        "name": "minecraft:item.chain",
-        "id": -286
-    },
-    {
-        "name": "minecraft:item.crimson_door",
-        "id": -244
-    },
-    {
-        "name": "minecraft:item.dark_oak_door",
-        "id": 197
-    },
-    {
-        "name": "minecraft:item.flower_pot",
-        "id": 140
-    },
-    {
-        "name": "minecraft:item.frame",
-        "id": 199
-    },
-    {
-        "name": "minecraft:item.glow_frame",
-        "id": -339
-    },
-    {
-        "name": "minecraft:item.hopper",
-        "id": 154
-    },
-    {
-        "name": "minecraft:item.iron_door",
-        "id": 71
-    },
-    {
-        "name": "minecraft:item.jungle_door",
-        "id": 195
-    },
-    {
-        "name": "minecraft:item.kelp",
-        "id": -138
-    },
-    {
-        "name": "minecraft:item.mangrove_door",
-        "id": -493
-    },
-    {
-        "name": "minecraft:item.nether_sprouts",
-        "id": -238
-    },
-    {
-        "name": "minecraft:item.nether_wart",
-        "id": 115
-    },
-    {
-        "name": "minecraft:item.reeds",
-        "id": 83
-    },
-    {
-        "name": "minecraft:item.skull",
-        "id": 144
-    },
-    {
-        "name": "minecraft:item.soul_campfire",
-        "id": -290
-    },
-    {
-        "name": "minecraft:item.spruce_door",
-        "id": 193
-    },
-    {
-        "name": "minecraft:item.warped_door",
-        "id": -245
-    },
-    {
-        "name": "minecraft:item.wheat",
-        "id": 59
-    },
-    {
-        "name": "minecraft:item.wooden_door",
-        "id": 64
-    },
-    {
-        "name": "minecraft:jigsaw",
-        "id": -211
-    },
-    {
-        "name": "minecraft:jukebox",
-        "id": 84
-    },
-    {
-        "name": "minecraft:jungle_boat",
-        "id": 382
-    },
-    {
-        "name": "minecraft:jungle_button",
-        "id": -143
-    },
-    {
-        "name": "minecraft:jungle_chest_boat",
-        "id": 655
-    },
-    {
-        "name": "minecraft:jungle_door",
-        "id": 568
-    },
-    {
-        "name": "minecraft:jungle_double_slab",
-        "id": -811
-    },
-    {
-        "name": "minecraft:jungle_fence",
-        "id": -578
-    },
-    {
-        "name": "minecraft:jungle_fence_gate",
-        "id": 185
-    },
-    {
-        "name": "minecraft:jungle_hanging_sign",
-        "id": -503
-    },
-    {
-        "name": "minecraft:jungle_leaves",
-        "id": -802
-    },
-    {
-        "name": "minecraft:jungle_log",
-        "id": -571
-    },
-    {
-        "name": "minecraft:jungle_planks",
-        "id": -741
-    },
-    {
-        "name": "minecraft:jungle_pressure_plate",
-        "id": -153
-    },
-    {
-        "name": "minecraft:jungle_sapling",
-        "id": -827
-    },
-    {
-        "name": "minecraft:jungle_sign",
-        "id": 591
-    },
-    {
-        "name": "minecraft:jungle_slab",
-        "id": -806
-    },
-    {
-        "name": "minecraft:jungle_stairs",
-        "id": 136
-    },
-    {
-        "name": "minecraft:jungle_standing_sign",
-        "id": -188
-    },
-    {
-        "name": "minecraft:jungle_trapdoor",
-        "id": -148
-    },
-    {
-        "name": "minecraft:jungle_wall_sign",
-        "id": -189
-    },
-    {
-        "name": "minecraft:jungle_wood",
-        "id": -816
-    },
-    {
-        "name": "minecraft:kelp",
-        "id": 387
-    },
-    {
-        "name": "minecraft:ladder",
-        "id": 65
-    },
-    {
-        "name": "minecraft:lantern",
-        "id": -208
-    },
-    {
-        "name": "minecraft:lapis_block",
-        "id": 22
-    },
-    {
-        "name": "minecraft:lapis_lazuli",
-        "id": 419
-    },
-    {
-        "name": "minecraft:lapis_ore",
-        "id": 21
-    },
-    {
-        "name": "minecraft:large_amethyst_bud",
-        "id": -330
-    },
-    {
-        "name": "minecraft:lava",
-        "id": 11
-    },
-    {
-        "name": "minecraft:lava_bucket",
-        "id": 367
-    },
-    {
-        "name": "minecraft:lead",
-        "id": 560
-    },
-    {
-        "name": "minecraft:leather",
-        "id": 386
-    },
-    {
-        "name": "minecraft:leather_boots",
-        "id": 342
-    },
-    {
-        "name": "minecraft:leather_chestplate",
-        "id": 340
-    },
-    {
-        "name": "minecraft:leather_helmet",
-        "id": 339
-    },
-    {
-        "name": "minecraft:leather_horse_armor",
-        "id": 543
-    },
-    {
-        "name": "minecraft:leather_leggings",
-        "id": 341
-    },
-    {
-        "name": "minecraft:leaves",
-        "id": 727
-    },
-    {
-        "name": "minecraft:leaves2",
-        "id": 728
-    },
-    {
-        "name": "minecraft:lectern",
-        "id": -194
-    },
-    {
-        "name": "minecraft:lever",
-        "id": 69
-    },
-    {
-        "name": "minecraft:light_block",
-        "id": -215
-    },
-    {
-        "name": "minecraft:light_blue_candle",
-        "id": -416
-    },
-    {
-        "name": "minecraft:light_blue_candle_cake",
-        "id": -433
-    },
-    {
-        "name": "minecraft:light_blue_carpet",
-        "id": -599
-    },
-    {
-        "name": "minecraft:light_blue_concrete",
-        "id": -630
-    },
-    {
-        "name": "minecraft:light_blue_concrete_powder",
-        "id": -711
-    },
-    {
-        "name": "minecraft:light_blue_dye",
-        "id": 412
-    },
-    {
-        "name": "minecraft:light_blue_glazed_terracotta",
-        "id": 223
-    },
-    {
-        "name": "minecraft:light_blue_shulker_box",
-        "id": -615
-    },
-    {
-        "name": "minecraft:light_blue_stained_glass",
-        "id": -675
-    },
-    {
-        "name": "minecraft:light_blue_stained_glass_pane",
-        "id": -645
-    },
-    {
-        "name": "minecraft:light_blue_terracotta",
-        "id": -726
-    },
-    {
-        "name": "minecraft:light_blue_wool",
-        "id": -562
-    },
-    {
-        "name": "minecraft:light_gray_candle",
-        "id": -421
-    },
-    {
-        "name": "minecraft:light_gray_candle_cake",
-        "id": -438
-    },
-    {
-        "name": "minecraft:light_gray_carpet",
-        "id": -604
-    },
-    {
-        "name": "minecraft:light_gray_concrete",
-        "id": -635
-    },
-    {
-        "name": "minecraft:light_gray_concrete_powder",
-        "id": -716
-    },
-    {
-        "name": "minecraft:light_gray_dye",
-        "id": 407
-    },
-    {
-        "name": "minecraft:light_gray_shulker_box",
-        "id": -620
-    },
-    {
-        "name": "minecraft:light_gray_stained_glass",
-        "id": -680
-    },
-    {
-        "name": "minecraft:light_gray_stained_glass_pane",
-        "id": -650
-    },
-    {
-        "name": "minecraft:light_gray_terracotta",
-        "id": -731
-    },
-    {
-        "name": "minecraft:light_gray_wool",
-        "id": -552
-    },
-    {
-        "name": "minecraft:light_weighted_pressure_plate",
-        "id": 147
-    },
-    {
-        "name": "minecraft:lightning_rod",
-        "id": -312
-    },
-    {
-        "name": "minecraft:lily_of_the_valley",
-        "id": -839
-    },
-    {
-        "name": "minecraft:lime_candle",
-        "id": -418
-    },
-    {
-        "name": "minecraft:lime_candle_cake",
-        "id": -435
-    },
-    {
-        "name": "minecraft:lime_carpet",
-        "id": -601
-    },
-    {
-        "name": "minecraft:lime_concrete",
-        "id": -632
-    },
-    {
-        "name": "minecraft:lime_concrete_powder",
-        "id": -713
-    },
-    {
-        "name": "minecraft:lime_dye",
-        "id": 410
-    },
-    {
-        "name": "minecraft:lime_glazed_terracotta",
-        "id": 225
-    },
-    {
-        "name": "minecraft:lime_shulker_box",
-        "id": -617
-    },
-    {
-        "name": "minecraft:lime_stained_glass",
-        "id": -677
-    },
-    {
-        "name": "minecraft:lime_stained_glass_pane",
-        "id": -647
-    },
-    {
-        "name": "minecraft:lime_terracotta",
-        "id": -728
-    },
-    {
-        "name": "minecraft:lime_wool",
-        "id": -559
-    },
-    {
-        "name": "minecraft:lingering_potion",
-        "id": 575
-    },
-    {
-        "name": "minecraft:lit_blast_furnace",
-        "id": -214
-    },
-    {
-        "name": "minecraft:lit_deepslate_redstone_ore",
-        "id": -404
-    },
-    {
-        "name": "minecraft:lit_furnace",
-        "id": 62
-    },
-    {
-        "name": "minecraft:lit_pumpkin",
-        "id": 91
-    },
-    {
-        "name": "minecraft:lit_redstone_lamp",
-        "id": 124
-    },
-    {
-        "name": "minecraft:lit_redstone_ore",
-        "id": 74
-    },
-    {
-        "name": "minecraft:lit_smoker",
-        "id": -199
-    },
-    {
-        "name": "minecraft:llama_spawn_egg",
-        "id": 480
-    },
-    {
-        "name": "minecraft:lodestone",
-        "id": -222
-    },
-    {
-        "name": "minecraft:lodestone_compass",
-        "id": 617
-    },
-    {
-        "name": "minecraft:log",
-        "id": 722
-    },
-    {
-        "name": "minecraft:log2",
-        "id": 733
-    },
-    {
-        "name": "minecraft:loom",
-        "id": -204
-    },
-    {
-        "name": "minecraft:mace",
-        "id": 323
-    },
-    {
-        "name": "minecraft:magenta_candle",
-        "id": -415
-    },
-    {
-        "name": "minecraft:magenta_candle_cake",
-        "id": -432
-    },
-    {
-        "name": "minecraft:magenta_carpet",
-        "id": -598
-    },
-    {
-        "name": "minecraft:magenta_concrete",
-        "id": -629
-    },
-    {
-        "name": "minecraft:magenta_concrete_powder",
-        "id": -710
-    },
-    {
-        "name": "minecraft:magenta_dye",
-        "id": 413
-    },
-    {
-        "name": "minecraft:magenta_glazed_terracotta",
-        "id": 222
-    },
-    {
-        "name": "minecraft:magenta_shulker_box",
-        "id": -614
-    },
-    {
-        "name": "minecraft:magenta_stained_glass",
-        "id": -674
-    },
-    {
-        "name": "minecraft:magenta_stained_glass_pane",
-        "id": -644
-    },
-    {
-        "name": "minecraft:magenta_terracotta",
-        "id": -725
-    },
-    {
-        "name": "minecraft:magenta_wool",
-        "id": -565
-    },
-    {
-        "name": "minecraft:magma",
-        "id": 213
-    },
-    {
-        "name": "minecraft:magma_cream",
-        "id": 436
-    },
-    {
-        "name": "minecraft:magma_cube_spawn_egg",
-        "id": 461
-    },
-    {
-        "name": "minecraft:mangrove_boat",
-        "id": 650
-    },
-    {
-        "name": "minecraft:mangrove_button",
-        "id": -487
-    },
-    {
-        "name": "minecraft:mangrove_chest_boat",
-        "id": 659
-    },
-    {
-        "name": "minecraft:mangrove_door",
-        "id": 648
-    },
-    {
-        "name": "minecraft:mangrove_double_slab",
-        "id": -499
-    },
-    {
-        "name": "minecraft:mangrove_fence",
-        "id": -491
-    },
-    {
-        "name": "minecraft:mangrove_fence_gate",
-        "id": -492
-    },
-    {
-        "name": "minecraft:mangrove_hanging_sign",
-        "id": -508
-    },
-    {
-        "name": "minecraft:mangrove_leaves",
-        "id": -472
-    },
-    {
-        "name": "minecraft:mangrove_log",
-        "id": -484
-    },
-    {
-        "name": "minecraft:mangrove_planks",
-        "id": -486
-    },
-    {
-        "name": "minecraft:mangrove_pressure_plate",
-        "id": -490
-    },
-    {
-        "name": "minecraft:mangrove_propagule",
-        "id": -474
-    },
-    {
-        "name": "minecraft:mangrove_roots",
-        "id": -482
-    },
-    {
-        "name": "minecraft:mangrove_sign",
-        "id": 649
-    },
-    {
-        "name": "minecraft:mangrove_slab",
-        "id": -489
-    },
-    {
-        "name": "minecraft:mangrove_stairs",
-        "id": -488
-    },
-    {
-        "name": "minecraft:mangrove_standing_sign",
-        "id": -494
-    },
-    {
-        "name": "minecraft:mangrove_trapdoor",
-        "id": -496
-    },
-    {
-        "name": "minecraft:mangrove_wall_sign",
-        "id": -495
-    },
-    {
-        "name": "minecraft:mangrove_wood",
-        "id": -497
-    },
-    {
-        "name": "minecraft:medicine",
-        "id": 614
-    },
-    {
-        "name": "minecraft:medium_amethyst_bud",
-        "id": -331
-    },
-    {
-        "name": "minecraft:melon_block",
-        "id": 103
-    },
-    {
-        "name": "minecraft:melon_seeds",
-        "id": 294
-    },
-    {
-        "name": "minecraft:melon_slice",
-        "id": 273
-    },
-    {
-        "name": "minecraft:melon_stem",
-        "id": 105
-    },
-    {
-        "name": "minecraft:milk_bucket",
-        "id": 365
-    },
-    {
-        "name": "minecraft:minecart",
-        "id": 374
-    },
-    {
-        "name": "minecraft:miner_pottery_sherd",
-        "id": 685
-    },
-    {
-        "name": "minecraft:mob_spawner",
-        "id": 52
-    },
-    {
-        "name": "minecraft:mojang_banner_pattern",
-        "id": 597
-    },
-    {
-        "name": "minecraft:monster_egg",
-        "id": 97
-    },
-    {
-        "name": "minecraft:mooshroom_spawn_egg",
-        "id": 446
-    },
-    {
-        "name": "minecraft:moss_block",
-        "id": -320
-    },
-    {
-        "name": "minecraft:moss_carpet",
-        "id": -335
-    },
-    {
-        "name": "minecraft:mossy_cobblestone",
-        "id": 48
-    },
-    {
-        "name": "minecraft:mossy_cobblestone_stairs",
-        "id": -179
-    },
-    {
-        "name": "minecraft:mossy_stone_brick_stairs",
-        "id": -175
-    },
-    {
-        "name": "minecraft:mourner_pottery_sherd",
-        "id": 686
-    },
-    {
-        "name": "minecraft:moving_block",
-        "id": 250
-    },
-    {
-        "name": "minecraft:mud",
-        "id": -473
-    },
-    {
-        "name": "minecraft:mud_brick_double_slab",
-        "id": -479
-    },
-    {
-        "name": "minecraft:mud_brick_slab",
-        "id": -478
-    },
-    {
-        "name": "minecraft:mud_brick_stairs",
-        "id": -480
-    },
-    {
-        "name": "minecraft:mud_brick_wall",
-        "id": -481
-    },
-    {
-        "name": "minecraft:mud_bricks",
-        "id": -475
-    },
-    {
-        "name": "minecraft:muddy_mangrove_roots",
-        "id": -483
-    },
-    {
-        "name": "minecraft:mule_spawn_egg",
-        "id": 473
-    },
-    {
-        "name": "minecraft:mushroom_stew",
-        "id": 261
-    },
-    {
-        "name": "minecraft:music_disc_11",
-        "id": 557
-    },
-    {
-        "name": "minecraft:music_disc_13",
-        "id": 547
-    },
-    {
-        "name": "minecraft:music_disc_5",
-        "id": 651
-    },
-    {
-        "name": "minecraft:music_disc_blocks",
-        "id": 549
-    },
-    {
-        "name": "minecraft:music_disc_cat",
-        "id": 548
-    },
-    {
-        "name": "minecraft:music_disc_chirp",
-        "id": 550
-    },
-    {
-        "name": "minecraft:music_disc_far",
-        "id": 551
-    },
-    {
-        "name": "minecraft:music_disc_mall",
-        "id": 552
-    },
-    {
-        "name": "minecraft:music_disc_mellohi",
-        "id": 553
-    },
-    {
-        "name": "minecraft:music_disc_otherside",
-        "id": 641
-    },
-    {
-        "name": "minecraft:music_disc_pigstep",
-        "id": 635
-    },
-    {
-        "name": "minecraft:music_disc_relic",
-        "id": 714
-    },
-    {
-        "name": "minecraft:music_disc_stal",
-        "id": 554
-    },
-    {
-        "name": "minecraft:music_disc_strad",
-        "id": 555
-    },
-    {
-        "name": "minecraft:music_disc_wait",
-        "id": 558
-    },
-    {
-        "name": "minecraft:music_disc_ward",
-        "id": 556
-    },
-    {
-        "name": "minecraft:mutton",
-        "id": 563
-    },
-    {
-        "name": "minecraft:mycelium",
-        "id": 110
-    },
-    {
-        "name": "minecraft:name_tag",
-        "id": 561
-    },
-    {
-        "name": "minecraft:nautilus_shell",
-        "id": 583
-    },
-    {
-        "name": "minecraft:nether_brick",
-        "id": 112
-    },
-    {
-        "name": "minecraft:nether_brick_fence",
-        "id": 113
-    },
-    {
-        "name": "minecraft:nether_brick_stairs",
-        "id": 114
-    },
-    {
-        "name": "minecraft:nether_gold_ore",
-        "id": -288
-    },
-    {
-        "name": "minecraft:nether_sprouts",
-        "id": 636
-    },
-    {
-        "name": "minecraft:nether_star",
-        "id": 531
-    },
-    {
-        "name": "minecraft:nether_wart",
-        "id": 295
-    },
-    {
-        "name": "minecraft:nether_wart_block",
-        "id": 214
-    },
-    {
-        "name": "minecraft:netherbrick",
-        "id": 536
-    },
-    {
-        "name": "minecraft:netherite_axe",
-        "id": 621
-    },
-    {
-        "name": "minecraft:netherite_block",
-        "id": -270
-    },
-    {
-        "name": "minecraft:netherite_boots",
-        "id": 627
-    },
-    {
-        "name": "minecraft:netherite_chestplate",
-        "id": 625
-    },
-    {
-        "name": "minecraft:netherite_helmet",
-        "id": 624
-    },
-    {
-        "name": "minecraft:netherite_hoe",
-        "id": 622
-    },
-    {
-        "name": "minecraft:netherite_ingot",
-        "id": 623
-    },
-    {
-        "name": "minecraft:netherite_leggings",
-        "id": 626
-    },
-    {
-        "name": "minecraft:netherite_pickaxe",
-        "id": 620
-    },
-    {
-        "name": "minecraft:netherite_scrap",
-        "id": 628
-    },
-    {
-        "name": "minecraft:netherite_shovel",
-        "id": 619
-    },
-    {
-        "name": "minecraft:netherite_sword",
-        "id": 618
-    },
-    {
-        "name": "minecraft:netherite_upgrade_smithing_template",
-        "id": 695
-    },
-    {
-        "name": "minecraft:netherrack",
-        "id": 87
-    },
-    {
-        "name": "minecraft:netherreactor",
-        "id": 247
-    },
-    {
-        "name": "minecraft:normal_stone_stairs",
-        "id": -180
-    },
-    {
-        "name": "minecraft:noteblock",
-        "id": 25
-    },
-    {
-        "name": "minecraft:npc_spawn_egg",
-        "id": 477
-    },
-    {
-        "name": "minecraft:oak_boat",
-        "id": 380
-    },
-    {
-        "name": "minecraft:oak_chest_boat",
-        "id": 653
-    },
-    {
-        "name": "minecraft:oak_double_slab",
-        "id": 157
-    },
-    {
-        "name": "minecraft:oak_fence",
-        "id": 85
-    },
-    {
-        "name": "minecraft:oak_hanging_sign",
-        "id": -500
-    },
-    {
-        "name": "minecraft:oak_leaves",
-        "id": 18
-    },
-    {
-        "name": "minecraft:oak_log",
-        "id": 17
-    },
-    {
-        "name": "minecraft:oak_planks",
-        "id": 5
-    },
-    {
-        "name": "minecraft:oak_sapling",
-        "id": 6
-    },
-    {
-        "name": "minecraft:oak_sign",
-        "id": 362
-    },
-    {
-        "name": "minecraft:oak_slab",
-        "id": 158
-    },
-    {
-        "name": "minecraft:oak_stairs",
-        "id": 53
-    },
-    {
-        "name": "minecraft:oak_wood",
-        "id": -212
-    },
-    {
-        "name": "minecraft:observer",
-        "id": 251
-    },
-    {
-        "name": "minecraft:obsidian",
-        "id": 49
-    },
-    {
-        "name": "minecraft:ocelot_spawn_egg",
-        "id": 457
-    },
-    {
-        "name": "minecraft:ochre_froglight",
-        "id": -471
-    },
-    {
-        "name": "minecraft:orange_candle",
-        "id": -414
-    },
-    {
-        "name": "minecraft:orange_candle_cake",
-        "id": -431
-    },
-    {
-        "name": "minecraft:orange_carpet",
-        "id": -597
-    },
-    {
-        "name": "minecraft:orange_concrete",
-        "id": -628
-    },
-    {
-        "name": "minecraft:orange_concrete_powder",
-        "id": -709
-    },
-    {
-        "name": "minecraft:orange_dye",
-        "id": 414
-    },
-    {
-        "name": "minecraft:orange_glazed_terracotta",
-        "id": 221
-    },
-    {
-        "name": "minecraft:orange_shulker_box",
-        "id": -613
-    },
-    {
-        "name": "minecraft:orange_stained_glass",
-        "id": -673
-    },
-    {
-        "name": "minecraft:orange_stained_glass_pane",
-        "id": -643
-    },
-    {
-        "name": "minecraft:orange_terracotta",
-        "id": -724
-    },
-    {
-        "name": "minecraft:orange_tulip",
-        "id": -834
-    },
-    {
-        "name": "minecraft:orange_wool",
-        "id": -557
-    },
-    {
-        "name": "minecraft:oxeye_daisy",
-        "id": -837
-    },
-    {
-        "name": "minecraft:oxidized_chiseled_copper",
-        "id": -763
-    },
-    {
-        "name": "minecraft:oxidized_copper",
-        "id": -343
-    },
-    {
-        "name": "minecraft:oxidized_copper_bulb",
-        "id": -779
-    },
-    {
-        "name": "minecraft:oxidized_copper_door",
-        "id": -787
-    },
-    {
-        "name": "minecraft:oxidized_copper_grate",
-        "id": -771
-    },
-    {
-        "name": "minecraft:oxidized_copper_trapdoor",
-        "id": -795
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper",
-        "id": -350
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper_slab",
-        "id": -364
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper_stairs",
-        "id": -357
-    },
-    {
-        "name": "minecraft:oxidized_double_cut_copper_slab",
-        "id": -371
-    },
-    {
-        "name": "minecraft:packed_ice",
-        "id": 174
-    },
-    {
-        "name": "minecraft:packed_mud",
-        "id": -477
-    },
-    {
-        "name": "minecraft:painting",
-        "id": 361
-    },
-    {
-        "name": "minecraft:panda_spawn_egg",
-        "id": 496
-    },
-    {
-        "name": "minecraft:paper",
-        "id": 391
-    },
-    {
-        "name": "minecraft:parrot_spawn_egg",
-        "id": 485
-    },
-    {
-        "name": "minecraft:pearlescent_froglight",
-        "id": -469
-    },
-    {
-        "name": "minecraft:phantom_membrane",
-        "id": 587
-    },
-    {
-        "name": "minecraft:phantom_spawn_egg",
-        "id": 493
-    },
-    {
-        "name": "minecraft:pig_spawn_egg",
-        "id": 443
-    },
-    {
-        "name": "minecraft:piglin_banner_pattern",
-        "id": 600
-    },
-    {
-        "name": "minecraft:piglin_brute_spawn_egg",
-        "id": 506
-    },
-    {
-        "name": "minecraft:piglin_spawn_egg",
-        "id": 504
-    },
-    {
-        "name": "minecraft:pillager_spawn_egg",
-        "id": 498
-    },
-    {
-        "name": "minecraft:pink_candle",
-        "id": -419
-    },
-    {
-        "name": "minecraft:pink_candle_cake",
-        "id": -436
-    },
-    {
-        "name": "minecraft:pink_carpet",
-        "id": -602
-    },
-    {
-        "name": "minecraft:pink_concrete",
-        "id": -633
-    },
-    {
-        "name": "minecraft:pink_concrete_powder",
-        "id": -714
-    },
-    {
-        "name": "minecraft:pink_dye",
-        "id": 409
-    },
-    {
-        "name": "minecraft:pink_glazed_terracotta",
-        "id": 226
-    },
-    {
-        "name": "minecraft:pink_petals",
-        "id": -549
-    },
-    {
-        "name": "minecraft:pink_shulker_box",
-        "id": -618
-    },
-    {
-        "name": "minecraft:pink_stained_glass",
-        "id": -678
-    },
-    {
-        "name": "minecraft:pink_stained_glass_pane",
-        "id": -648
-    },
-    {
-        "name": "minecraft:pink_terracotta",
-        "id": -729
-    },
-    {
-        "name": "minecraft:pink_tulip",
-        "id": -836
-    },
-    {
-        "name": "minecraft:pink_wool",
-        "id": -566
-    },
-    {
-        "name": "minecraft:piston",
-        "id": 33
-    },
-    {
-        "name": "minecraft:piston_arm_collision",
-        "id": 34
-    },
-    {
-        "name": "minecraft:pitcher_crop",
-        "id": -574
-    },
-    {
-        "name": "minecraft:pitcher_plant",
-        "id": -612
-    },
-    {
-        "name": "minecraft:pitcher_pod",
-        "id": 298
-    },
-    {
-        "name": "minecraft:planks",
-        "id": 731
-    },
-    {
-        "name": "minecraft:plenty_pottery_sherd",
-        "id": 687
-    },
-    {
-        "name": "minecraft:podzol",
-        "id": 243
-    },
-    {
-        "name": "minecraft:pointed_dripstone",
-        "id": -308
-    },
-    {
-        "name": "minecraft:poisonous_potato",
-        "id": 283
-    },
-    {
-        "name": "minecraft:polar_bear_spawn_egg",
-        "id": 479
-    },
-    {
-        "name": "minecraft:polished_andesite",
-        "id": -595
-    },
-    {
-        "name": "minecraft:polished_andesite_stairs",
-        "id": -174
-    },
-    {
-        "name": "minecraft:polished_basalt",
-        "id": -235
-    },
-    {
-        "name": "minecraft:polished_blackstone",
-        "id": -291
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_double_slab",
-        "id": -285
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_slab",
-        "id": -284
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_stairs",
-        "id": -275
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_wall",
-        "id": -278
-    },
-    {
-        "name": "minecraft:polished_blackstone_bricks",
-        "id": -274
-    },
-    {
-        "name": "minecraft:polished_blackstone_button",
-        "id": -296
-    },
-    {
-        "name": "minecraft:polished_blackstone_double_slab",
-        "id": -294
-    },
-    {
-        "name": "minecraft:polished_blackstone_pressure_plate",
-        "id": -295
-    },
-    {
-        "name": "minecraft:polished_blackstone_slab",
-        "id": -293
-    },
-    {
-        "name": "minecraft:polished_blackstone_stairs",
-        "id": -292
-    },
-    {
-        "name": "minecraft:polished_blackstone_wall",
-        "id": -297
-    },
-    {
-        "name": "minecraft:polished_deepslate",
-        "id": -383
-    },
-    {
-        "name": "minecraft:polished_deepslate_double_slab",
-        "id": -397
-    },
-    {
-        "name": "minecraft:polished_deepslate_slab",
-        "id": -384
-    },
-    {
-        "name": "minecraft:polished_deepslate_stairs",
-        "id": -385
-    },
-    {
-        "name": "minecraft:polished_deepslate_wall",
-        "id": -386
-    },
-    {
-        "name": "minecraft:polished_diorite",
-        "id": -593
-    },
-    {
-        "name": "minecraft:polished_diorite_stairs",
-        "id": -173
-    },
-    {
-        "name": "minecraft:polished_granite",
-        "id": -591
-    },
-    {
-        "name": "minecraft:polished_granite_stairs",
-        "id": -172
-    },
-    {
-        "name": "minecraft:polished_tuff",
-        "id": -748
-    },
-    {
-        "name": "minecraft:polished_tuff_double_slab",
-        "id": -750
-    },
-    {
-        "name": "minecraft:polished_tuff_slab",
-        "id": -749
-    },
-    {
-        "name": "minecraft:polished_tuff_stairs",
-        "id": -751
-    },
-    {
-        "name": "minecraft:polished_tuff_wall",
-        "id": -752
-    },
-    {
-        "name": "minecraft:popped_chorus_fruit",
-        "id": 572
-    },
-    {
-        "name": "minecraft:poppy",
-        "id": 38
-    },
-    {
-        "name": "minecraft:porkchop",
-        "id": 263
-    },
-    {
-        "name": "minecraft:portal",
-        "id": 90
-    },
-    {
-        "name": "minecraft:potato",
-        "id": 281
-    },
-    {
-        "name": "minecraft:potatoes",
-        "id": 142
-    },
-    {
-        "name": "minecraft:potion",
-        "id": 432
-    },
-    {
-        "name": "minecraft:powder_snow",
-        "id": -306
-    },
-    {
-        "name": "minecraft:powder_snow_bucket",
-        "id": 372
-    },
-    {
-        "name": "minecraft:powered_comparator",
-        "id": 150
-    },
-    {
-        "name": "minecraft:powered_repeater",
-        "id": 94
-    },
-    {
-        "name": "minecraft:prismarine",
-        "id": 168
-    },
-    {
-        "name": "minecraft:prismarine_bricks_stairs",
-        "id": -4
-    },
-    {
-        "name": "minecraft:prismarine_crystals",
-        "id": 562
-    },
-    {
-        "name": "minecraft:prismarine_shard",
-        "id": 578
-    },
-    {
-        "name": "minecraft:prismarine_stairs",
-        "id": -2
-    },
-    {
-        "name": "minecraft:prize_pottery_sherd",
-        "id": 688
-    },
-    {
-        "name": "minecraft:pufferfish",
-        "id": 268
-    },
-    {
-        "name": "minecraft:pufferfish_bucket",
-        "id": 371
-    },
-    {
-        "name": "minecraft:pufferfish_spawn_egg",
-        "id": 488
-    },
-    {
-        "name": "minecraft:pumpkin",
-        "id": 86
-    },
-    {
-        "name": "minecraft:pumpkin_pie",
-        "id": 285
-    },
-    {
-        "name": "minecraft:pumpkin_seeds",
-        "id": 293
-    },
-    {
-        "name": "minecraft:pumpkin_stem",
-        "id": 104
-    },
-    {
-        "name": "minecraft:purple_candle",
-        "id": -423
-    },
-    {
-        "name": "minecraft:purple_candle_cake",
-        "id": -440
-    },
-    {
-        "name": "minecraft:purple_carpet",
-        "id": -606
-    },
-    {
-        "name": "minecraft:purple_concrete",
-        "id": -637
-    },
-    {
-        "name": "minecraft:purple_concrete_powder",
-        "id": -718
-    },
-    {
-        "name": "minecraft:purple_dye",
-        "id": 405
-    },
-    {
-        "name": "minecraft:purple_glazed_terracotta",
-        "id": 219
-    },
-    {
-        "name": "minecraft:purple_shulker_box",
-        "id": -622
-    },
-    {
-        "name": "minecraft:purple_stained_glass",
-        "id": -682
-    },
-    {
-        "name": "minecraft:purple_stained_glass_pane",
-        "id": -652
-    },
-    {
-        "name": "minecraft:purple_terracotta",
-        "id": -733
-    },
-    {
-        "name": "minecraft:purple_wool",
-        "id": -564
-    },
-    {
-        "name": "minecraft:purpur_block",
-        "id": 201
-    },
-    {
-        "name": "minecraft:purpur_stairs",
-        "id": 203
-    },
-    {
-        "name": "minecraft:quartz",
-        "id": 537
-    },
-    {
-        "name": "minecraft:quartz_block",
-        "id": 155
-    },
-    {
-        "name": "minecraft:quartz_bricks",
-        "id": -304
-    },
-    {
-        "name": "minecraft:quartz_ore",
-        "id": 153
-    },
-    {
-        "name": "minecraft:quartz_stairs",
-        "id": 156
-    },
-    {
-        "name": "minecraft:rabbit",
-        "id": 289
-    },
-    {
-        "name": "minecraft:rabbit_foot",
-        "id": 541
-    },
-    {
-        "name": "minecraft:rabbit_hide",
-        "id": 542
-    },
-    {
-        "name": "minecraft:rabbit_spawn_egg",
-        "id": 465
-    },
-    {
-        "name": "minecraft:rabbit_stew",
-        "id": 291
-    },
-    {
-        "name": "minecraft:rail",
-        "id": 66
-    },
-    {
-        "name": "minecraft:raiser_armor_trim_smithing_template",
-        "id": 709
-    },
-    {
-        "name": "minecraft:rapid_fertilizer",
-        "id": 612
-    },
-    {
-        "name": "minecraft:ravager_spawn_egg",
-        "id": 500
-    },
-    {
-        "name": "minecraft:raw_copper",
-        "id": 520
-    },
-    {
-        "name": "minecraft:raw_copper_block",
-        "id": -452
-    },
-    {
-        "name": "minecraft:raw_gold",
-        "id": 519
-    },
-    {
-        "name": "minecraft:raw_gold_block",
-        "id": -453
-    },
-    {
-        "name": "minecraft:raw_iron",
-        "id": 518
-    },
-    {
-        "name": "minecraft:raw_iron_block",
-        "id": -451
-    },
-    {
-        "name": "minecraft:recovery_compass",
-        "id": 661
-    },
-    {
-        "name": "minecraft:red_candle",
-        "id": -427
-    },
-    {
-        "name": "minecraft:red_candle_cake",
-        "id": -444
-    },
-    {
-        "name": "minecraft:red_carpet",
-        "id": -610
-    },
-    {
-        "name": "minecraft:red_concrete",
-        "id": -641
-    },
-    {
-        "name": "minecraft:red_concrete_powder",
-        "id": -722
-    },
-    {
-        "name": "minecraft:red_dye",
-        "id": 401
-    },
-    {
-        "name": "minecraft:red_flower",
-        "id": 730
-    },
-    {
-        "name": "minecraft:red_glazed_terracotta",
-        "id": 234
-    },
-    {
-        "name": "minecraft:red_mushroom",
-        "id": 40
-    },
-    {
-        "name": "minecraft:red_mushroom_block",
-        "id": 100
-    },
-    {
-        "name": "minecraft:red_nether_brick",
-        "id": 215
-    },
-    {
-        "name": "minecraft:red_nether_brick_stairs",
-        "id": -184
-    },
-    {
-        "name": "minecraft:red_sandstone",
-        "id": 179
-    },
-    {
-        "name": "minecraft:red_sandstone_stairs",
-        "id": 180
-    },
-    {
-        "name": "minecraft:red_shulker_box",
-        "id": -626
-    },
-    {
-        "name": "minecraft:red_stained_glass",
-        "id": -686
-    },
-    {
-        "name": "minecraft:red_stained_glass_pane",
-        "id": -656
-    },
-    {
-        "name": "minecraft:red_terracotta",
-        "id": -737
-    },
-    {
-        "name": "minecraft:red_tulip",
-        "id": -833
-    },
-    {
-        "name": "minecraft:red_wool",
-        "id": -556
-    },
-    {
-        "name": "minecraft:redstone",
-        "id": 377
-    },
-    {
-        "name": "minecraft:redstone_block",
-        "id": 152
-    },
-    {
-        "name": "minecraft:redstone_lamp",
-        "id": 123
-    },
-    {
-        "name": "minecraft:redstone_ore",
-        "id": 73
-    },
-    {
-        "name": "minecraft:redstone_torch",
-        "id": 76
-    },
-    {
-        "name": "minecraft:redstone_wire",
-        "id": 55
-    },
-    {
-        "name": "minecraft:reinforced_deepslate",
-        "id": -466
-    },
-    {
-        "name": "minecraft:repeater",
-        "id": 424
-    },
-    {
-        "name": "minecraft:repeating_command_block",
-        "id": 188
-    },
-    {
-        "name": "minecraft:reserved6",
-        "id": 255
-    },
-    {
-        "name": "minecraft:respawn_anchor",
-        "id": -272
-    },
-    {
-        "name": "minecraft:rib_armor_trim_smithing_template",
-        "id": 705
-    },
-    {
-        "name": "minecraft:rotten_flesh",
-        "id": 278
-    },
-    {
-        "name": "minecraft:saddle",
-        "id": 375
-    },
-    {
-        "name": "minecraft:salmon",
-        "id": 266
-    },
-    {
-        "name": "minecraft:salmon_bucket",
-        "id": 369
-    },
-    {
-        "name": "minecraft:salmon_spawn_egg",
-        "id": 489
-    },
-    {
-        "name": "minecraft:sand",
-        "id": 12
-    },
-    {
-        "name": "minecraft:sandstone",
-        "id": 24
-    },
-    {
-        "name": "minecraft:sandstone_stairs",
-        "id": 128
-    },
-    {
-        "name": "minecraft:sapling",
-        "id": 726
-    },
-    {
-        "name": "minecraft:scaffolding",
-        "id": -165
-    },
-    {
-        "name": "minecraft:scrape_pottery_sherd",
-        "id": 689
-    },
-    {
-        "name": "minecraft:sculk",
-        "id": -458
-    },
-    {
-        "name": "minecraft:sculk_catalyst",
-        "id": -460
-    },
-    {
-        "name": "minecraft:sculk_sensor",
-        "id": -307
-    },
-    {
-        "name": "minecraft:sculk_shrieker",
-        "id": -461
-    },
-    {
-        "name": "minecraft:sculk_vein",
-        "id": -459
-    },
-    {
-        "name": "minecraft:sea_lantern",
-        "id": 169
-    },
-    {
-        "name": "minecraft:sea_pickle",
-        "id": -156
-    },
-    {
-        "name": "minecraft:seagrass",
-        "id": -130
-    },
-    {
-        "name": "minecraft:sentry_armor_trim_smithing_template",
-        "id": 696
-    },
-    {
-        "name": "minecraft:shaper_armor_trim_smithing_template",
-        "id": 710
-    },
-    {
-        "name": "minecraft:sheaf_pottery_sherd",
-        "id": 690
-    },
-    {
-        "name": "minecraft:shears",
-        "id": 426
-    },
-    {
-        "name": "minecraft:sheep_spawn_egg",
-        "id": 444
-    },
-    {
-        "name": "minecraft:shelter_pottery_sherd",
-        "id": 691
-    },
-    {
-        "name": "minecraft:shield",
-        "id": 359
-    },
-    {
-        "name": "minecraft:shroomlight",
-        "id": -230
-    },
-    {
-        "name": "minecraft:shulker_box",
-        "id": 738
-    },
-    {
-        "name": "minecraft:shulker_shell",
-        "id": 579
-    },
-    {
-        "name": "minecraft:shulker_spawn_egg",
-        "id": 476
-    },
-    {
-        "name": "minecraft:silence_armor_trim_smithing_template",
-        "id": 707
-    },
-    {
-        "name": "minecraft:silver_glazed_terracotta",
-        "id": 228
-    },
-    {
-        "name": "minecraft:silverfish_spawn_egg",
-        "id": 449
-    },
-    {
-        "name": "minecraft:skeleton_horse_spawn_egg",
-        "id": 474
-    },
-    {
-        "name": "minecraft:skeleton_spawn_egg",
-        "id": 450
-    },
-    {
-        "name": "minecraft:skull",
-        "id": 529
-    },
-    {
-        "name": "minecraft:skull_banner_pattern",
-        "id": 596
-    },
-    {
-        "name": "minecraft:skull_pottery_sherd",
-        "id": 692
-    },
-    {
-        "name": "minecraft:slime",
-        "id": 165
-    },
-    {
-        "name": "minecraft:slime_ball",
-        "id": 393
-    },
-    {
-        "name": "minecraft:slime_spawn_egg",
-        "id": 451
-    },
-    {
-        "name": "minecraft:small_amethyst_bud",
-        "id": -332
-    },
-    {
-        "name": "minecraft:small_dripleaf_block",
-        "id": -336
-    },
-    {
-        "name": "minecraft:smithing_table",
-        "id": -202
-    },
-    {
-        "name": "minecraft:smoker",
-        "id": -198
-    },
-    {
-        "name": "minecraft:smooth_basalt",
-        "id": -377
-    },
-    {
-        "name": "minecraft:smooth_quartz_stairs",
-        "id": -185
-    },
-    {
-        "name": "minecraft:smooth_red_sandstone_stairs",
-        "id": -176
-    },
-    {
-        "name": "minecraft:smooth_sandstone_stairs",
-        "id": -177
-    },
-    {
-        "name": "minecraft:smooth_stone",
-        "id": -183
-    },
-    {
-        "name": "minecraft:sniffer_egg",
-        "id": -596
-    },
-    {
-        "name": "minecraft:sniffer_spawn_egg",
-        "id": 507
-    },
-    {
-        "name": "minecraft:snort_pottery_sherd",
-        "id": 693
-    },
-    {
-        "name": "minecraft:snout_armor_trim_smithing_template",
-        "id": 704
-    },
-    {
-        "name": "minecraft:snow",
-        "id": 80
-    },
-    {
-        "name": "minecraft:snow_golem_spawn_egg",
-        "id": 513
-    },
-    {
-        "name": "minecraft:snow_layer",
-        "id": 78
-    },
-    {
-        "name": "minecraft:snowball",
-        "id": 378
-    },
-    {
-        "name": "minecraft:soul_campfire",
-        "id": 637
-    },
-    {
-        "name": "minecraft:soul_fire",
-        "id": -237
-    },
-    {
-        "name": "minecraft:soul_lantern",
-        "id": -269
-    },
-    {
-        "name": "minecraft:soul_sand",
-        "id": 88
-    },
-    {
-        "name": "minecraft:soul_soil",
-        "id": -236
-    },
-    {
-        "name": "minecraft:soul_torch",
-        "id": -268
-    },
-    {
-        "name": "minecraft:sparkler",
-        "id": 615
-    },
-    {
-        "name": "minecraft:spawn_egg",
-        "id": 745
-    },
-    {
-        "name": "minecraft:spider_eye",
-        "id": 279
-    },
-    {
-        "name": "minecraft:spider_spawn_egg",
-        "id": 452
-    },
-    {
-        "name": "minecraft:spire_armor_trim_smithing_template",
-        "id": 706
-    },
-    {
-        "name": "minecraft:splash_potion",
-        "id": 574
-    },
-    {
-        "name": "minecraft:sponge",
-        "id": 19
-    },
-    {
-        "name": "minecraft:spore_blossom",
-        "id": -321
-    },
-    {
-        "name": "minecraft:spruce_boat",
-        "id": 383
-    },
-    {
-        "name": "minecraft:spruce_button",
-        "id": -144
-    },
-    {
-        "name": "minecraft:spruce_chest_boat",
-        "id": 656
-    },
-    {
-        "name": "minecraft:spruce_door",
-        "id": 566
-    },
-    {
-        "name": "minecraft:spruce_double_slab",
-        "id": -809
-    },
-    {
-        "name": "minecraft:spruce_fence",
-        "id": -579
-    },
-    {
-        "name": "minecraft:spruce_fence_gate",
-        "id": 183
-    },
-    {
-        "name": "minecraft:spruce_hanging_sign",
-        "id": -501
-    },
-    {
-        "name": "minecraft:spruce_leaves",
-        "id": -800
-    },
-    {
-        "name": "minecraft:spruce_log",
-        "id": -569
-    },
-    {
-        "name": "minecraft:spruce_planks",
-        "id": -739
-    },
-    {
-        "name": "minecraft:spruce_pressure_plate",
-        "id": -154
-    },
-    {
-        "name": "minecraft:spruce_sapling",
-        "id": -825
-    },
-    {
-        "name": "minecraft:spruce_sign",
-        "id": 589
-    },
-    {
-        "name": "minecraft:spruce_slab",
-        "id": -804
-    },
-    {
-        "name": "minecraft:spruce_stairs",
-        "id": 134
-    },
-    {
-        "name": "minecraft:spruce_standing_sign",
-        "id": -181
-    },
-    {
-        "name": "minecraft:spruce_trapdoor",
-        "id": -149
-    },
-    {
-        "name": "minecraft:spruce_wall_sign",
-        "id": -182
-    },
-    {
-        "name": "minecraft:spruce_wood",
-        "id": -814
-    },
-    {
-        "name": "minecraft:spyglass",
-        "id": 640
-    },
-    {
-        "name": "minecraft:squid_spawn_egg",
-        "id": 456
-    },
-    {
-        "name": "minecraft:stained_glass",
-        "id": 736
-    },
-    {
-        "name": "minecraft:stained_glass_pane",
-        "id": 737
-    },
-    {
-        "name": "minecraft:stained_hardened_clay",
-        "id": 715
-    },
-    {
-        "name": "minecraft:standing_banner",
-        "id": 176
-    },
-    {
-        "name": "minecraft:standing_sign",
-        "id": 63
-    },
-    {
-        "name": "minecraft:stick",
-        "id": 324
-    },
-    {
-        "name": "minecraft:sticky_piston",
-        "id": 29
-    },
-    {
-        "name": "minecraft:sticky_piston_arm_collision",
-        "id": -217
-    },
-    {
-        "name": "minecraft:stone",
-        "id": 1
-    },
-    {
-        "name": "minecraft:stone_axe",
-        "id": 318
-    },
-    {
-        "name": "minecraft:stone_block_slab",
-        "id": 44
-    },
-    {
-        "name": "minecraft:stone_block_slab2",
-        "id": 182
-    },
-    {
-        "name": "minecraft:stone_block_slab3",
-        "id": -162
-    },
-    {
-        "name": "minecraft:stone_block_slab4",
-        "id": -166
-    },
-    {
-        "name": "minecraft:stone_brick_stairs",
-        "id": 109
-    },
-    {
-        "name": "minecraft:stone_button",
-        "id": 77
-    },
-    {
-        "name": "minecraft:stone_hoe",
-        "id": 334
-    },
-    {
-        "name": "minecraft:stone_pickaxe",
-        "id": 317
-    },
-    {
-        "name": "minecraft:stone_pressure_plate",
-        "id": 70
-    },
-    {
-        "name": "minecraft:stone_shovel",
-        "id": 316
-    },
-    {
-        "name": "minecraft:stone_stairs",
-        "id": 67
-    },
-    {
-        "name": "minecraft:stone_sword",
-        "id": 315
-    },
-    {
-        "name": "minecraft:stonebrick",
-        "id": 98
-    },
-    {
-        "name": "minecraft:stonecutter",
-        "id": 245
-    },
-    {
-        "name": "minecraft:stonecutter_block",
-        "id": -197
-    },
-    {
-        "name": "minecraft:stray_spawn_egg",
-        "id": 468
-    },
-    {
-        "name": "minecraft:strider_spawn_egg",
-        "id": 502
-    },
-    {
-        "name": "minecraft:string",
-        "id": 330
-    },
-    {
-        "name": "minecraft:stripped_acacia_log",
-        "id": -8
-    },
-    {
-        "name": "minecraft:stripped_acacia_wood",
-        "id": -823
-    },
-    {
-        "name": "minecraft:stripped_bamboo_block",
-        "id": -528
-    },
-    {
-        "name": "minecraft:stripped_birch_log",
-        "id": -6
-    },
-    {
-        "name": "minecraft:stripped_birch_wood",
-        "id": -821
-    },
-    {
-        "name": "minecraft:stripped_cherry_log",
-        "id": -535
-    },
-    {
-        "name": "minecraft:stripped_cherry_wood",
-        "id": -545
-    },
-    {
-        "name": "minecraft:stripped_crimson_hyphae",
-        "id": -300
-    },
-    {
-        "name": "minecraft:stripped_crimson_stem",
-        "id": -240
-    },
-    {
-        "name": "minecraft:stripped_dark_oak_log",
-        "id": -9
-    },
-    {
-        "name": "minecraft:stripped_dark_oak_wood",
-        "id": -824
-    },
-    {
-        "name": "minecraft:stripped_jungle_log",
-        "id": -7
-    },
-    {
-        "name": "minecraft:stripped_jungle_wood",
-        "id": -822
-    },
-    {
-        "name": "minecraft:stripped_mangrove_log",
-        "id": -485
-    },
-    {
-        "name": "minecraft:stripped_mangrove_wood",
-        "id": -498
-    },
-    {
-        "name": "minecraft:stripped_oak_log",
-        "id": -10
-    },
-    {
-        "name": "minecraft:stripped_oak_wood",
-        "id": -819
-    },
-    {
-        "name": "minecraft:stripped_spruce_log",
-        "id": -5
-    },
-    {
-        "name": "minecraft:stripped_spruce_wood",
-        "id": -820
-    },
-    {
-        "name": "minecraft:stripped_warped_hyphae",
-        "id": -301
-    },
-    {
-        "name": "minecraft:stripped_warped_stem",
-        "id": -241
-    },
-    {
-        "name": "minecraft:structure_block",
-        "id": 252
-    },
-    {
-        "name": "minecraft:structure_void",
-        "id": 217
-    },
-    {
-        "name": "minecraft:sugar",
-        "id": 421
-    },
-    {
-        "name": "minecraft:sugar_cane",
-        "id": 390
-    },
-    {
-        "name": "minecraft:suspicious_gravel",
-        "id": -573
-    },
-    {
-        "name": "minecraft:suspicious_sand",
-        "id": -529
-    },
-    {
-        "name": "minecraft:suspicious_stew",
-        "id": 605
-    },
-    {
-        "name": "minecraft:sweet_berries",
-        "id": 288
-    },
-    {
-        "name": "minecraft:sweet_berry_bush",
-        "id": -207
-    },
-    {
-        "name": "minecraft:tadpole_bucket",
-        "id": 645
-    },
-    {
-        "name": "minecraft:tadpole_spawn_egg",
-        "id": 644
-    },
-    {
-        "name": "minecraft:tallgrass",
-        "id": 31
-    },
-    {
-        "name": "minecraft:target",
-        "id": -239
-    },
-    {
-        "name": "minecraft:tide_armor_trim_smithing_template",
-        "id": 703
-    },
-    {
-        "name": "minecraft:tinted_glass",
-        "id": -334
-    },
-    {
-        "name": "minecraft:tnt",
-        "id": 46
-    },
-    {
-        "name": "minecraft:tnt_minecart",
-        "id": 538
-    },
-    {
-        "name": "minecraft:torch",
-        "id": 50
-    },
-    {
-        "name": "minecraft:torchflower",
-        "id": -568
-    },
-    {
-        "name": "minecraft:torchflower_crop",
-        "id": -567
-    },
-    {
-        "name": "minecraft:torchflower_seeds",
-        "id": 297
-    },
-    {
-        "name": "minecraft:totem_of_undying",
-        "id": 581
-    },
-    {
-        "name": "minecraft:trader_llama_spawn_egg",
-        "id": 663
-    },
-    {
-        "name": "minecraft:trapdoor",
-        "id": 96
-    },
-    {
-        "name": "minecraft:trapped_chest",
-        "id": 146
-    },
-    {
-        "name": "minecraft:trial_key",
-        "id": 719
-    },
-    {
-        "name": "minecraft:trial_spawner",
-        "id": -315
-    },
-    {
-        "name": "minecraft:trident",
-        "id": 559
-    },
-    {
-        "name": "minecraft:trip_wire",
-        "id": 132
-    },
-    {
-        "name": "minecraft:tripwire_hook",
-        "id": 131
-    },
-    {
-        "name": "minecraft:tropical_fish",
-        "id": 267
-    },
-    {
-        "name": "minecraft:tropical_fish_bucket",
-        "id": 370
-    },
-    {
-        "name": "minecraft:tropical_fish_spawn_egg",
-        "id": 486
-    },
-    {
-        "name": "minecraft:tube_coral",
-        "id": -131
-    },
-    {
-        "name": "minecraft:tube_coral_fan",
-        "id": -133
-    },
-    {
-        "name": "minecraft:tuff",
-        "id": -333
-    },
-    {
-        "name": "minecraft:tuff_brick_double_slab",
-        "id": -756
-    },
-    {
-        "name": "minecraft:tuff_brick_slab",
-        "id": -755
-    },
-    {
-        "name": "minecraft:tuff_brick_stairs",
-        "id": -757
-    },
-    {
-        "name": "minecraft:tuff_brick_wall",
-        "id": -758
-    },
-    {
-        "name": "minecraft:tuff_bricks",
-        "id": -754
-    },
-    {
-        "name": "minecraft:tuff_double_slab",
-        "id": -745
-    },
-    {
-        "name": "minecraft:tuff_slab",
-        "id": -744
-    },
-    {
-        "name": "minecraft:tuff_stairs",
-        "id": -746
-    },
-    {
-        "name": "minecraft:tuff_wall",
-        "id": -747
-    },
-    {
-        "name": "minecraft:turtle_egg",
-        "id": -159
-    },
-    {
-        "name": "minecraft:turtle_helmet",
-        "id": 586
-    },
-    {
-        "name": "minecraft:turtle_scute",
-        "id": 585
-    },
-    {
-        "name": "minecraft:turtle_spawn_egg",
-        "id": 492
-    },
-    {
-        "name": "minecraft:twisting_vines",
-        "id": -287
-    },
-    {
-        "name": "minecraft:underwater_torch",
-        "id": 239
-    },
-    {
-        "name": "minecraft:undyed_shulker_box",
-        "id": 205
-    },
-    {
-        "name": "minecraft:unknown",
-        "id": -305
-    },
-    {
-        "name": "minecraft:unlit_redstone_torch",
-        "id": 75
-    },
-    {
-        "name": "minecraft:unpowered_comparator",
-        "id": 149
-    },
-    {
-        "name": "minecraft:unpowered_repeater",
-        "id": 93
-    },
-    {
-        "name": "minecraft:vault",
-        "id": -314
-    },
-    {
-        "name": "minecraft:verdant_froglight",
-        "id": -470
-    },
-    {
-        "name": "minecraft:vex_armor_trim_smithing_template",
-        "id": 702
-    },
-    {
-        "name": "minecraft:vex_spawn_egg",
-        "id": 483
-    },
-    {
-        "name": "minecraft:villager_spawn_egg",
-        "id": 455
-    },
-    {
-        "name": "minecraft:vindicator_spawn_egg",
-        "id": 481
-    },
-    {
-        "name": "minecraft:vine",
-        "id": 106
-    },
-    {
-        "name": "minecraft:wall_banner",
-        "id": 177
-    },
-    {
-        "name": "minecraft:wall_sign",
-        "id": 68
-    },
-    {
-        "name": "minecraft:wandering_trader_spawn_egg",
-        "id": 499
-    },
-    {
-        "name": "minecraft:ward_armor_trim_smithing_template",
-        "id": 700
-    },
-    {
-        "name": "minecraft:warden_spawn_egg",
-        "id": 647
-    },
-    {
-        "name": "minecraft:warped_button",
-        "id": -261
-    },
-    {
-        "name": "minecraft:warped_door",
-        "id": 632
-    },
-    {
-        "name": "minecraft:warped_double_slab",
-        "id": -267
-    },
-    {
-        "name": "minecraft:warped_fence",
-        "id": -257
-    },
-    {
-        "name": "minecraft:warped_fence_gate",
-        "id": -259
-    },
-    {
-        "name": "minecraft:warped_fungus",
-        "id": -229
-    },
-    {
-        "name": "minecraft:warped_fungus_on_a_stick",
-        "id": 633
-    },
-    {
-        "name": "minecraft:warped_hanging_sign",
-        "id": -507
-    },
-    {
-        "name": "minecraft:warped_hyphae",
-        "id": -298
-    },
-    {
-        "name": "minecraft:warped_nylium",
-        "id": -233
-    },
-    {
-        "name": "minecraft:warped_planks",
-        "id": -243
-    },
-    {
-        "name": "minecraft:warped_pressure_plate",
-        "id": -263
-    },
-    {
-        "name": "minecraft:warped_roots",
-        "id": -224
-    },
-    {
-        "name": "minecraft:warped_sign",
-        "id": 630
-    },
-    {
-        "name": "minecraft:warped_slab",
-        "id": -265
-    },
-    {
-        "name": "minecraft:warped_stairs",
-        "id": -255
-    },
-    {
-        "name": "minecraft:warped_standing_sign",
-        "id": -251
-    },
-    {
-        "name": "minecraft:warped_stem",
-        "id": -226
-    },
-    {
-        "name": "minecraft:warped_trapdoor",
-        "id": -247
-    },
-    {
-        "name": "minecraft:warped_wall_sign",
-        "id": -253
-    },
-    {
-        "name": "minecraft:warped_wart_block",
-        "id": -227
-    },
-    {
-        "name": "minecraft:water",
-        "id": 9
-    },
-    {
-        "name": "minecraft:water_bucket",
-        "id": 366
-    },
-    {
-        "name": "minecraft:waterlily",
-        "id": 111
-    },
-    {
-        "name": "minecraft:waxed_chiseled_copper",
-        "id": -764
-    },
-    {
-        "name": "minecraft:waxed_copper",
-        "id": -344
-    },
-    {
-        "name": "minecraft:waxed_copper_bulb",
-        "id": -780
-    },
-    {
-        "name": "minecraft:waxed_copper_door",
-        "id": -788
-    },
-    {
-        "name": "minecraft:waxed_copper_grate",
-        "id": -772
-    },
-    {
-        "name": "minecraft:waxed_copper_trapdoor",
-        "id": -796
-    },
-    {
-        "name": "minecraft:waxed_cut_copper",
-        "id": -351
-    },
-    {
-        "name": "minecraft:waxed_cut_copper_slab",
-        "id": -365
-    },
-    {
-        "name": "minecraft:waxed_cut_copper_stairs",
-        "id": -358
-    },
-    {
-        "name": "minecraft:waxed_double_cut_copper_slab",
-        "id": -372
-    },
-    {
-        "name": "minecraft:waxed_exposed_chiseled_copper",
-        "id": -765
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper",
-        "id": -345
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_bulb",
-        "id": -781
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_door",
-        "id": -789
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_grate",
-        "id": -773
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_trapdoor",
-        "id": -797
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper",
-        "id": -352
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper_slab",
-        "id": -366
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper_stairs",
-        "id": -359
-    },
-    {
-        "name": "minecraft:waxed_exposed_double_cut_copper_slab",
-        "id": -373
-    },
-    {
-        "name": "minecraft:waxed_oxidized_chiseled_copper",
-        "id": -766
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper",
-        "id": -446
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_bulb",
-        "id": -783
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_door",
-        "id": -791
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_grate",
-        "id": -775
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_trapdoor",
-        "id": -799
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper",
-        "id": -447
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper_slab",
-        "id": -449
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper_stairs",
-        "id": -448
-    },
-    {
-        "name": "minecraft:waxed_oxidized_double_cut_copper_slab",
-        "id": -450
-    },
-    {
-        "name": "minecraft:waxed_weathered_chiseled_copper",
-        "id": -767
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper",
-        "id": -346
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_bulb",
-        "id": -782
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_door",
-        "id": -790
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_grate",
-        "id": -774
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_trapdoor",
-        "id": -798
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper",
-        "id": -353
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper_slab",
-        "id": -367
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper_stairs",
-        "id": -360
-    },
-    {
-        "name": "minecraft:waxed_weathered_double_cut_copper_slab",
-        "id": -374
-    },
-    {
-        "name": "minecraft:wayfinder_armor_trim_smithing_template",
-        "id": 708
-    },
-    {
-        "name": "minecraft:weathered_chiseled_copper",
-        "id": -762
-    },
-    {
-        "name": "minecraft:weathered_copper",
-        "id": -342
-    },
-    {
-        "name": "minecraft:weathered_copper_bulb",
-        "id": -778
-    },
-    {
-        "name": "minecraft:weathered_copper_door",
-        "id": -786
-    },
-    {
-        "name": "minecraft:weathered_copper_grate",
-        "id": -770
-    },
-    {
-        "name": "minecraft:weathered_copper_trapdoor",
-        "id": -794
-    },
-    {
-        "name": "minecraft:weathered_cut_copper",
-        "id": -349
-    },
-    {
-        "name": "minecraft:weathered_cut_copper_slab",
-        "id": -363
-    },
-    {
-        "name": "minecraft:weathered_cut_copper_stairs",
-        "id": -356
-    },
-    {
-        "name": "minecraft:weathered_double_cut_copper_slab",
-        "id": -370
-    },
-    {
-        "name": "minecraft:web",
-        "id": 30
-    },
-    {
-        "name": "minecraft:weeping_vines",
-        "id": -231
-    },
-    {
-        "name": "minecraft:wheat",
-        "id": 338
-    },
-    {
-        "name": "minecraft:wheat_seeds",
-        "id": 292
-    },
-    {
-        "name": "minecraft:white_candle",
-        "id": -413
-    },
-    {
-        "name": "minecraft:white_candle_cake",
-        "id": -430
-    },
-    {
-        "name": "minecraft:white_carpet",
-        "id": 171
-    },
-    {
-        "name": "minecraft:white_concrete",
-        "id": 236
-    },
-    {
-        "name": "minecraft:white_concrete_powder",
-        "id": 237
-    },
-    {
-        "name": "minecraft:white_dye",
-        "id": 415
-    },
-    {
-        "name": "minecraft:white_glazed_terracotta",
-        "id": 220
-    },
-    {
-        "name": "minecraft:white_shulker_box",
-        "id": 218
-    },
-    {
-        "name": "minecraft:white_stained_glass",
-        "id": 241
-    },
-    {
-        "name": "minecraft:white_stained_glass_pane",
-        "id": 160
-    },
-    {
-        "name": "minecraft:white_terracotta",
-        "id": 159
-    },
-    {
-        "name": "minecraft:white_tulip",
-        "id": -835
-    },
-    {
-        "name": "minecraft:white_wool",
-        "id": 35
-    },
-    {
-        "name": "minecraft:wild_armor_trim_smithing_template",
-        "id": 699
-    },
-    {
-        "name": "minecraft:wind_charge",
-        "id": 379
-    },
-    {
-        "name": "minecraft:witch_spawn_egg",
-        "id": 458
-    },
-    {
-        "name": "minecraft:wither_rose",
-        "id": -216
-    },
-    {
-        "name": "minecraft:wither_skeleton_spawn_egg",
-        "id": 471
-    },
-    {
-        "name": "minecraft:wither_spawn_egg",
-        "id": 515
-    },
-    {
-        "name": "minecraft:wolf_armor",
-        "id": 718
-    },
-    {
-        "name": "minecraft:wolf_spawn_egg",
-        "id": 445
-    },
-    {
-        "name": "minecraft:wood",
-        "id": 739
-    },
-    {
-        "name": "minecraft:wooden_axe",
-        "id": 314
-    },
-    {
-        "name": "minecraft:wooden_button",
-        "id": 143
-    },
-    {
-        "name": "minecraft:wooden_door",
-        "id": 363
-    },
-    {
-        "name": "minecraft:wooden_hoe",
-        "id": 333
-    },
-    {
-        "name": "minecraft:wooden_pickaxe",
-        "id": 313
-    },
-    {
-        "name": "minecraft:wooden_pressure_plate",
-        "id": 72
-    },
-    {
-        "name": "minecraft:wooden_shovel",
-        "id": 312
-    },
-    {
-        "name": "minecraft:wooden_slab",
-        "id": 729
-    },
-    {
-        "name": "minecraft:wooden_sword",
-        "id": 311
-    },
-    {
-        "name": "minecraft:wool",
-        "id": 720
-    },
-    {
-        "name": "minecraft:writable_book",
-        "id": 523
-    },
-    {
-        "name": "minecraft:written_book",
-        "id": 524
-    },
-    {
-        "name": "minecraft:yellow_candle",
-        "id": -417
-    },
-    {
-        "name": "minecraft:yellow_candle_cake",
-        "id": -434
-    },
-    {
-        "name": "minecraft:yellow_carpet",
-        "id": -600
-    },
-    {
-        "name": "minecraft:yellow_concrete",
-        "id": -631
-    },
-    {
-        "name": "minecraft:yellow_concrete_powder",
-        "id": -712
-    },
-    {
-        "name": "minecraft:yellow_dye",
-        "id": 411
-    },
-    {
-        "name": "minecraft:yellow_flower",
-        "id": 37
-    },
-    {
-        "name": "minecraft:yellow_glazed_terracotta",
-        "id": 224
-    },
-    {
-        "name": "minecraft:yellow_shulker_box",
-        "id": -616
-    },
-    {
-        "name": "minecraft:yellow_stained_glass",
-        "id": -676
-    },
-    {
-        "name": "minecraft:yellow_stained_glass_pane",
-        "id": -646
-    },
-    {
-        "name": "minecraft:yellow_terracotta",
-        "id": -727
-    },
-    {
-        "name": "minecraft:yellow_wool",
-        "id": -558
-    },
-    {
-        "name": "minecraft:zoglin_spawn_egg",
-        "id": 505
-    },
-    {
-        "name": "minecraft:zombie_horse_spawn_egg",
-        "id": 475
-    },
-    {
-        "name": "minecraft:zombie_pigman_spawn_egg",
-        "id": 454
-    },
-    {
-        "name": "minecraft:zombie_spawn_egg",
-        "id": 453
-    },
-    {
-        "name": "minecraft:zombie_villager_spawn_egg",
-        "id": 484
-    }
-]
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/runtime_item_states.1_21_0.json b/core/src/main/resources/bedrock/runtime_item_states.1_21_0.json
deleted file mode 100644
index 1430a5437..000000000
--- a/core/src/main/resources/bedrock/runtime_item_states.1_21_0.json
+++ /dev/null
@@ -1,6398 +0,0 @@
-[
-    {
-        "name": "minecraft:acacia_boat",
-        "id": 387
-    },
-    {
-        "name": "minecraft:acacia_button",
-        "id": -140
-    },
-    {
-        "name": "minecraft:acacia_chest_boat",
-        "id": 661
-    },
-    {
-        "name": "minecraft:acacia_door",
-        "id": 572
-    },
-    {
-        "name": "minecraft:acacia_double_slab",
-        "id": -812
-    },
-    {
-        "name": "minecraft:acacia_fence",
-        "id": -575
-    },
-    {
-        "name": "minecraft:acacia_fence_gate",
-        "id": 187
-    },
-    {
-        "name": "minecraft:acacia_hanging_sign",
-        "id": -504
-    },
-    {
-        "name": "minecraft:acacia_leaves",
-        "id": 161
-    },
-    {
-        "name": "minecraft:acacia_log",
-        "id": 162
-    },
-    {
-        "name": "minecraft:acacia_planks",
-        "id": -742
-    },
-    {
-        "name": "minecraft:acacia_pressure_plate",
-        "id": -150
-    },
-    {
-        "name": "minecraft:acacia_sapling",
-        "id": -828
-    },
-    {
-        "name": "minecraft:acacia_sign",
-        "id": 595
-    },
-    {
-        "name": "minecraft:acacia_slab",
-        "id": -807
-    },
-    {
-        "name": "minecraft:acacia_stairs",
-        "id": 163
-    },
-    {
-        "name": "minecraft:acacia_standing_sign",
-        "id": -190
-    },
-    {
-        "name": "minecraft:acacia_trapdoor",
-        "id": -145
-    },
-    {
-        "name": "minecraft:acacia_wall_sign",
-        "id": -191
-    },
-    {
-        "name": "minecraft:acacia_wood",
-        "id": -817
-    },
-    {
-        "name": "minecraft:activator_rail",
-        "id": 126
-    },
-    {
-        "name": "minecraft:agent_spawn_egg",
-        "id": 497
-    },
-    {
-        "name": "minecraft:air",
-        "id": -158
-    },
-    {
-        "name": "minecraft:allay_spawn_egg",
-        "id": 650
-    },
-    {
-        "name": "minecraft:allium",
-        "id": -831
-    },
-    {
-        "name": "minecraft:allow",
-        "id": 210
-    },
-    {
-        "name": "minecraft:amethyst_block",
-        "id": -327
-    },
-    {
-        "name": "minecraft:amethyst_cluster",
-        "id": -329
-    },
-    {
-        "name": "minecraft:amethyst_shard",
-        "id": 643
-    },
-    {
-        "name": "minecraft:ancient_debris",
-        "id": -271
-    },
-    {
-        "name": "minecraft:andesite",
-        "id": -594
-    },
-    {
-        "name": "minecraft:andesite_stairs",
-        "id": -171
-    },
-    {
-        "name": "minecraft:angler_pottery_sherd",
-        "id": 675
-    },
-    {
-        "name": "minecraft:anvil",
-        "id": 145
-    },
-    {
-        "name": "minecraft:apple",
-        "id": 257
-    },
-    {
-        "name": "minecraft:archer_pottery_sherd",
-        "id": 676
-    },
-    {
-        "name": "minecraft:armadillo_scute",
-        "id": 721
-    },
-    {
-        "name": "minecraft:armadillo_spawn_egg",
-        "id": 720
-    },
-    {
-        "name": "minecraft:armor_stand",
-        "id": 568
-    },
-    {
-        "name": "minecraft:arms_up_pottery_sherd",
-        "id": 677
-    },
-    {
-        "name": "minecraft:arrow",
-        "id": 307
-    },
-    {
-        "name": "minecraft:axolotl_bucket",
-        "id": 376
-    },
-    {
-        "name": "minecraft:axolotl_spawn_egg",
-        "id": 512
-    },
-    {
-        "name": "minecraft:azalea",
-        "id": -337
-    },
-    {
-        "name": "minecraft:azalea_leaves",
-        "id": -324
-    },
-    {
-        "name": "minecraft:azalea_leaves_flowered",
-        "id": -325
-    },
-    {
-        "name": "minecraft:azure_bluet",
-        "id": -832
-    },
-    {
-        "name": "minecraft:baked_potato",
-        "id": 285
-    },
-    {
-        "name": "minecraft:balloon",
-        "id": 617
-    },
-    {
-        "name": "minecraft:bamboo",
-        "id": -163
-    },
-    {
-        "name": "minecraft:bamboo_block",
-        "id": -527
-    },
-    {
-        "name": "minecraft:bamboo_button",
-        "id": -511
-    },
-    {
-        "name": "minecraft:bamboo_chest_raft",
-        "id": 673
-    },
-    {
-        "name": "minecraft:bamboo_door",
-        "id": -517
-    },
-    {
-        "name": "minecraft:bamboo_double_slab",
-        "id": -521
-    },
-    {
-        "name": "minecraft:bamboo_fence",
-        "id": -515
-    },
-    {
-        "name": "minecraft:bamboo_fence_gate",
-        "id": -516
-    },
-    {
-        "name": "minecraft:bamboo_hanging_sign",
-        "id": -522
-    },
-    {
-        "name": "minecraft:bamboo_mosaic",
-        "id": -509
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_double_slab",
-        "id": -525
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_slab",
-        "id": -524
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_stairs",
-        "id": -523
-    },
-    {
-        "name": "minecraft:bamboo_planks",
-        "id": -510
-    },
-    {
-        "name": "minecraft:bamboo_pressure_plate",
-        "id": -514
-    },
-    {
-        "name": "minecraft:bamboo_raft",
-        "id": 672
-    },
-    {
-        "name": "minecraft:bamboo_sapling",
-        "id": -164
-    },
-    {
-        "name": "minecraft:bamboo_sign",
-        "id": 671
-    },
-    {
-        "name": "minecraft:bamboo_slab",
-        "id": -513
-    },
-    {
-        "name": "minecraft:bamboo_stairs",
-        "id": -512
-    },
-    {
-        "name": "minecraft:bamboo_standing_sign",
-        "id": -518
-    },
-    {
-        "name": "minecraft:bamboo_trapdoor",
-        "id": -520
-    },
-    {
-        "name": "minecraft:bamboo_wall_sign",
-        "id": -519
-    },
-    {
-        "name": "minecraft:banner",
-        "id": 583
-    },
-    {
-        "name": "minecraft:banner_pattern",
-        "id": 756
-    },
-    {
-        "name": "minecraft:barrel",
-        "id": -203
-    },
-    {
-        "name": "minecraft:barrier",
-        "id": -161
-    },
-    {
-        "name": "minecraft:basalt",
-        "id": -234
-    },
-    {
-        "name": "minecraft:bat_spawn_egg",
-        "id": 462
-    },
-    {
-        "name": "minecraft:beacon",
-        "id": 138
-    },
-    {
-        "name": "minecraft:bed",
-        "id": 426
-    },
-    {
-        "name": "minecraft:bedrock",
-        "id": 7
-    },
-    {
-        "name": "minecraft:bee_nest",
-        "id": -218
-    },
-    {
-        "name": "minecraft:bee_spawn_egg",
-        "id": 504
-    },
-    {
-        "name": "minecraft:beef",
-        "id": 277
-    },
-    {
-        "name": "minecraft:beehive",
-        "id": -219
-    },
-    {
-        "name": "minecraft:beetroot",
-        "id": 289
-    },
-    {
-        "name": "minecraft:beetroot_seeds",
-        "id": 299
-    },
-    {
-        "name": "minecraft:beetroot_soup",
-        "id": 290
-    },
-    {
-        "name": "minecraft:bell",
-        "id": -206
-    },
-    {
-        "name": "minecraft:big_dripleaf",
-        "id": -323
-    },
-    {
-        "name": "minecraft:birch_boat",
-        "id": 384
-    },
-    {
-        "name": "minecraft:birch_button",
-        "id": -141
-    },
-    {
-        "name": "minecraft:birch_chest_boat",
-        "id": 658
-    },
-    {
-        "name": "minecraft:birch_door",
-        "id": 570
-    },
-    {
-        "name": "minecraft:birch_double_slab",
-        "id": -810
-    },
-    {
-        "name": "minecraft:birch_fence",
-        "id": -576
-    },
-    {
-        "name": "minecraft:birch_fence_gate",
-        "id": 184
-    },
-    {
-        "name": "minecraft:birch_hanging_sign",
-        "id": -502
-    },
-    {
-        "name": "minecraft:birch_leaves",
-        "id": -801
-    },
-    {
-        "name": "minecraft:birch_log",
-        "id": -570
-    },
-    {
-        "name": "minecraft:birch_planks",
-        "id": -740
-    },
-    {
-        "name": "minecraft:birch_pressure_plate",
-        "id": -151
-    },
-    {
-        "name": "minecraft:birch_sapling",
-        "id": -826
-    },
-    {
-        "name": "minecraft:birch_sign",
-        "id": 593
-    },
-    {
-        "name": "minecraft:birch_slab",
-        "id": -805
-    },
-    {
-        "name": "minecraft:birch_stairs",
-        "id": 135
-    },
-    {
-        "name": "minecraft:birch_standing_sign",
-        "id": -186
-    },
-    {
-        "name": "minecraft:birch_trapdoor",
-        "id": -146
-    },
-    {
-        "name": "minecraft:birch_wall_sign",
-        "id": -187
-    },
-    {
-        "name": "minecraft:birch_wood",
-        "id": -815
-    },
-    {
-        "name": "minecraft:black_candle",
-        "id": -428
-    },
-    {
-        "name": "minecraft:black_candle_cake",
-        "id": -445
-    },
-    {
-        "name": "minecraft:black_carpet",
-        "id": -611
-    },
-    {
-        "name": "minecraft:black_concrete",
-        "id": -642
-    },
-    {
-        "name": "minecraft:black_concrete_powder",
-        "id": -723
-    },
-    {
-        "name": "minecraft:black_dye",
-        "id": 403
-    },
-    {
-        "name": "minecraft:black_glazed_terracotta",
-        "id": 235
-    },
-    {
-        "name": "minecraft:black_shulker_box",
-        "id": -627
-    },
-    {
-        "name": "minecraft:black_stained_glass",
-        "id": -687
-    },
-    {
-        "name": "minecraft:black_stained_glass_pane",
-        "id": -657
-    },
-    {
-        "name": "minecraft:black_terracotta",
-        "id": -738
-    },
-    {
-        "name": "minecraft:black_wool",
-        "id": -554
-    },
-    {
-        "name": "minecraft:blackstone",
-        "id": -273
-    },
-    {
-        "name": "minecraft:blackstone_double_slab",
-        "id": -283
-    },
-    {
-        "name": "minecraft:blackstone_slab",
-        "id": -282
-    },
-    {
-        "name": "minecraft:blackstone_stairs",
-        "id": -276
-    },
-    {
-        "name": "minecraft:blackstone_wall",
-        "id": -277
-    },
-    {
-        "name": "minecraft:blade_pottery_sherd",
-        "id": 678
-    },
-    {
-        "name": "minecraft:blast_furnace",
-        "id": -196
-    },
-    {
-        "name": "minecraft:blaze_powder",
-        "id": 438
-    },
-    {
-        "name": "minecraft:blaze_rod",
-        "id": 431
-    },
-    {
-        "name": "minecraft:blaze_spawn_egg",
-        "id": 465
-    },
-    {
-        "name": "minecraft:bleach",
-        "id": 615
-    },
-    {
-        "name": "minecraft:blue_candle",
-        "id": -424
-    },
-    {
-        "name": "minecraft:blue_candle_cake",
-        "id": -441
-    },
-    {
-        "name": "minecraft:blue_carpet",
-        "id": -607
-    },
-    {
-        "name": "minecraft:blue_concrete",
-        "id": -638
-    },
-    {
-        "name": "minecraft:blue_concrete_powder",
-        "id": -719
-    },
-    {
-        "name": "minecraft:blue_dye",
-        "id": 407
-    },
-    {
-        "name": "minecraft:blue_glazed_terracotta",
-        "id": 231
-    },
-    {
-        "name": "minecraft:blue_ice",
-        "id": -11
-    },
-    {
-        "name": "minecraft:blue_orchid",
-        "id": -830
-    },
-    {
-        "name": "minecraft:blue_shulker_box",
-        "id": -623
-    },
-    {
-        "name": "minecraft:blue_stained_glass",
-        "id": -683
-    },
-    {
-        "name": "minecraft:blue_stained_glass_pane",
-        "id": -653
-    },
-    {
-        "name": "minecraft:blue_terracotta",
-        "id": -734
-    },
-    {
-        "name": "minecraft:blue_wool",
-        "id": -563
-    },
-    {
-        "name": "minecraft:boat",
-        "id": 754
-    },
-    {
-        "name": "minecraft:bogged_spawn_egg",
-        "id": 472
-    },
-    {
-        "name": "minecraft:bolt_armor_trim_smithing_template",
-        "id": 717
-    },
-    {
-        "name": "minecraft:bone",
-        "id": 423
-    },
-    {
-        "name": "minecraft:bone_block",
-        "id": 216
-    },
-    {
-        "name": "minecraft:bone_meal",
-        "id": 419
-    },
-    {
-        "name": "minecraft:book",
-        "id": 395
-    },
-    {
-        "name": "minecraft:bookshelf",
-        "id": 47
-    },
-    {
-        "name": "minecraft:border_block",
-        "id": 212
-    },
-    {
-        "name": "minecraft:bordure_indented_banner_pattern",
-        "id": 602
-    },
-    {
-        "name": "minecraft:bow",
-        "id": 306
-    },
-    {
-        "name": "minecraft:bowl",
-        "id": 328
-    },
-    {
-        "name": "minecraft:brain_coral",
-        "id": -581
-    },
-    {
-        "name": "minecraft:brain_coral_block",
-        "id": -849
-    },
-    {
-        "name": "minecraft:brain_coral_fan",
-        "id": -840
-    },
-    {
-        "name": "minecraft:bread",
-        "id": 265
-    },
-    {
-        "name": "minecraft:breeze_rod",
-        "id": 432
-    },
-    {
-        "name": "minecraft:breeze_spawn_egg",
-        "id": 511
-    },
-    {
-        "name": "minecraft:brewer_pottery_sherd",
-        "id": 679
-    },
-    {
-        "name": "minecraft:brewing_stand",
-        "id": 440
-    },
-    {
-        "name": "minecraft:brick",
-        "id": 391
-    },
-    {
-        "name": "minecraft:brick_block",
-        "id": 45
-    },
-    {
-        "name": "minecraft:brick_slab",
-        "id": -874
-    },
-    {
-        "name": "minecraft:brick_stairs",
-        "id": 108
-    },
-    {
-        "name": "minecraft:brown_candle",
-        "id": -425
-    },
-    {
-        "name": "minecraft:brown_candle_cake",
-        "id": -442
-    },
-    {
-        "name": "minecraft:brown_carpet",
-        "id": -608
-    },
-    {
-        "name": "minecraft:brown_concrete",
-        "id": -639
-    },
-    {
-        "name": "minecraft:brown_concrete_powder",
-        "id": -720
-    },
-    {
-        "name": "minecraft:brown_dye",
-        "id": 406
-    },
-    {
-        "name": "minecraft:brown_glazed_terracotta",
-        "id": 232
-    },
-    {
-        "name": "minecraft:brown_mushroom",
-        "id": 39
-    },
-    {
-        "name": "minecraft:brown_mushroom_block",
-        "id": 99
-    },
-    {
-        "name": "minecraft:brown_shulker_box",
-        "id": -624
-    },
-    {
-        "name": "minecraft:brown_stained_glass",
-        "id": -684
-    },
-    {
-        "name": "minecraft:brown_stained_glass_pane",
-        "id": -654
-    },
-    {
-        "name": "minecraft:brown_terracotta",
-        "id": -735
-    },
-    {
-        "name": "minecraft:brown_wool",
-        "id": -555
-    },
-    {
-        "name": "minecraft:brush",
-        "id": 698
-    },
-    {
-        "name": "minecraft:bubble_column",
-        "id": -160
-    },
-    {
-        "name": "minecraft:bubble_coral",
-        "id": -582
-    },
-    {
-        "name": "minecraft:bubble_coral_block",
-        "id": -850
-    },
-    {
-        "name": "minecraft:bubble_coral_fan",
-        "id": -841
-    },
-    {
-        "name": "minecraft:bucket",
-        "id": 367
-    },
-    {
-        "name": "minecraft:budding_amethyst",
-        "id": -328
-    },
-    {
-        "name": "minecraft:burn_pottery_sherd",
-        "id": 680
-    },
-    {
-        "name": "minecraft:cactus",
-        "id": 81
-    },
-    {
-        "name": "minecraft:cake",
-        "id": 425
-    },
-    {
-        "name": "minecraft:calcite",
-        "id": -326
-    },
-    {
-        "name": "minecraft:calibrated_sculk_sensor",
-        "id": -580
-    },
-    {
-        "name": "minecraft:camel_spawn_egg",
-        "id": 674
-    },
-    {
-        "name": "minecraft:camera",
-        "id": 612
-    },
-    {
-        "name": "minecraft:campfire",
-        "id": 607
-    },
-    {
-        "name": "minecraft:candle",
-        "id": -412
-    },
-    {
-        "name": "minecraft:candle_cake",
-        "id": -429
-    },
-    {
-        "name": "minecraft:carpet",
-        "id": 726
-    },
-    {
-        "name": "minecraft:carrot",
-        "id": 283
-    },
-    {
-        "name": "minecraft:carrot_on_a_stick",
-        "id": 533
-    },
-    {
-        "name": "minecraft:carrots",
-        "id": 141
-    },
-    {
-        "name": "minecraft:cartography_table",
-        "id": -200
-    },
-    {
-        "name": "minecraft:carved_pumpkin",
-        "id": -155
-    },
-    {
-        "name": "minecraft:cat_spawn_egg",
-        "id": 498
-    },
-    {
-        "name": "minecraft:cauldron",
-        "id": 441
-    },
-    {
-        "name": "minecraft:cave_spider_spawn_egg",
-        "id": 466
-    },
-    {
-        "name": "minecraft:cave_vines",
-        "id": -322
-    },
-    {
-        "name": "minecraft:cave_vines_body_with_berries",
-        "id": -375
-    },
-    {
-        "name": "minecraft:cave_vines_head_with_berries",
-        "id": -376
-    },
-    {
-        "name": "minecraft:chain",
-        "id": 638
-    },
-    {
-        "name": "minecraft:chain_command_block",
-        "id": 189
-    },
-    {
-        "name": "minecraft:chainmail_boots",
-        "id": 349
-    },
-    {
-        "name": "minecraft:chainmail_chestplate",
-        "id": 347
-    },
-    {
-        "name": "minecraft:chainmail_helmet",
-        "id": 346
-    },
-    {
-        "name": "minecraft:chainmail_leggings",
-        "id": 348
-    },
-    {
-        "name": "minecraft:charcoal",
-        "id": 309
-    },
-    {
-        "name": "minecraft:chemical_heat",
-        "id": 192
-    },
-    {
-        "name": "minecraft:chemistry_table",
-        "id": 238
-    },
-    {
-        "name": "minecraft:cherry_boat",
-        "id": 668
-    },
-    {
-        "name": "minecraft:cherry_button",
-        "id": -530
-    },
-    {
-        "name": "minecraft:cherry_chest_boat",
-        "id": 669
-    },
-    {
-        "name": "minecraft:cherry_door",
-        "id": -531
-    },
-    {
-        "name": "minecraft:cherry_double_slab",
-        "id": -540
-    },
-    {
-        "name": "minecraft:cherry_fence",
-        "id": -532
-    },
-    {
-        "name": "minecraft:cherry_fence_gate",
-        "id": -533
-    },
-    {
-        "name": "minecraft:cherry_hanging_sign",
-        "id": -534
-    },
-    {
-        "name": "minecraft:cherry_leaves",
-        "id": -548
-    },
-    {
-        "name": "minecraft:cherry_log",
-        "id": -536
-    },
-    {
-        "name": "minecraft:cherry_planks",
-        "id": -537
-    },
-    {
-        "name": "minecraft:cherry_pressure_plate",
-        "id": -538
-    },
-    {
-        "name": "minecraft:cherry_sapling",
-        "id": -547
-    },
-    {
-        "name": "minecraft:cherry_sign",
-        "id": 670
-    },
-    {
-        "name": "minecraft:cherry_slab",
-        "id": -539
-    },
-    {
-        "name": "minecraft:cherry_stairs",
-        "id": -541
-    },
-    {
-        "name": "minecraft:cherry_standing_sign",
-        "id": -542
-    },
-    {
-        "name": "minecraft:cherry_trapdoor",
-        "id": -543
-    },
-    {
-        "name": "minecraft:cherry_wall_sign",
-        "id": -544
-    },
-    {
-        "name": "minecraft:cherry_wood",
-        "id": -546
-    },
-    {
-        "name": "minecraft:chest",
-        "id": 54
-    },
-    {
-        "name": "minecraft:chest_boat",
-        "id": 664
-    },
-    {
-        "name": "minecraft:chest_minecart",
-        "id": 397
-    },
-    {
-        "name": "minecraft:chicken",
-        "id": 279
-    },
-    {
-        "name": "minecraft:chicken_spawn_egg",
-        "id": 444
-    },
-    {
-        "name": "minecraft:chiseled_bookshelf",
-        "id": -526
-    },
-    {
-        "name": "minecraft:chiseled_copper",
-        "id": -760
-    },
-    {
-        "name": "minecraft:chiseled_deepslate",
-        "id": -395
-    },
-    {
-        "name": "minecraft:chiseled_nether_bricks",
-        "id": -302
-    },
-    {
-        "name": "minecraft:chiseled_polished_blackstone",
-        "id": -279
-    },
-    {
-        "name": "minecraft:chiseled_tuff",
-        "id": -753
-    },
-    {
-        "name": "minecraft:chiseled_tuff_bricks",
-        "id": -759
-    },
-    {
-        "name": "minecraft:chorus_flower",
-        "id": 200
-    },
-    {
-        "name": "minecraft:chorus_fruit",
-        "id": 574
-    },
-    {
-        "name": "minecraft:chorus_plant",
-        "id": 240
-    },
-    {
-        "name": "minecraft:clay",
-        "id": 82
-    },
-    {
-        "name": "minecraft:clay_ball",
-        "id": 392
-    },
-    {
-        "name": "minecraft:client_request_placeholder_block",
-        "id": -465
-    },
-    {
-        "name": "minecraft:clock",
-        "id": 401
-    },
-    {
-        "name": "minecraft:coal",
-        "id": 308
-    },
-    {
-        "name": "minecraft:coal_block",
-        "id": 173
-    },
-    {
-        "name": "minecraft:coal_ore",
-        "id": 16
-    },
-    {
-        "name": "minecraft:coast_armor_trim_smithing_template",
-        "id": 702
-    },
-    {
-        "name": "minecraft:cobbled_deepslate",
-        "id": -379
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_double_slab",
-        "id": -396
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_slab",
-        "id": -380
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_stairs",
-        "id": -381
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_wall",
-        "id": -382
-    },
-    {
-        "name": "minecraft:cobblestone",
-        "id": 4
-    },
-    {
-        "name": "minecraft:cobblestone_slab",
-        "id": -873
-    },
-    {
-        "name": "minecraft:cobblestone_wall",
-        "id": 139
-    },
-    {
-        "name": "minecraft:cocoa",
-        "id": 127
-    },
-    {
-        "name": "minecraft:cocoa_beans",
-        "id": 420
-    },
-    {
-        "name": "minecraft:cod",
-        "id": 268
-    },
-    {
-        "name": "minecraft:cod_bucket",
-        "id": 371
-    },
-    {
-        "name": "minecraft:cod_spawn_egg",
-        "id": 490
-    },
-    {
-        "name": "minecraft:colored_torch_bp",
-        "id": 204
-    },
-    {
-        "name": "minecraft:colored_torch_rg",
-        "id": 202
-    },
-    {
-        "name": "minecraft:command_block",
-        "id": 137
-    },
-    {
-        "name": "minecraft:command_block_minecart",
-        "id": 579
-    },
-    {
-        "name": "minecraft:comparator",
-        "id": 538
-    },
-    {
-        "name": "minecraft:compass",
-        "id": 399
-    },
-    {
-        "name": "minecraft:composter",
-        "id": -213
-    },
-    {
-        "name": "minecraft:compound",
-        "id": 613
-    },
-    {
-        "name": "minecraft:concrete",
-        "id": 743
-    },
-    {
-        "name": "minecraft:concrete_powder",
-        "id": 744
-    },
-    {
-        "name": "minecraft:conduit",
-        "id": -157
-    },
-    {
-        "name": "minecraft:cooked_beef",
-        "id": 278
-    },
-    {
-        "name": "minecraft:cooked_chicken",
-        "id": 280
-    },
-    {
-        "name": "minecraft:cooked_cod",
-        "id": 272
-    },
-    {
-        "name": "minecraft:cooked_mutton",
-        "id": 567
-    },
-    {
-        "name": "minecraft:cooked_porkchop",
-        "id": 267
-    },
-    {
-        "name": "minecraft:cooked_rabbit",
-        "id": 293
-    },
-    {
-        "name": "minecraft:cooked_salmon",
-        "id": 273
-    },
-    {
-        "name": "minecraft:cookie",
-        "id": 275
-    },
-    {
-        "name": "minecraft:copper_block",
-        "id": -340
-    },
-    {
-        "name": "minecraft:copper_bulb",
-        "id": -776
-    },
-    {
-        "name": "minecraft:copper_door",
-        "id": -784
-    },
-    {
-        "name": "minecraft:copper_grate",
-        "id": -768
-    },
-    {
-        "name": "minecraft:copper_ingot",
-        "id": 520
-    },
-    {
-        "name": "minecraft:copper_ore",
-        "id": -311
-    },
-    {
-        "name": "minecraft:copper_trapdoor",
-        "id": -792
-    },
-    {
-        "name": "minecraft:coral",
-        "id": 740
-    },
-    {
-        "name": "minecraft:coral_block",
-        "id": 729
-    },
-    {
-        "name": "minecraft:coral_fan",
-        "id": 730
-    },
-    {
-        "name": "minecraft:coral_fan_dead",
-        "id": 731
-    },
-    {
-        "name": "minecraft:coral_fan_hang",
-        "id": -135
-    },
-    {
-        "name": "minecraft:coral_fan_hang2",
-        "id": -136
-    },
-    {
-        "name": "minecraft:coral_fan_hang3",
-        "id": -137
-    },
-    {
-        "name": "minecraft:cornflower",
-        "id": -838
-    },
-    {
-        "name": "minecraft:cow_spawn_egg",
-        "id": 445
-    },
-    {
-        "name": "minecraft:cracked_deepslate_bricks",
-        "id": -410
-    },
-    {
-        "name": "minecraft:cracked_deepslate_tiles",
-        "id": -409
-    },
-    {
-        "name": "minecraft:cracked_nether_bricks",
-        "id": -303
-    },
-    {
-        "name": "minecraft:cracked_polished_blackstone_bricks",
-        "id": -280
-    },
-    {
-        "name": "minecraft:crafter",
-        "id": -313
-    },
-    {
-        "name": "minecraft:crafting_table",
-        "id": 58
-    },
-    {
-        "name": "minecraft:creeper_banner_pattern",
-        "id": 598
-    },
-    {
-        "name": "minecraft:creeper_spawn_egg",
-        "id": 450
-    },
-    {
-        "name": "minecraft:crimson_button",
-        "id": -260
-    },
-    {
-        "name": "minecraft:crimson_door",
-        "id": 635
-    },
-    {
-        "name": "minecraft:crimson_double_slab",
-        "id": -266
-    },
-    {
-        "name": "minecraft:crimson_fence",
-        "id": -256
-    },
-    {
-        "name": "minecraft:crimson_fence_gate",
-        "id": -258
-    },
-    {
-        "name": "minecraft:crimson_fungus",
-        "id": -228
-    },
-    {
-        "name": "minecraft:crimson_hanging_sign",
-        "id": -506
-    },
-    {
-        "name": "minecraft:crimson_hyphae",
-        "id": -299
-    },
-    {
-        "name": "minecraft:crimson_nylium",
-        "id": -232
-    },
-    {
-        "name": "minecraft:crimson_planks",
-        "id": -242
-    },
-    {
-        "name": "minecraft:crimson_pressure_plate",
-        "id": -262
-    },
-    {
-        "name": "minecraft:crimson_roots",
-        "id": -223
-    },
-    {
-        "name": "minecraft:crimson_sign",
-        "id": 633
-    },
-    {
-        "name": "minecraft:crimson_slab",
-        "id": -264
-    },
-    {
-        "name": "minecraft:crimson_stairs",
-        "id": -254
-    },
-    {
-        "name": "minecraft:crimson_standing_sign",
-        "id": -250
-    },
-    {
-        "name": "minecraft:crimson_stem",
-        "id": -225
-    },
-    {
-        "name": "minecraft:crimson_trapdoor",
-        "id": -246
-    },
-    {
-        "name": "minecraft:crimson_wall_sign",
-        "id": -252
-    },
-    {
-        "name": "minecraft:crossbow",
-        "id": 591
-    },
-    {
-        "name": "minecraft:crying_obsidian",
-        "id": -289
-    },
-    {
-        "name": "minecraft:cut_copper",
-        "id": -347
-    },
-    {
-        "name": "minecraft:cut_copper_slab",
-        "id": -361
-    },
-    {
-        "name": "minecraft:cut_copper_stairs",
-        "id": -354
-    },
-    {
-        "name": "minecraft:cyan_candle",
-        "id": -422
-    },
-    {
-        "name": "minecraft:cyan_candle_cake",
-        "id": -439
-    },
-    {
-        "name": "minecraft:cyan_carpet",
-        "id": -605
-    },
-    {
-        "name": "minecraft:cyan_concrete",
-        "id": -636
-    },
-    {
-        "name": "minecraft:cyan_concrete_powder",
-        "id": -717
-    },
-    {
-        "name": "minecraft:cyan_dye",
-        "id": 409
-    },
-    {
-        "name": "minecraft:cyan_glazed_terracotta",
-        "id": 229
-    },
-    {
-        "name": "minecraft:cyan_shulker_box",
-        "id": -621
-    },
-    {
-        "name": "minecraft:cyan_stained_glass",
-        "id": -681
-    },
-    {
-        "name": "minecraft:cyan_stained_glass_pane",
-        "id": -651
-    },
-    {
-        "name": "minecraft:cyan_terracotta",
-        "id": -732
-    },
-    {
-        "name": "minecraft:cyan_wool",
-        "id": -561
-    },
-    {
-        "name": "minecraft:danger_pottery_sherd",
-        "id": 681
-    },
-    {
-        "name": "minecraft:dark_oak_boat",
-        "id": 388
-    },
-    {
-        "name": "minecraft:dark_oak_button",
-        "id": -142
-    },
-    {
-        "name": "minecraft:dark_oak_chest_boat",
-        "id": 662
-    },
-    {
-        "name": "minecraft:dark_oak_door",
-        "id": 573
-    },
-    {
-        "name": "minecraft:dark_oak_double_slab",
-        "id": -813
-    },
-    {
-        "name": "minecraft:dark_oak_fence",
-        "id": -577
-    },
-    {
-        "name": "minecraft:dark_oak_fence_gate",
-        "id": 186
-    },
-    {
-        "name": "minecraft:dark_oak_hanging_sign",
-        "id": -505
-    },
-    {
-        "name": "minecraft:dark_oak_leaves",
-        "id": -803
-    },
-    {
-        "name": "minecraft:dark_oak_log",
-        "id": -572
-    },
-    {
-        "name": "minecraft:dark_oak_planks",
-        "id": -743
-    },
-    {
-        "name": "minecraft:dark_oak_pressure_plate",
-        "id": -152
-    },
-    {
-        "name": "minecraft:dark_oak_sapling",
-        "id": -829
-    },
-    {
-        "name": "minecraft:dark_oak_sign",
-        "id": 596
-    },
-    {
-        "name": "minecraft:dark_oak_slab",
-        "id": -808
-    },
-    {
-        "name": "minecraft:dark_oak_stairs",
-        "id": 164
-    },
-    {
-        "name": "minecraft:dark_oak_trapdoor",
-        "id": -147
-    },
-    {
-        "name": "minecraft:dark_oak_wood",
-        "id": -818
-    },
-    {
-        "name": "minecraft:dark_prismarine_stairs",
-        "id": -3
-    },
-    {
-        "name": "minecraft:darkoak_standing_sign",
-        "id": -192
-    },
-    {
-        "name": "minecraft:darkoak_wall_sign",
-        "id": -193
-    },
-    {
-        "name": "minecraft:daylight_detector",
-        "id": 151
-    },
-    {
-        "name": "minecraft:daylight_detector_inverted",
-        "id": 178
-    },
-    {
-        "name": "minecraft:dead_brain_coral",
-        "id": -586
-    },
-    {
-        "name": "minecraft:dead_brain_coral_block",
-        "id": -854
-    },
-    {
-        "name": "minecraft:dead_brain_coral_fan",
-        "id": -844
-    },
-    {
-        "name": "minecraft:dead_bubble_coral",
-        "id": -587
-    },
-    {
-        "name": "minecraft:dead_bubble_coral_block",
-        "id": -855
-    },
-    {
-        "name": "minecraft:dead_bubble_coral_fan",
-        "id": -845
-    },
-    {
-        "name": "minecraft:dead_fire_coral",
-        "id": -588
-    },
-    {
-        "name": "minecraft:dead_fire_coral_block",
-        "id": -856
-    },
-    {
-        "name": "minecraft:dead_fire_coral_fan",
-        "id": -846
-    },
-    {
-        "name": "minecraft:dead_horn_coral",
-        "id": -589
-    },
-    {
-        "name": "minecraft:dead_horn_coral_block",
-        "id": -857
-    },
-    {
-        "name": "minecraft:dead_horn_coral_fan",
-        "id": -847
-    },
-    {
-        "name": "minecraft:dead_tube_coral",
-        "id": -585
-    },
-    {
-        "name": "minecraft:dead_tube_coral_block",
-        "id": -853
-    },
-    {
-        "name": "minecraft:dead_tube_coral_fan",
-        "id": -134
-    },
-    {
-        "name": "minecraft:deadbush",
-        "id": 32
-    },
-    {
-        "name": "minecraft:decorated_pot",
-        "id": -551
-    },
-    {
-        "name": "minecraft:deepslate",
-        "id": -378
-    },
-    {
-        "name": "minecraft:deepslate_brick_double_slab",
-        "id": -399
-    },
-    {
-        "name": "minecraft:deepslate_brick_slab",
-        "id": -392
-    },
-    {
-        "name": "minecraft:deepslate_brick_stairs",
-        "id": -393
-    },
-    {
-        "name": "minecraft:deepslate_brick_wall",
-        "id": -394
-    },
-    {
-        "name": "minecraft:deepslate_bricks",
-        "id": -391
-    },
-    {
-        "name": "minecraft:deepslate_coal_ore",
-        "id": -406
-    },
-    {
-        "name": "minecraft:deepslate_copper_ore",
-        "id": -408
-    },
-    {
-        "name": "minecraft:deepslate_diamond_ore",
-        "id": -405
-    },
-    {
-        "name": "minecraft:deepslate_emerald_ore",
-        "id": -407
-    },
-    {
-        "name": "minecraft:deepslate_gold_ore",
-        "id": -402
-    },
-    {
-        "name": "minecraft:deepslate_iron_ore",
-        "id": -401
-    },
-    {
-        "name": "minecraft:deepslate_lapis_ore",
-        "id": -400
-    },
-    {
-        "name": "minecraft:deepslate_redstone_ore",
-        "id": -403
-    },
-    {
-        "name": "minecraft:deepslate_tile_double_slab",
-        "id": -398
-    },
-    {
-        "name": "minecraft:deepslate_tile_slab",
-        "id": -388
-    },
-    {
-        "name": "minecraft:deepslate_tile_stairs",
-        "id": -389
-    },
-    {
-        "name": "minecraft:deepslate_tile_wall",
-        "id": -390
-    },
-    {
-        "name": "minecraft:deepslate_tiles",
-        "id": -387
-    },
-    {
-        "name": "minecraft:deny",
-        "id": 211
-    },
-    {
-        "name": "minecraft:detector_rail",
-        "id": 28
-    },
-    {
-        "name": "minecraft:diamond",
-        "id": 310
-    },
-    {
-        "name": "minecraft:diamond_axe",
-        "id": 325
-    },
-    {
-        "name": "minecraft:diamond_block",
-        "id": 57
-    },
-    {
-        "name": "minecraft:diamond_boots",
-        "id": 357
-    },
-    {
-        "name": "minecraft:diamond_chestplate",
-        "id": 355
-    },
-    {
-        "name": "minecraft:diamond_helmet",
-        "id": 354
-    },
-    {
-        "name": "minecraft:diamond_hoe",
-        "id": 339
-    },
-    {
-        "name": "minecraft:diamond_horse_armor",
-        "id": 549
-    },
-    {
-        "name": "minecraft:diamond_leggings",
-        "id": 356
-    },
-    {
-        "name": "minecraft:diamond_ore",
-        "id": 56
-    },
-    {
-        "name": "minecraft:diamond_pickaxe",
-        "id": 324
-    },
-    {
-        "name": "minecraft:diamond_shovel",
-        "id": 323
-    },
-    {
-        "name": "minecraft:diamond_sword",
-        "id": 322
-    },
-    {
-        "name": "minecraft:diorite",
-        "id": -592
-    },
-    {
-        "name": "minecraft:diorite_stairs",
-        "id": -170
-    },
-    {
-        "name": "minecraft:dirt",
-        "id": 3
-    },
-    {
-        "name": "minecraft:dirt_with_roots",
-        "id": -318
-    },
-    {
-        "name": "minecraft:disc_fragment_5",
-        "id": 656
-    },
-    {
-        "name": "minecraft:dispenser",
-        "id": 23
-    },
-    {
-        "name": "minecraft:dolphin_spawn_egg",
-        "id": 494
-    },
-    {
-        "name": "minecraft:donkey_spawn_egg",
-        "id": 475
-    },
-    {
-        "name": "minecraft:double_cut_copper_slab",
-        "id": -368
-    },
-    {
-        "name": "minecraft:double_plant",
-        "id": 738
-    },
-    {
-        "name": "minecraft:double_stone_block_slab",
-        "id": 43
-    },
-    {
-        "name": "minecraft:double_stone_block_slab2",
-        "id": 181
-    },
-    {
-        "name": "minecraft:double_stone_block_slab3",
-        "id": -167
-    },
-    {
-        "name": "minecraft:double_stone_block_slab4",
-        "id": -168
-    },
-    {
-        "name": "minecraft:dragon_breath",
-        "id": 576
-    },
-    {
-        "name": "minecraft:dragon_egg",
-        "id": 122
-    },
-    {
-        "name": "minecraft:dried_kelp",
-        "id": 274
-    },
-    {
-        "name": "minecraft:dried_kelp_block",
-        "id": -139
-    },
-    {
-        "name": "minecraft:dripstone_block",
-        "id": -317
-    },
-    {
-        "name": "minecraft:dropper",
-        "id": 125
-    },
-    {
-        "name": "minecraft:drowned_spawn_egg",
-        "id": 493
-    },
-    {
-        "name": "minecraft:dune_armor_trim_smithing_template",
-        "id": 701
-    },
-    {
-        "name": "minecraft:dye",
-        "id": 755
-    },
-    {
-        "name": "minecraft:echo_shard",
-        "id": 666
-    },
-    {
-        "name": "minecraft:egg",
-        "id": 398
-    },
-    {
-        "name": "minecraft:elder_guardian_spawn_egg",
-        "id": 481
-    },
-    {
-        "name": "minecraft:element_0",
-        "id": 36
-    },
-    {
-        "name": "minecraft:element_1",
-        "id": -12
-    },
-    {
-        "name": "minecraft:element_10",
-        "id": -21
-    },
-    {
-        "name": "minecraft:element_100",
-        "id": -111
-    },
-    {
-        "name": "minecraft:element_101",
-        "id": -112
-    },
-    {
-        "name": "minecraft:element_102",
-        "id": -113
-    },
-    {
-        "name": "minecraft:element_103",
-        "id": -114
-    },
-    {
-        "name": "minecraft:element_104",
-        "id": -115
-    },
-    {
-        "name": "minecraft:element_105",
-        "id": -116
-    },
-    {
-        "name": "minecraft:element_106",
-        "id": -117
-    },
-    {
-        "name": "minecraft:element_107",
-        "id": -118
-    },
-    {
-        "name": "minecraft:element_108",
-        "id": -119
-    },
-    {
-        "name": "minecraft:element_109",
-        "id": -120
-    },
-    {
-        "name": "minecraft:element_11",
-        "id": -22
-    },
-    {
-        "name": "minecraft:element_110",
-        "id": -121
-    },
-    {
-        "name": "minecraft:element_111",
-        "id": -122
-    },
-    {
-        "name": "minecraft:element_112",
-        "id": -123
-    },
-    {
-        "name": "minecraft:element_113",
-        "id": -124
-    },
-    {
-        "name": "minecraft:element_114",
-        "id": -125
-    },
-    {
-        "name": "minecraft:element_115",
-        "id": -126
-    },
-    {
-        "name": "minecraft:element_116",
-        "id": -127
-    },
-    {
-        "name": "minecraft:element_117",
-        "id": -128
-    },
-    {
-        "name": "minecraft:element_118",
-        "id": -129
-    },
-    {
-        "name": "minecraft:element_12",
-        "id": -23
-    },
-    {
-        "name": "minecraft:element_13",
-        "id": -24
-    },
-    {
-        "name": "minecraft:element_14",
-        "id": -25
-    },
-    {
-        "name": "minecraft:element_15",
-        "id": -26
-    },
-    {
-        "name": "minecraft:element_16",
-        "id": -27
-    },
-    {
-        "name": "minecraft:element_17",
-        "id": -28
-    },
-    {
-        "name": "minecraft:element_18",
-        "id": -29
-    },
-    {
-        "name": "minecraft:element_19",
-        "id": -30
-    },
-    {
-        "name": "minecraft:element_2",
-        "id": -13
-    },
-    {
-        "name": "minecraft:element_20",
-        "id": -31
-    },
-    {
-        "name": "minecraft:element_21",
-        "id": -32
-    },
-    {
-        "name": "minecraft:element_22",
-        "id": -33
-    },
-    {
-        "name": "minecraft:element_23",
-        "id": -34
-    },
-    {
-        "name": "minecraft:element_24",
-        "id": -35
-    },
-    {
-        "name": "minecraft:element_25",
-        "id": -36
-    },
-    {
-        "name": "minecraft:element_26",
-        "id": -37
-    },
-    {
-        "name": "minecraft:element_27",
-        "id": -38
-    },
-    {
-        "name": "minecraft:element_28",
-        "id": -39
-    },
-    {
-        "name": "minecraft:element_29",
-        "id": -40
-    },
-    {
-        "name": "minecraft:element_3",
-        "id": -14
-    },
-    {
-        "name": "minecraft:element_30",
-        "id": -41
-    },
-    {
-        "name": "minecraft:element_31",
-        "id": -42
-    },
-    {
-        "name": "minecraft:element_32",
-        "id": -43
-    },
-    {
-        "name": "minecraft:element_33",
-        "id": -44
-    },
-    {
-        "name": "minecraft:element_34",
-        "id": -45
-    },
-    {
-        "name": "minecraft:element_35",
-        "id": -46
-    },
-    {
-        "name": "minecraft:element_36",
-        "id": -47
-    },
-    {
-        "name": "minecraft:element_37",
-        "id": -48
-    },
-    {
-        "name": "minecraft:element_38",
-        "id": -49
-    },
-    {
-        "name": "minecraft:element_39",
-        "id": -50
-    },
-    {
-        "name": "minecraft:element_4",
-        "id": -15
-    },
-    {
-        "name": "minecraft:element_40",
-        "id": -51
-    },
-    {
-        "name": "minecraft:element_41",
-        "id": -52
-    },
-    {
-        "name": "minecraft:element_42",
-        "id": -53
-    },
-    {
-        "name": "minecraft:element_43",
-        "id": -54
-    },
-    {
-        "name": "minecraft:element_44",
-        "id": -55
-    },
-    {
-        "name": "minecraft:element_45",
-        "id": -56
-    },
-    {
-        "name": "minecraft:element_46",
-        "id": -57
-    },
-    {
-        "name": "minecraft:element_47",
-        "id": -58
-    },
-    {
-        "name": "minecraft:element_48",
-        "id": -59
-    },
-    {
-        "name": "minecraft:element_49",
-        "id": -60
-    },
-    {
-        "name": "minecraft:element_5",
-        "id": -16
-    },
-    {
-        "name": "minecraft:element_50",
-        "id": -61
-    },
-    {
-        "name": "minecraft:element_51",
-        "id": -62
-    },
-    {
-        "name": "minecraft:element_52",
-        "id": -63
-    },
-    {
-        "name": "minecraft:element_53",
-        "id": -64
-    },
-    {
-        "name": "minecraft:element_54",
-        "id": -65
-    },
-    {
-        "name": "minecraft:element_55",
-        "id": -66
-    },
-    {
-        "name": "minecraft:element_56",
-        "id": -67
-    },
-    {
-        "name": "minecraft:element_57",
-        "id": -68
-    },
-    {
-        "name": "minecraft:element_58",
-        "id": -69
-    },
-    {
-        "name": "minecraft:element_59",
-        "id": -70
-    },
-    {
-        "name": "minecraft:element_6",
-        "id": -17
-    },
-    {
-        "name": "minecraft:element_60",
-        "id": -71
-    },
-    {
-        "name": "minecraft:element_61",
-        "id": -72
-    },
-    {
-        "name": "minecraft:element_62",
-        "id": -73
-    },
-    {
-        "name": "minecraft:element_63",
-        "id": -74
-    },
-    {
-        "name": "minecraft:element_64",
-        "id": -75
-    },
-    {
-        "name": "minecraft:element_65",
-        "id": -76
-    },
-    {
-        "name": "minecraft:element_66",
-        "id": -77
-    },
-    {
-        "name": "minecraft:element_67",
-        "id": -78
-    },
-    {
-        "name": "minecraft:element_68",
-        "id": -79
-    },
-    {
-        "name": "minecraft:element_69",
-        "id": -80
-    },
-    {
-        "name": "minecraft:element_7",
-        "id": -18
-    },
-    {
-        "name": "minecraft:element_70",
-        "id": -81
-    },
-    {
-        "name": "minecraft:element_71",
-        "id": -82
-    },
-    {
-        "name": "minecraft:element_72",
-        "id": -83
-    },
-    {
-        "name": "minecraft:element_73",
-        "id": -84
-    },
-    {
-        "name": "minecraft:element_74",
-        "id": -85
-    },
-    {
-        "name": "minecraft:element_75",
-        "id": -86
-    },
-    {
-        "name": "minecraft:element_76",
-        "id": -87
-    },
-    {
-        "name": "minecraft:element_77",
-        "id": -88
-    },
-    {
-        "name": "minecraft:element_78",
-        "id": -89
-    },
-    {
-        "name": "minecraft:element_79",
-        "id": -90
-    },
-    {
-        "name": "minecraft:element_8",
-        "id": -19
-    },
-    {
-        "name": "minecraft:element_80",
-        "id": -91
-    },
-    {
-        "name": "minecraft:element_81",
-        "id": -92
-    },
-    {
-        "name": "minecraft:element_82",
-        "id": -93
-    },
-    {
-        "name": "minecraft:element_83",
-        "id": -94
-    },
-    {
-        "name": "minecraft:element_84",
-        "id": -95
-    },
-    {
-        "name": "minecraft:element_85",
-        "id": -96
-    },
-    {
-        "name": "minecraft:element_86",
-        "id": -97
-    },
-    {
-        "name": "minecraft:element_87",
-        "id": -98
-    },
-    {
-        "name": "minecraft:element_88",
-        "id": -99
-    },
-    {
-        "name": "minecraft:element_89",
-        "id": -100
-    },
-    {
-        "name": "minecraft:element_9",
-        "id": -20
-    },
-    {
-        "name": "minecraft:element_90",
-        "id": -101
-    },
-    {
-        "name": "minecraft:element_91",
-        "id": -102
-    },
-    {
-        "name": "minecraft:element_92",
-        "id": -103
-    },
-    {
-        "name": "minecraft:element_93",
-        "id": -104
-    },
-    {
-        "name": "minecraft:element_94",
-        "id": -105
-    },
-    {
-        "name": "minecraft:element_95",
-        "id": -106
-    },
-    {
-        "name": "minecraft:element_96",
-        "id": -107
-    },
-    {
-        "name": "minecraft:element_97",
-        "id": -108
-    },
-    {
-        "name": "minecraft:element_98",
-        "id": -109
-    },
-    {
-        "name": "minecraft:element_99",
-        "id": -110
-    },
-    {
-        "name": "minecraft:elytra",
-        "id": 580
-    },
-    {
-        "name": "minecraft:emerald",
-        "id": 528
-    },
-    {
-        "name": "minecraft:emerald_block",
-        "id": 133
-    },
-    {
-        "name": "minecraft:emerald_ore",
-        "id": 129
-    },
-    {
-        "name": "minecraft:empty_map",
-        "id": 531
-    },
-    {
-        "name": "minecraft:enchanted_book",
-        "id": 537
-    },
-    {
-        "name": "minecraft:enchanted_golden_apple",
-        "id": 263
-    },
-    {
-        "name": "minecraft:enchanting_table",
-        "id": 116
-    },
-    {
-        "name": "minecraft:end_brick_stairs",
-        "id": -178
-    },
-    {
-        "name": "minecraft:end_bricks",
-        "id": 206
-    },
-    {
-        "name": "minecraft:end_crystal",
-        "id": 758
-    },
-    {
-        "name": "minecraft:end_gateway",
-        "id": 209
-    },
-    {
-        "name": "minecraft:end_portal",
-        "id": 119
-    },
-    {
-        "name": "minecraft:end_portal_frame",
-        "id": 120
-    },
-    {
-        "name": "minecraft:end_rod",
-        "id": 208
-    },
-    {
-        "name": "minecraft:end_stone",
-        "id": 121
-    },
-    {
-        "name": "minecraft:ender_chest",
-        "id": 130
-    },
-    {
-        "name": "minecraft:ender_dragon_spawn_egg",
-        "id": 517
-    },
-    {
-        "name": "minecraft:ender_eye",
-        "id": 442
-    },
-    {
-        "name": "minecraft:ender_pearl",
-        "id": 430
-    },
-    {
-        "name": "minecraft:enderman_spawn_egg",
-        "id": 451
-    },
-    {
-        "name": "minecraft:endermite_spawn_egg",
-        "id": 469
-    },
-    {
-        "name": "minecraft:evoker_spawn_egg",
-        "id": 485
-    },
-    {
-        "name": "minecraft:experience_bottle",
-        "id": 524
-    },
-    {
-        "name": "minecraft:explorer_pottery_sherd",
-        "id": 682
-    },
-    {
-        "name": "minecraft:exposed_chiseled_copper",
-        "id": -761
-    },
-    {
-        "name": "minecraft:exposed_copper",
-        "id": -341
-    },
-    {
-        "name": "minecraft:exposed_copper_bulb",
-        "id": -777
-    },
-    {
-        "name": "minecraft:exposed_copper_door",
-        "id": -785
-    },
-    {
-        "name": "minecraft:exposed_copper_grate",
-        "id": -769
-    },
-    {
-        "name": "minecraft:exposed_copper_trapdoor",
-        "id": -793
-    },
-    {
-        "name": "minecraft:exposed_cut_copper",
-        "id": -348
-    },
-    {
-        "name": "minecraft:exposed_cut_copper_slab",
-        "id": -362
-    },
-    {
-        "name": "minecraft:exposed_cut_copper_stairs",
-        "id": -355
-    },
-    {
-        "name": "minecraft:exposed_double_cut_copper_slab",
-        "id": -369
-    },
-    {
-        "name": "minecraft:eye_armor_trim_smithing_template",
-        "id": 705
-    },
-    {
-        "name": "minecraft:farmland",
-        "id": 60
-    },
-    {
-        "name": "minecraft:feather",
-        "id": 334
-    },
-    {
-        "name": "minecraft:fence",
-        "id": 728
-    },
-    {
-        "name": "minecraft:fence_gate",
-        "id": 107
-    },
-    {
-        "name": "minecraft:fermented_spider_eye",
-        "id": 437
-    },
-    {
-        "name": "minecraft:fern",
-        "id": -848
-    },
-    {
-        "name": "minecraft:field_masoned_banner_pattern",
-        "id": 601
-    },
-    {
-        "name": "minecraft:filled_map",
-        "id": 428
-    },
-    {
-        "name": "minecraft:fire",
-        "id": 51
-    },
-    {
-        "name": "minecraft:fire_charge",
-        "id": 525
-    },
-    {
-        "name": "minecraft:fire_coral",
-        "id": -583
-    },
-    {
-        "name": "minecraft:fire_coral_block",
-        "id": -851
-    },
-    {
-        "name": "minecraft:fire_coral_fan",
-        "id": -842
-    },
-    {
-        "name": "minecraft:firework_rocket",
-        "id": 535
-    },
-    {
-        "name": "minecraft:firework_star",
-        "id": 536
-    },
-    {
-        "name": "minecraft:fishing_rod",
-        "id": 400
-    },
-    {
-        "name": "minecraft:fletching_table",
-        "id": -201
-    },
-    {
-        "name": "minecraft:flint",
-        "id": 363
-    },
-    {
-        "name": "minecraft:flint_and_steel",
-        "id": 305
-    },
-    {
-        "name": "minecraft:flow_armor_trim_smithing_template",
-        "id": 716
-    },
-    {
-        "name": "minecraft:flow_banner_pattern",
-        "id": 605
-    },
-    {
-        "name": "minecraft:flow_pottery_sherd",
-        "id": 683
-    },
-    {
-        "name": "minecraft:flower_banner_pattern",
-        "id": 597
-    },
-    {
-        "name": "minecraft:flower_pot",
-        "id": 530
-    },
-    {
-        "name": "minecraft:flowering_azalea",
-        "id": -338
-    },
-    {
-        "name": "minecraft:flowing_lava",
-        "id": 10
-    },
-    {
-        "name": "minecraft:flowing_water",
-        "id": 8
-    },
-    {
-        "name": "minecraft:fox_spawn_egg",
-        "id": 500
-    },
-    {
-        "name": "minecraft:frame",
-        "id": 529
-    },
-    {
-        "name": "minecraft:friend_pottery_sherd",
-        "id": 684
-    },
-    {
-        "name": "minecraft:frog_spawn",
-        "id": -468
-    },
-    {
-        "name": "minecraft:frog_spawn_egg",
-        "id": 647
-    },
-    {
-        "name": "minecraft:frosted_ice",
-        "id": 207
-    },
-    {
-        "name": "minecraft:furnace",
-        "id": 61
-    },
-    {
-        "name": "minecraft:ghast_spawn_egg",
-        "id": 463
-    },
-    {
-        "name": "minecraft:ghast_tear",
-        "id": 433
-    },
-    {
-        "name": "minecraft:gilded_blackstone",
-        "id": -281
-    },
-    {
-        "name": "minecraft:glass",
-        "id": 20
-    },
-    {
-        "name": "minecraft:glass_bottle",
-        "id": 436
-    },
-    {
-        "name": "minecraft:glass_pane",
-        "id": 102
-    },
-    {
-        "name": "minecraft:glistering_melon_slice",
-        "id": 443
-    },
-    {
-        "name": "minecraft:globe_banner_pattern",
-        "id": 604
-    },
-    {
-        "name": "minecraft:glow_berries",
-        "id": 759
-    },
-    {
-        "name": "minecraft:glow_frame",
-        "id": 642
-    },
-    {
-        "name": "minecraft:glow_ink_sac",
-        "id": 519
-    },
-    {
-        "name": "minecraft:glow_lichen",
-        "id": -411
-    },
-    {
-        "name": "minecraft:glow_squid_spawn_egg",
-        "id": 514
-    },
-    {
-        "name": "minecraft:glow_stick",
-        "id": 620
-    },
-    {
-        "name": "minecraft:glowingobsidian",
-        "id": 246
-    },
-    {
-        "name": "minecraft:glowstone",
-        "id": 89
-    },
-    {
-        "name": "minecraft:glowstone_dust",
-        "id": 402
-    },
-    {
-        "name": "minecraft:goat_horn",
-        "id": 646
-    },
-    {
-        "name": "minecraft:goat_spawn_egg",
-        "id": 513
-    },
-    {
-        "name": "minecraft:gold_block",
-        "id": 41
-    },
-    {
-        "name": "minecraft:gold_ingot",
-        "id": 312
-    },
-    {
-        "name": "minecraft:gold_nugget",
-        "id": 434
-    },
-    {
-        "name": "minecraft:gold_ore",
-        "id": 14
-    },
-    {
-        "name": "minecraft:golden_apple",
-        "id": 262
-    },
-    {
-        "name": "minecraft:golden_axe",
-        "id": 332
-    },
-    {
-        "name": "minecraft:golden_boots",
-        "id": 361
-    },
-    {
-        "name": "minecraft:golden_carrot",
-        "id": 287
-    },
-    {
-        "name": "minecraft:golden_chestplate",
-        "id": 359
-    },
-    {
-        "name": "minecraft:golden_helmet",
-        "id": 358
-    },
-    {
-        "name": "minecraft:golden_hoe",
-        "id": 340
-    },
-    {
-        "name": "minecraft:golden_horse_armor",
-        "id": 548
-    },
-    {
-        "name": "minecraft:golden_leggings",
-        "id": 360
-    },
-    {
-        "name": "minecraft:golden_pickaxe",
-        "id": 331
-    },
-    {
-        "name": "minecraft:golden_rail",
-        "id": 27
-    },
-    {
-        "name": "minecraft:golden_shovel",
-        "id": 330
-    },
-    {
-        "name": "minecraft:golden_sword",
-        "id": 329
-    },
-    {
-        "name": "minecraft:granite",
-        "id": -590
-    },
-    {
-        "name": "minecraft:granite_stairs",
-        "id": -169
-    },
-    {
-        "name": "minecraft:grass_block",
-        "id": 2
-    },
-    {
-        "name": "minecraft:grass_path",
-        "id": 198
-    },
-    {
-        "name": "minecraft:gravel",
-        "id": 13
-    },
-    {
-        "name": "minecraft:gray_candle",
-        "id": -420
-    },
-    {
-        "name": "minecraft:gray_candle_cake",
-        "id": -437
-    },
-    {
-        "name": "minecraft:gray_carpet",
-        "id": -603
-    },
-    {
-        "name": "minecraft:gray_concrete",
-        "id": -634
-    },
-    {
-        "name": "minecraft:gray_concrete_powder",
-        "id": -715
-    },
-    {
-        "name": "minecraft:gray_dye",
-        "id": 411
-    },
-    {
-        "name": "minecraft:gray_glazed_terracotta",
-        "id": 227
-    },
-    {
-        "name": "minecraft:gray_shulker_box",
-        "id": -619
-    },
-    {
-        "name": "minecraft:gray_stained_glass",
-        "id": -679
-    },
-    {
-        "name": "minecraft:gray_stained_glass_pane",
-        "id": -649
-    },
-    {
-        "name": "minecraft:gray_terracotta",
-        "id": -730
-    },
-    {
-        "name": "minecraft:gray_wool",
-        "id": -553
-    },
-    {
-        "name": "minecraft:green_candle",
-        "id": -426
-    },
-    {
-        "name": "minecraft:green_candle_cake",
-        "id": -443
-    },
-    {
-        "name": "minecraft:green_carpet",
-        "id": -609
-    },
-    {
-        "name": "minecraft:green_concrete",
-        "id": -640
-    },
-    {
-        "name": "minecraft:green_concrete_powder",
-        "id": -721
-    },
-    {
-        "name": "minecraft:green_dye",
-        "id": 405
-    },
-    {
-        "name": "minecraft:green_glazed_terracotta",
-        "id": 233
-    },
-    {
-        "name": "minecraft:green_shulker_box",
-        "id": -625
-    },
-    {
-        "name": "minecraft:green_stained_glass",
-        "id": -685
-    },
-    {
-        "name": "minecraft:green_stained_glass_pane",
-        "id": -655
-    },
-    {
-        "name": "minecraft:green_terracotta",
-        "id": -736
-    },
-    {
-        "name": "minecraft:green_wool",
-        "id": -560
-    },
-    {
-        "name": "minecraft:grindstone",
-        "id": -195
-    },
-    {
-        "name": "minecraft:guardian_spawn_egg",
-        "id": 470
-    },
-    {
-        "name": "minecraft:gunpowder",
-        "id": 335
-    },
-    {
-        "name": "minecraft:guster_banner_pattern",
-        "id": 606
-    },
-    {
-        "name": "minecraft:guster_pottery_sherd",
-        "id": 685
-    },
-    {
-        "name": "minecraft:hanging_roots",
-        "id": -319
-    },
-    {
-        "name": "minecraft:hard_black_stained_glass",
-        "id": -702
-    },
-    {
-        "name": "minecraft:hard_black_stained_glass_pane",
-        "id": -672
-    },
-    {
-        "name": "minecraft:hard_blue_stained_glass",
-        "id": -698
-    },
-    {
-        "name": "minecraft:hard_blue_stained_glass_pane",
-        "id": -668
-    },
-    {
-        "name": "minecraft:hard_brown_stained_glass",
-        "id": -699
-    },
-    {
-        "name": "minecraft:hard_brown_stained_glass_pane",
-        "id": -669
-    },
-    {
-        "name": "minecraft:hard_cyan_stained_glass",
-        "id": -696
-    },
-    {
-        "name": "minecraft:hard_cyan_stained_glass_pane",
-        "id": -666
-    },
-    {
-        "name": "minecraft:hard_glass",
-        "id": 253
-    },
-    {
-        "name": "minecraft:hard_glass_pane",
-        "id": 190
-    },
-    {
-        "name": "minecraft:hard_gray_stained_glass",
-        "id": -694
-    },
-    {
-        "name": "minecraft:hard_gray_stained_glass_pane",
-        "id": -664
-    },
-    {
-        "name": "minecraft:hard_green_stained_glass",
-        "id": -700
-    },
-    {
-        "name": "minecraft:hard_green_stained_glass_pane",
-        "id": -670
-    },
-    {
-        "name": "minecraft:hard_light_blue_stained_glass",
-        "id": -690
-    },
-    {
-        "name": "minecraft:hard_light_blue_stained_glass_pane",
-        "id": -660
-    },
-    {
-        "name": "minecraft:hard_light_gray_stained_glass",
-        "id": -695
-    },
-    {
-        "name": "minecraft:hard_light_gray_stained_glass_pane",
-        "id": -665
-    },
-    {
-        "name": "minecraft:hard_lime_stained_glass",
-        "id": -692
-    },
-    {
-        "name": "minecraft:hard_lime_stained_glass_pane",
-        "id": -662
-    },
-    {
-        "name": "minecraft:hard_magenta_stained_glass",
-        "id": -689
-    },
-    {
-        "name": "minecraft:hard_magenta_stained_glass_pane",
-        "id": -659
-    },
-    {
-        "name": "minecraft:hard_orange_stained_glass",
-        "id": -688
-    },
-    {
-        "name": "minecraft:hard_orange_stained_glass_pane",
-        "id": -658
-    },
-    {
-        "name": "minecraft:hard_pink_stained_glass",
-        "id": -693
-    },
-    {
-        "name": "minecraft:hard_pink_stained_glass_pane",
-        "id": -663
-    },
-    {
-        "name": "minecraft:hard_purple_stained_glass",
-        "id": -697
-    },
-    {
-        "name": "minecraft:hard_purple_stained_glass_pane",
-        "id": -667
-    },
-    {
-        "name": "minecraft:hard_red_stained_glass",
-        "id": -701
-    },
-    {
-        "name": "minecraft:hard_red_stained_glass_pane",
-        "id": -671
-    },
-    {
-        "name": "minecraft:hard_stained_glass",
-        "id": 752
-    },
-    {
-        "name": "minecraft:hard_stained_glass_pane",
-        "id": 753
-    },
-    {
-        "name": "minecraft:hard_white_stained_glass",
-        "id": 254
-    },
-    {
-        "name": "minecraft:hard_white_stained_glass_pane",
-        "id": 191
-    },
-    {
-        "name": "minecraft:hard_yellow_stained_glass",
-        "id": -691
-    },
-    {
-        "name": "minecraft:hard_yellow_stained_glass_pane",
-        "id": -661
-    },
-    {
-        "name": "minecraft:hardened_clay",
-        "id": 172
-    },
-    {
-        "name": "minecraft:hay_block",
-        "id": 170
-    },
-    {
-        "name": "minecraft:heart_of_the_sea",
-        "id": 587
-    },
-    {
-        "name": "minecraft:heart_pottery_sherd",
-        "id": 686
-    },
-    {
-        "name": "minecraft:heartbreak_pottery_sherd",
-        "id": 687
-    },
-    {
-        "name": "minecraft:heavy_core",
-        "id": -316
-    },
-    {
-        "name": "minecraft:heavy_weighted_pressure_plate",
-        "id": 148
-    },
-    {
-        "name": "minecraft:hoglin_spawn_egg",
-        "id": 506
-    },
-    {
-        "name": "minecraft:honey_block",
-        "id": -220
-    },
-    {
-        "name": "minecraft:honey_bottle",
-        "id": 610
-    },
-    {
-        "name": "minecraft:honeycomb",
-        "id": 609
-    },
-    {
-        "name": "minecraft:honeycomb_block",
-        "id": -221
-    },
-    {
-        "name": "minecraft:hopper",
-        "id": 543
-    },
-    {
-        "name": "minecraft:hopper_minecart",
-        "id": 542
-    },
-    {
-        "name": "minecraft:horn_coral",
-        "id": -584
-    },
-    {
-        "name": "minecraft:horn_coral_block",
-        "id": -852
-    },
-    {
-        "name": "minecraft:horn_coral_fan",
-        "id": -843
-    },
-    {
-        "name": "minecraft:horse_spawn_egg",
-        "id": 467
-    },
-    {
-        "name": "minecraft:host_armor_trim_smithing_template",
-        "id": 715
-    },
-    {
-        "name": "minecraft:howl_pottery_sherd",
-        "id": 688
-    },
-    {
-        "name": "minecraft:husk_spawn_egg",
-        "id": 473
-    },
-    {
-        "name": "minecraft:ice",
-        "id": 79
-    },
-    {
-        "name": "minecraft:ice_bomb",
-        "id": 614
-    },
-    {
-        "name": "minecraft:infested_deepslate",
-        "id": -454
-    },
-    {
-        "name": "minecraft:info_update",
-        "id": 248
-    },
-    {
-        "name": "minecraft:info_update2",
-        "id": 249
-    },
-    {
-        "name": "minecraft:ink_sac",
-        "id": 421
-    },
-    {
-        "name": "minecraft:invisible_bedrock",
-        "id": 95
-    },
-    {
-        "name": "minecraft:iron_axe",
-        "id": 304
-    },
-    {
-        "name": "minecraft:iron_bars",
-        "id": 101
-    },
-    {
-        "name": "minecraft:iron_block",
-        "id": 42
-    },
-    {
-        "name": "minecraft:iron_boots",
-        "id": 353
-    },
-    {
-        "name": "minecraft:iron_chestplate",
-        "id": 351
-    },
-    {
-        "name": "minecraft:iron_door",
-        "id": 379
-    },
-    {
-        "name": "minecraft:iron_golem_spawn_egg",
-        "id": 515
-    },
-    {
-        "name": "minecraft:iron_helmet",
-        "id": 350
-    },
-    {
-        "name": "minecraft:iron_hoe",
-        "id": 338
-    },
-    {
-        "name": "minecraft:iron_horse_armor",
-        "id": 547
-    },
-    {
-        "name": "minecraft:iron_ingot",
-        "id": 311
-    },
-    {
-        "name": "minecraft:iron_leggings",
-        "id": 352
-    },
-    {
-        "name": "minecraft:iron_nugget",
-        "id": 585
-    },
-    {
-        "name": "minecraft:iron_ore",
-        "id": 15
-    },
-    {
-        "name": "minecraft:iron_pickaxe",
-        "id": 303
-    },
-    {
-        "name": "minecraft:iron_shovel",
-        "id": 302
-    },
-    {
-        "name": "minecraft:iron_sword",
-        "id": 313
-    },
-    {
-        "name": "minecraft:iron_trapdoor",
-        "id": 167
-    },
-    {
-        "name": "minecraft:item.acacia_door",
-        "id": 196
-    },
-    {
-        "name": "minecraft:item.bed",
-        "id": 26
-    },
-    {
-        "name": "minecraft:item.beetroot",
-        "id": 244
-    },
-    {
-        "name": "minecraft:item.birch_door",
-        "id": 194
-    },
-    {
-        "name": "minecraft:item.brewing_stand",
-        "id": 117
-    },
-    {
-        "name": "minecraft:item.cake",
-        "id": 92
-    },
-    {
-        "name": "minecraft:item.camera",
-        "id": 242
-    },
-    {
-        "name": "minecraft:item.campfire",
-        "id": -209
-    },
-    {
-        "name": "minecraft:item.cauldron",
-        "id": 118
-    },
-    {
-        "name": "minecraft:item.chain",
-        "id": -286
-    },
-    {
-        "name": "minecraft:item.crimson_door",
-        "id": -244
-    },
-    {
-        "name": "minecraft:item.dark_oak_door",
-        "id": 197
-    },
-    {
-        "name": "minecraft:item.flower_pot",
-        "id": 140
-    },
-    {
-        "name": "minecraft:item.frame",
-        "id": 199
-    },
-    {
-        "name": "minecraft:item.glow_frame",
-        "id": -339
-    },
-    {
-        "name": "minecraft:item.hopper",
-        "id": 154
-    },
-    {
-        "name": "minecraft:item.iron_door",
-        "id": 71
-    },
-    {
-        "name": "minecraft:item.jungle_door",
-        "id": 195
-    },
-    {
-        "name": "minecraft:item.kelp",
-        "id": -138
-    },
-    {
-        "name": "minecraft:item.mangrove_door",
-        "id": -493
-    },
-    {
-        "name": "minecraft:item.nether_sprouts",
-        "id": -238
-    },
-    {
-        "name": "minecraft:item.nether_wart",
-        "id": 115
-    },
-    {
-        "name": "minecraft:item.reeds",
-        "id": 83
-    },
-    {
-        "name": "minecraft:item.skull",
-        "id": 144
-    },
-    {
-        "name": "minecraft:item.soul_campfire",
-        "id": -290
-    },
-    {
-        "name": "minecraft:item.spruce_door",
-        "id": 193
-    },
-    {
-        "name": "minecraft:item.warped_door",
-        "id": -245
-    },
-    {
-        "name": "minecraft:item.wheat",
-        "id": 59
-    },
-    {
-        "name": "minecraft:item.wooden_door",
-        "id": 64
-    },
-    {
-        "name": "minecraft:jigsaw",
-        "id": -211
-    },
-    {
-        "name": "minecraft:jukebox",
-        "id": 84
-    },
-    {
-        "name": "minecraft:jungle_boat",
-        "id": 385
-    },
-    {
-        "name": "minecraft:jungle_button",
-        "id": -143
-    },
-    {
-        "name": "minecraft:jungle_chest_boat",
-        "id": 659
-    },
-    {
-        "name": "minecraft:jungle_door",
-        "id": 571
-    },
-    {
-        "name": "minecraft:jungle_double_slab",
-        "id": -811
-    },
-    {
-        "name": "minecraft:jungle_fence",
-        "id": -578
-    },
-    {
-        "name": "minecraft:jungle_fence_gate",
-        "id": 185
-    },
-    {
-        "name": "minecraft:jungle_hanging_sign",
-        "id": -503
-    },
-    {
-        "name": "minecraft:jungle_leaves",
-        "id": -802
-    },
-    {
-        "name": "minecraft:jungle_log",
-        "id": -571
-    },
-    {
-        "name": "minecraft:jungle_planks",
-        "id": -741
-    },
-    {
-        "name": "minecraft:jungle_pressure_plate",
-        "id": -153
-    },
-    {
-        "name": "minecraft:jungle_sapling",
-        "id": -827
-    },
-    {
-        "name": "minecraft:jungle_sign",
-        "id": 594
-    },
-    {
-        "name": "minecraft:jungle_slab",
-        "id": -806
-    },
-    {
-        "name": "minecraft:jungle_stairs",
-        "id": 136
-    },
-    {
-        "name": "minecraft:jungle_standing_sign",
-        "id": -188
-    },
-    {
-        "name": "minecraft:jungle_trapdoor",
-        "id": -148
-    },
-    {
-        "name": "minecraft:jungle_wall_sign",
-        "id": -189
-    },
-    {
-        "name": "minecraft:jungle_wood",
-        "id": -816
-    },
-    {
-        "name": "minecraft:kelp",
-        "id": 390
-    },
-    {
-        "name": "minecraft:ladder",
-        "id": 65
-    },
-    {
-        "name": "minecraft:lantern",
-        "id": -208
-    },
-    {
-        "name": "minecraft:lapis_block",
-        "id": 22
-    },
-    {
-        "name": "minecraft:lapis_lazuli",
-        "id": 422
-    },
-    {
-        "name": "minecraft:lapis_ore",
-        "id": 21
-    },
-    {
-        "name": "minecraft:large_amethyst_bud",
-        "id": -330
-    },
-    {
-        "name": "minecraft:large_fern",
-        "id": -865
-    },
-    {
-        "name": "minecraft:lava",
-        "id": 11
-    },
-    {
-        "name": "minecraft:lava_bucket",
-        "id": 370
-    },
-    {
-        "name": "minecraft:lead",
-        "id": 563
-    },
-    {
-        "name": "minecraft:leather",
-        "id": 389
-    },
-    {
-        "name": "minecraft:leather_boots",
-        "id": 345
-    },
-    {
-        "name": "minecraft:leather_chestplate",
-        "id": 343
-    },
-    {
-        "name": "minecraft:leather_helmet",
-        "id": 342
-    },
-    {
-        "name": "minecraft:leather_horse_armor",
-        "id": 546
-    },
-    {
-        "name": "minecraft:leather_leggings",
-        "id": 344
-    },
-    {
-        "name": "minecraft:leaves",
-        "id": 733
-    },
-    {
-        "name": "minecraft:leaves2",
-        "id": 734
-    },
-    {
-        "name": "minecraft:lectern",
-        "id": -194
-    },
-    {
-        "name": "minecraft:lever",
-        "id": 69
-    },
-    {
-        "name": "minecraft:light_block",
-        "id": -215
-    },
-    {
-        "name": "minecraft:light_blue_candle",
-        "id": -416
-    },
-    {
-        "name": "minecraft:light_blue_candle_cake",
-        "id": -433
-    },
-    {
-        "name": "minecraft:light_blue_carpet",
-        "id": -599
-    },
-    {
-        "name": "minecraft:light_blue_concrete",
-        "id": -630
-    },
-    {
-        "name": "minecraft:light_blue_concrete_powder",
-        "id": -711
-    },
-    {
-        "name": "minecraft:light_blue_dye",
-        "id": 415
-    },
-    {
-        "name": "minecraft:light_blue_glazed_terracotta",
-        "id": 223
-    },
-    {
-        "name": "minecraft:light_blue_shulker_box",
-        "id": -615
-    },
-    {
-        "name": "minecraft:light_blue_stained_glass",
-        "id": -675
-    },
-    {
-        "name": "minecraft:light_blue_stained_glass_pane",
-        "id": -645
-    },
-    {
-        "name": "minecraft:light_blue_terracotta",
-        "id": -726
-    },
-    {
-        "name": "minecraft:light_blue_wool",
-        "id": -562
-    },
-    {
-        "name": "minecraft:light_gray_candle",
-        "id": -421
-    },
-    {
-        "name": "minecraft:light_gray_candle_cake",
-        "id": -438
-    },
-    {
-        "name": "minecraft:light_gray_carpet",
-        "id": -604
-    },
-    {
-        "name": "minecraft:light_gray_concrete",
-        "id": -635
-    },
-    {
-        "name": "minecraft:light_gray_concrete_powder",
-        "id": -716
-    },
-    {
-        "name": "minecraft:light_gray_dye",
-        "id": 410
-    },
-    {
-        "name": "minecraft:light_gray_shulker_box",
-        "id": -620
-    },
-    {
-        "name": "minecraft:light_gray_stained_glass",
-        "id": -680
-    },
-    {
-        "name": "minecraft:light_gray_stained_glass_pane",
-        "id": -650
-    },
-    {
-        "name": "minecraft:light_gray_terracotta",
-        "id": -731
-    },
-    {
-        "name": "minecraft:light_gray_wool",
-        "id": -552
-    },
-    {
-        "name": "minecraft:light_weighted_pressure_plate",
-        "id": 147
-    },
-    {
-        "name": "minecraft:lightning_rod",
-        "id": -312
-    },
-    {
-        "name": "minecraft:lilac",
-        "id": -863
-    },
-    {
-        "name": "minecraft:lily_of_the_valley",
-        "id": -839
-    },
-    {
-        "name": "minecraft:lime_candle",
-        "id": -418
-    },
-    {
-        "name": "minecraft:lime_candle_cake",
-        "id": -435
-    },
-    {
-        "name": "minecraft:lime_carpet",
-        "id": -601
-    },
-    {
-        "name": "minecraft:lime_concrete",
-        "id": -632
-    },
-    {
-        "name": "minecraft:lime_concrete_powder",
-        "id": -713
-    },
-    {
-        "name": "minecraft:lime_dye",
-        "id": 413
-    },
-    {
-        "name": "minecraft:lime_glazed_terracotta",
-        "id": 225
-    },
-    {
-        "name": "minecraft:lime_shulker_box",
-        "id": -617
-    },
-    {
-        "name": "minecraft:lime_stained_glass",
-        "id": -677
-    },
-    {
-        "name": "minecraft:lime_stained_glass_pane",
-        "id": -647
-    },
-    {
-        "name": "minecraft:lime_terracotta",
-        "id": -728
-    },
-    {
-        "name": "minecraft:lime_wool",
-        "id": -559
-    },
-    {
-        "name": "minecraft:lingering_potion",
-        "id": 578
-    },
-    {
-        "name": "minecraft:lit_blast_furnace",
-        "id": -214
-    },
-    {
-        "name": "minecraft:lit_deepslate_redstone_ore",
-        "id": -404
-    },
-    {
-        "name": "minecraft:lit_furnace",
-        "id": 62
-    },
-    {
-        "name": "minecraft:lit_pumpkin",
-        "id": 91
-    },
-    {
-        "name": "minecraft:lit_redstone_lamp",
-        "id": 124
-    },
-    {
-        "name": "minecraft:lit_redstone_ore",
-        "id": 74
-    },
-    {
-        "name": "minecraft:lit_smoker",
-        "id": -199
-    },
-    {
-        "name": "minecraft:llama_spawn_egg",
-        "id": 483
-    },
-    {
-        "name": "minecraft:lodestone",
-        "id": -222
-    },
-    {
-        "name": "minecraft:lodestone_compass",
-        "id": 621
-    },
-    {
-        "name": "minecraft:log",
-        "id": 727
-    },
-    {
-        "name": "minecraft:log2",
-        "id": 742
-    },
-    {
-        "name": "minecraft:loom",
-        "id": -204
-    },
-    {
-        "name": "minecraft:mace",
-        "id": 326
-    },
-    {
-        "name": "minecraft:magenta_candle",
-        "id": -415
-    },
-    {
-        "name": "minecraft:magenta_candle_cake",
-        "id": -432
-    },
-    {
-        "name": "minecraft:magenta_carpet",
-        "id": -598
-    },
-    {
-        "name": "minecraft:magenta_concrete",
-        "id": -629
-    },
-    {
-        "name": "minecraft:magenta_concrete_powder",
-        "id": -710
-    },
-    {
-        "name": "minecraft:magenta_dye",
-        "id": 416
-    },
-    {
-        "name": "minecraft:magenta_glazed_terracotta",
-        "id": 222
-    },
-    {
-        "name": "minecraft:magenta_shulker_box",
-        "id": -614
-    },
-    {
-        "name": "minecraft:magenta_stained_glass",
-        "id": -674
-    },
-    {
-        "name": "minecraft:magenta_stained_glass_pane",
-        "id": -644
-    },
-    {
-        "name": "minecraft:magenta_terracotta",
-        "id": -725
-    },
-    {
-        "name": "minecraft:magenta_wool",
-        "id": -565
-    },
-    {
-        "name": "minecraft:magma",
-        "id": 213
-    },
-    {
-        "name": "minecraft:magma_cream",
-        "id": 439
-    },
-    {
-        "name": "minecraft:magma_cube_spawn_egg",
-        "id": 464
-    },
-    {
-        "name": "minecraft:mangrove_boat",
-        "id": 654
-    },
-    {
-        "name": "minecraft:mangrove_button",
-        "id": -487
-    },
-    {
-        "name": "minecraft:mangrove_chest_boat",
-        "id": 663
-    },
-    {
-        "name": "minecraft:mangrove_door",
-        "id": 652
-    },
-    {
-        "name": "minecraft:mangrove_double_slab",
-        "id": -499
-    },
-    {
-        "name": "minecraft:mangrove_fence",
-        "id": -491
-    },
-    {
-        "name": "minecraft:mangrove_fence_gate",
-        "id": -492
-    },
-    {
-        "name": "minecraft:mangrove_hanging_sign",
-        "id": -508
-    },
-    {
-        "name": "minecraft:mangrove_leaves",
-        "id": -472
-    },
-    {
-        "name": "minecraft:mangrove_log",
-        "id": -484
-    },
-    {
-        "name": "minecraft:mangrove_planks",
-        "id": -486
-    },
-    {
-        "name": "minecraft:mangrove_pressure_plate",
-        "id": -490
-    },
-    {
-        "name": "minecraft:mangrove_propagule",
-        "id": -474
-    },
-    {
-        "name": "minecraft:mangrove_roots",
-        "id": -482
-    },
-    {
-        "name": "minecraft:mangrove_sign",
-        "id": 653
-    },
-    {
-        "name": "minecraft:mangrove_slab",
-        "id": -489
-    },
-    {
-        "name": "minecraft:mangrove_stairs",
-        "id": -488
-    },
-    {
-        "name": "minecraft:mangrove_standing_sign",
-        "id": -494
-    },
-    {
-        "name": "minecraft:mangrove_trapdoor",
-        "id": -496
-    },
-    {
-        "name": "minecraft:mangrove_wall_sign",
-        "id": -495
-    },
-    {
-        "name": "minecraft:mangrove_wood",
-        "id": -497
-    },
-    {
-        "name": "minecraft:medicine",
-        "id": 618
-    },
-    {
-        "name": "minecraft:medium_amethyst_bud",
-        "id": -331
-    },
-    {
-        "name": "minecraft:melon_block",
-        "id": 103
-    },
-    {
-        "name": "minecraft:melon_seeds",
-        "id": 297
-    },
-    {
-        "name": "minecraft:melon_slice",
-        "id": 276
-    },
-    {
-        "name": "minecraft:melon_stem",
-        "id": 105
-    },
-    {
-        "name": "minecraft:milk_bucket",
-        "id": 368
-    },
-    {
-        "name": "minecraft:minecart",
-        "id": 377
-    },
-    {
-        "name": "minecraft:miner_pottery_sherd",
-        "id": 689
-    },
-    {
-        "name": "minecraft:mob_spawner",
-        "id": 52
-    },
-    {
-        "name": "minecraft:mojang_banner_pattern",
-        "id": 600
-    },
-    {
-        "name": "minecraft:monster_egg",
-        "id": 97
-    },
-    {
-        "name": "minecraft:mooshroom_spawn_egg",
-        "id": 449
-    },
-    {
-        "name": "minecraft:moss_block",
-        "id": -320
-    },
-    {
-        "name": "minecraft:moss_carpet",
-        "id": -335
-    },
-    {
-        "name": "minecraft:mossy_cobblestone",
-        "id": 48
-    },
-    {
-        "name": "minecraft:mossy_cobblestone_stairs",
-        "id": -179
-    },
-    {
-        "name": "minecraft:mossy_stone_brick_stairs",
-        "id": -175
-    },
-    {
-        "name": "minecraft:mourner_pottery_sherd",
-        "id": 690
-    },
-    {
-        "name": "minecraft:moving_block",
-        "id": 250
-    },
-    {
-        "name": "minecraft:mud",
-        "id": -473
-    },
-    {
-        "name": "minecraft:mud_brick_double_slab",
-        "id": -479
-    },
-    {
-        "name": "minecraft:mud_brick_slab",
-        "id": -478
-    },
-    {
-        "name": "minecraft:mud_brick_stairs",
-        "id": -480
-    },
-    {
-        "name": "minecraft:mud_brick_wall",
-        "id": -481
-    },
-    {
-        "name": "minecraft:mud_bricks",
-        "id": -475
-    },
-    {
-        "name": "minecraft:muddy_mangrove_roots",
-        "id": -483
-    },
-    {
-        "name": "minecraft:mule_spawn_egg",
-        "id": 476
-    },
-    {
-        "name": "minecraft:mushroom_stew",
-        "id": 264
-    },
-    {
-        "name": "minecraft:music_disc_11",
-        "id": 560
-    },
-    {
-        "name": "minecraft:music_disc_13",
-        "id": 550
-    },
-    {
-        "name": "minecraft:music_disc_5",
-        "id": 655
-    },
-    {
-        "name": "minecraft:music_disc_blocks",
-        "id": 552
-    },
-    {
-        "name": "minecraft:music_disc_cat",
-        "id": 551
-    },
-    {
-        "name": "minecraft:music_disc_chirp",
-        "id": 553
-    },
-    {
-        "name": "minecraft:music_disc_creator",
-        "id": 749
-    },
-    {
-        "name": "minecraft:music_disc_creator_music_box",
-        "id": 750
-    },
-    {
-        "name": "minecraft:music_disc_far",
-        "id": 554
-    },
-    {
-        "name": "minecraft:music_disc_mall",
-        "id": 555
-    },
-    {
-        "name": "minecraft:music_disc_mellohi",
-        "id": 556
-    },
-    {
-        "name": "minecraft:music_disc_otherside",
-        "id": 645
-    },
-    {
-        "name": "minecraft:music_disc_pigstep",
-        "id": 639
-    },
-    {
-        "name": "minecraft:music_disc_precipice",
-        "id": 751
-    },
-    {
-        "name": "minecraft:music_disc_relic",
-        "id": 718
-    },
-    {
-        "name": "minecraft:music_disc_stal",
-        "id": 557
-    },
-    {
-        "name": "minecraft:music_disc_strad",
-        "id": 558
-    },
-    {
-        "name": "minecraft:music_disc_wait",
-        "id": 561
-    },
-    {
-        "name": "minecraft:music_disc_ward",
-        "id": 559
-    },
-    {
-        "name": "minecraft:mutton",
-        "id": 566
-    },
-    {
-        "name": "minecraft:mycelium",
-        "id": 110
-    },
-    {
-        "name": "minecraft:name_tag",
-        "id": 564
-    },
-    {
-        "name": "minecraft:nautilus_shell",
-        "id": 586
-    },
-    {
-        "name": "minecraft:nether_brick",
-        "id": 112
-    },
-    {
-        "name": "minecraft:nether_brick_fence",
-        "id": 113
-    },
-    {
-        "name": "minecraft:nether_brick_slab",
-        "id": -877
-    },
-    {
-        "name": "minecraft:nether_brick_stairs",
-        "id": 114
-    },
-    {
-        "name": "minecraft:nether_gold_ore",
-        "id": -288
-    },
-    {
-        "name": "minecraft:nether_sprouts",
-        "id": 640
-    },
-    {
-        "name": "minecraft:nether_star",
-        "id": 534
-    },
-    {
-        "name": "minecraft:nether_wart",
-        "id": 298
-    },
-    {
-        "name": "minecraft:nether_wart_block",
-        "id": 214
-    },
-    {
-        "name": "minecraft:netherbrick",
-        "id": 539
-    },
-    {
-        "name": "minecraft:netherite_axe",
-        "id": 625
-    },
-    {
-        "name": "minecraft:netherite_block",
-        "id": -270
-    },
-    {
-        "name": "minecraft:netherite_boots",
-        "id": 631
-    },
-    {
-        "name": "minecraft:netherite_chestplate",
-        "id": 629
-    },
-    {
-        "name": "minecraft:netherite_helmet",
-        "id": 628
-    },
-    {
-        "name": "minecraft:netherite_hoe",
-        "id": 626
-    },
-    {
-        "name": "minecraft:netherite_ingot",
-        "id": 627
-    },
-    {
-        "name": "minecraft:netherite_leggings",
-        "id": 630
-    },
-    {
-        "name": "minecraft:netherite_pickaxe",
-        "id": 624
-    },
-    {
-        "name": "minecraft:netherite_scrap",
-        "id": 632
-    },
-    {
-        "name": "minecraft:netherite_shovel",
-        "id": 623
-    },
-    {
-        "name": "minecraft:netherite_sword",
-        "id": 622
-    },
-    {
-        "name": "minecraft:netherite_upgrade_smithing_template",
-        "id": 699
-    },
-    {
-        "name": "minecraft:netherrack",
-        "id": 87
-    },
-    {
-        "name": "minecraft:netherreactor",
-        "id": 247
-    },
-    {
-        "name": "minecraft:normal_stone_stairs",
-        "id": -180
-    },
-    {
-        "name": "minecraft:noteblock",
-        "id": 25
-    },
-    {
-        "name": "minecraft:npc_spawn_egg",
-        "id": 480
-    },
-    {
-        "name": "minecraft:oak_boat",
-        "id": 383
-    },
-    {
-        "name": "minecraft:oak_chest_boat",
-        "id": 657
-    },
-    {
-        "name": "minecraft:oak_double_slab",
-        "id": 157
-    },
-    {
-        "name": "minecraft:oak_fence",
-        "id": 85
-    },
-    {
-        "name": "minecraft:oak_hanging_sign",
-        "id": -500
-    },
-    {
-        "name": "minecraft:oak_leaves",
-        "id": 18
-    },
-    {
-        "name": "minecraft:oak_log",
-        "id": 17
-    },
-    {
-        "name": "minecraft:oak_planks",
-        "id": 5
-    },
-    {
-        "name": "minecraft:oak_sapling",
-        "id": 6
-    },
-    {
-        "name": "minecraft:oak_sign",
-        "id": 365
-    },
-    {
-        "name": "minecraft:oak_slab",
-        "id": 158
-    },
-    {
-        "name": "minecraft:oak_stairs",
-        "id": 53
-    },
-    {
-        "name": "minecraft:oak_wood",
-        "id": -212
-    },
-    {
-        "name": "minecraft:observer",
-        "id": 251
-    },
-    {
-        "name": "minecraft:obsidian",
-        "id": 49
-    },
-    {
-        "name": "minecraft:ocelot_spawn_egg",
-        "id": 460
-    },
-    {
-        "name": "minecraft:ochre_froglight",
-        "id": -471
-    },
-    {
-        "name": "minecraft:ominous_bottle",
-        "id": 611
-    },
-    {
-        "name": "minecraft:ominous_trial_key",
-        "id": 258
-    },
-    {
-        "name": "minecraft:orange_candle",
-        "id": -414
-    },
-    {
-        "name": "minecraft:orange_candle_cake",
-        "id": -431
-    },
-    {
-        "name": "minecraft:orange_carpet",
-        "id": -597
-    },
-    {
-        "name": "minecraft:orange_concrete",
-        "id": -628
-    },
-    {
-        "name": "minecraft:orange_concrete_powder",
-        "id": -709
-    },
-    {
-        "name": "minecraft:orange_dye",
-        "id": 417
-    },
-    {
-        "name": "minecraft:orange_glazed_terracotta",
-        "id": 221
-    },
-    {
-        "name": "minecraft:orange_shulker_box",
-        "id": -613
-    },
-    {
-        "name": "minecraft:orange_stained_glass",
-        "id": -673
-    },
-    {
-        "name": "minecraft:orange_stained_glass_pane",
-        "id": -643
-    },
-    {
-        "name": "minecraft:orange_terracotta",
-        "id": -724
-    },
-    {
-        "name": "minecraft:orange_tulip",
-        "id": -834
-    },
-    {
-        "name": "minecraft:orange_wool",
-        "id": -557
-    },
-    {
-        "name": "minecraft:oxeye_daisy",
-        "id": -837
-    },
-    {
-        "name": "minecraft:oxidized_chiseled_copper",
-        "id": -763
-    },
-    {
-        "name": "minecraft:oxidized_copper",
-        "id": -343
-    },
-    {
-        "name": "minecraft:oxidized_copper_bulb",
-        "id": -779
-    },
-    {
-        "name": "minecraft:oxidized_copper_door",
-        "id": -787
-    },
-    {
-        "name": "minecraft:oxidized_copper_grate",
-        "id": -771
-    },
-    {
-        "name": "minecraft:oxidized_copper_trapdoor",
-        "id": -795
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper",
-        "id": -350
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper_slab",
-        "id": -364
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper_stairs",
-        "id": -357
-    },
-    {
-        "name": "minecraft:oxidized_double_cut_copper_slab",
-        "id": -371
-    },
-    {
-        "name": "minecraft:packed_ice",
-        "id": 174
-    },
-    {
-        "name": "minecraft:packed_mud",
-        "id": -477
-    },
-    {
-        "name": "minecraft:painting",
-        "id": 364
-    },
-    {
-        "name": "minecraft:panda_spawn_egg",
-        "id": 499
-    },
-    {
-        "name": "minecraft:paper",
-        "id": 394
-    },
-    {
-        "name": "minecraft:parrot_spawn_egg",
-        "id": 488
-    },
-    {
-        "name": "minecraft:pearlescent_froglight",
-        "id": -469
-    },
-    {
-        "name": "minecraft:peony",
-        "id": -867
-    },
-    {
-        "name": "minecraft:petrified_oak_slab",
-        "id": -902
-    },
-    {
-        "name": "minecraft:phantom_membrane",
-        "id": 590
-    },
-    {
-        "name": "minecraft:phantom_spawn_egg",
-        "id": 496
-    },
-    {
-        "name": "minecraft:pig_spawn_egg",
-        "id": 446
-    },
-    {
-        "name": "minecraft:piglin_banner_pattern",
-        "id": 603
-    },
-    {
-        "name": "minecraft:piglin_brute_spawn_egg",
-        "id": 509
-    },
-    {
-        "name": "minecraft:piglin_spawn_egg",
-        "id": 507
-    },
-    {
-        "name": "minecraft:pillager_spawn_egg",
-        "id": 501
-    },
-    {
-        "name": "minecraft:pink_candle",
-        "id": -419
-    },
-    {
-        "name": "minecraft:pink_candle_cake",
-        "id": -436
-    },
-    {
-        "name": "minecraft:pink_carpet",
-        "id": -602
-    },
-    {
-        "name": "minecraft:pink_concrete",
-        "id": -633
-    },
-    {
-        "name": "minecraft:pink_concrete_powder",
-        "id": -714
-    },
-    {
-        "name": "minecraft:pink_dye",
-        "id": 412
-    },
-    {
-        "name": "minecraft:pink_glazed_terracotta",
-        "id": 226
-    },
-    {
-        "name": "minecraft:pink_petals",
-        "id": -549
-    },
-    {
-        "name": "minecraft:pink_shulker_box",
-        "id": -618
-    },
-    {
-        "name": "minecraft:pink_stained_glass",
-        "id": -678
-    },
-    {
-        "name": "minecraft:pink_stained_glass_pane",
-        "id": -648
-    },
-    {
-        "name": "minecraft:pink_terracotta",
-        "id": -729
-    },
-    {
-        "name": "minecraft:pink_tulip",
-        "id": -836
-    },
-    {
-        "name": "minecraft:pink_wool",
-        "id": -566
-    },
-    {
-        "name": "minecraft:piston",
-        "id": 33
-    },
-    {
-        "name": "minecraft:piston_arm_collision",
-        "id": 34
-    },
-    {
-        "name": "minecraft:pitcher_crop",
-        "id": -574
-    },
-    {
-        "name": "minecraft:pitcher_plant",
-        "id": -612
-    },
-    {
-        "name": "minecraft:pitcher_pod",
-        "id": 301
-    },
-    {
-        "name": "minecraft:planks",
-        "id": 739
-    },
-    {
-        "name": "minecraft:plenty_pottery_sherd",
-        "id": 691
-    },
-    {
-        "name": "minecraft:podzol",
-        "id": 243
-    },
-    {
-        "name": "minecraft:pointed_dripstone",
-        "id": -308
-    },
-    {
-        "name": "minecraft:poisonous_potato",
-        "id": 286
-    },
-    {
-        "name": "minecraft:polar_bear_spawn_egg",
-        "id": 482
-    },
-    {
-        "name": "minecraft:polished_andesite",
-        "id": -595
-    },
-    {
-        "name": "minecraft:polished_andesite_stairs",
-        "id": -174
-    },
-    {
-        "name": "minecraft:polished_basalt",
-        "id": -235
-    },
-    {
-        "name": "minecraft:polished_blackstone",
-        "id": -291
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_double_slab",
-        "id": -285
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_slab",
-        "id": -284
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_stairs",
-        "id": -275
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_wall",
-        "id": -278
-    },
-    {
-        "name": "minecraft:polished_blackstone_bricks",
-        "id": -274
-    },
-    {
-        "name": "minecraft:polished_blackstone_button",
-        "id": -296
-    },
-    {
-        "name": "minecraft:polished_blackstone_double_slab",
-        "id": -294
-    },
-    {
-        "name": "minecraft:polished_blackstone_pressure_plate",
-        "id": -295
-    },
-    {
-        "name": "minecraft:polished_blackstone_slab",
-        "id": -293
-    },
-    {
-        "name": "minecraft:polished_blackstone_stairs",
-        "id": -292
-    },
-    {
-        "name": "minecraft:polished_blackstone_wall",
-        "id": -297
-    },
-    {
-        "name": "minecraft:polished_deepslate",
-        "id": -383
-    },
-    {
-        "name": "minecraft:polished_deepslate_double_slab",
-        "id": -397
-    },
-    {
-        "name": "minecraft:polished_deepslate_slab",
-        "id": -384
-    },
-    {
-        "name": "minecraft:polished_deepslate_stairs",
-        "id": -385
-    },
-    {
-        "name": "minecraft:polished_deepslate_wall",
-        "id": -386
-    },
-    {
-        "name": "minecraft:polished_diorite",
-        "id": -593
-    },
-    {
-        "name": "minecraft:polished_diorite_stairs",
-        "id": -173
-    },
-    {
-        "name": "minecraft:polished_granite",
-        "id": -591
-    },
-    {
-        "name": "minecraft:polished_granite_stairs",
-        "id": -172
-    },
-    {
-        "name": "minecraft:polished_tuff",
-        "id": -748
-    },
-    {
-        "name": "minecraft:polished_tuff_double_slab",
-        "id": -750
-    },
-    {
-        "name": "minecraft:polished_tuff_slab",
-        "id": -749
-    },
-    {
-        "name": "minecraft:polished_tuff_stairs",
-        "id": -751
-    },
-    {
-        "name": "minecraft:polished_tuff_wall",
-        "id": -752
-    },
-    {
-        "name": "minecraft:popped_chorus_fruit",
-        "id": 575
-    },
-    {
-        "name": "minecraft:poppy",
-        "id": 38
-    },
-    {
-        "name": "minecraft:porkchop",
-        "id": 266
-    },
-    {
-        "name": "minecraft:portal",
-        "id": 90
-    },
-    {
-        "name": "minecraft:potato",
-        "id": 284
-    },
-    {
-        "name": "minecraft:potatoes",
-        "id": 142
-    },
-    {
-        "name": "minecraft:potion",
-        "id": 435
-    },
-    {
-        "name": "minecraft:powder_snow",
-        "id": -306
-    },
-    {
-        "name": "minecraft:powder_snow_bucket",
-        "id": 375
-    },
-    {
-        "name": "minecraft:powered_comparator",
-        "id": 150
-    },
-    {
-        "name": "minecraft:powered_repeater",
-        "id": 94
-    },
-    {
-        "name": "minecraft:prismarine",
-        "id": 168
-    },
-    {
-        "name": "minecraft:prismarine_bricks_stairs",
-        "id": -4
-    },
-    {
-        "name": "minecraft:prismarine_crystals",
-        "id": 565
-    },
-    {
-        "name": "minecraft:prismarine_shard",
-        "id": 581
-    },
-    {
-        "name": "minecraft:prismarine_stairs",
-        "id": -2
-    },
-    {
-        "name": "minecraft:prize_pottery_sherd",
-        "id": 692
-    },
-    {
-        "name": "minecraft:pufferfish",
-        "id": 271
-    },
-    {
-        "name": "minecraft:pufferfish_bucket",
-        "id": 374
-    },
-    {
-        "name": "minecraft:pufferfish_spawn_egg",
-        "id": 491
-    },
-    {
-        "name": "minecraft:pumpkin",
-        "id": 86
-    },
-    {
-        "name": "minecraft:pumpkin_pie",
-        "id": 288
-    },
-    {
-        "name": "minecraft:pumpkin_seeds",
-        "id": 296
-    },
-    {
-        "name": "minecraft:pumpkin_stem",
-        "id": 104
-    },
-    {
-        "name": "minecraft:purple_candle",
-        "id": -423
-    },
-    {
-        "name": "minecraft:purple_candle_cake",
-        "id": -440
-    },
-    {
-        "name": "minecraft:purple_carpet",
-        "id": -606
-    },
-    {
-        "name": "minecraft:purple_concrete",
-        "id": -637
-    },
-    {
-        "name": "minecraft:purple_concrete_powder",
-        "id": -718
-    },
-    {
-        "name": "minecraft:purple_dye",
-        "id": 408
-    },
-    {
-        "name": "minecraft:purple_glazed_terracotta",
-        "id": 219
-    },
-    {
-        "name": "minecraft:purple_shulker_box",
-        "id": -622
-    },
-    {
-        "name": "minecraft:purple_stained_glass",
-        "id": -682
-    },
-    {
-        "name": "minecraft:purple_stained_glass_pane",
-        "id": -652
-    },
-    {
-        "name": "minecraft:purple_terracotta",
-        "id": -733
-    },
-    {
-        "name": "minecraft:purple_wool",
-        "id": -564
-    },
-    {
-        "name": "minecraft:purpur_block",
-        "id": 201
-    },
-    {
-        "name": "minecraft:purpur_stairs",
-        "id": 203
-    },
-    {
-        "name": "minecraft:quartz",
-        "id": 540
-    },
-    {
-        "name": "minecraft:quartz_block",
-        "id": 155
-    },
-    {
-        "name": "minecraft:quartz_bricks",
-        "id": -304
-    },
-    {
-        "name": "minecraft:quartz_ore",
-        "id": 153
-    },
-    {
-        "name": "minecraft:quartz_slab",
-        "id": -876
-    },
-    {
-        "name": "minecraft:quartz_stairs",
-        "id": 156
-    },
-    {
-        "name": "minecraft:rabbit",
-        "id": 292
-    },
-    {
-        "name": "minecraft:rabbit_foot",
-        "id": 544
-    },
-    {
-        "name": "minecraft:rabbit_hide",
-        "id": 545
-    },
-    {
-        "name": "minecraft:rabbit_spawn_egg",
-        "id": 468
-    },
-    {
-        "name": "minecraft:rabbit_stew",
-        "id": 294
-    },
-    {
-        "name": "minecraft:rail",
-        "id": 66
-    },
-    {
-        "name": "minecraft:raiser_armor_trim_smithing_template",
-        "id": 713
-    },
-    {
-        "name": "minecraft:rapid_fertilizer",
-        "id": 616
-    },
-    {
-        "name": "minecraft:ravager_spawn_egg",
-        "id": 503
-    },
-    {
-        "name": "minecraft:raw_copper",
-        "id": 523
-    },
-    {
-        "name": "minecraft:raw_copper_block",
-        "id": -452
-    },
-    {
-        "name": "minecraft:raw_gold",
-        "id": 522
-    },
-    {
-        "name": "minecraft:raw_gold_block",
-        "id": -453
-    },
-    {
-        "name": "minecraft:raw_iron",
-        "id": 521
-    },
-    {
-        "name": "minecraft:raw_iron_block",
-        "id": -451
-    },
-    {
-        "name": "minecraft:recovery_compass",
-        "id": 665
-    },
-    {
-        "name": "minecraft:red_candle",
-        "id": -427
-    },
-    {
-        "name": "minecraft:red_candle_cake",
-        "id": -444
-    },
-    {
-        "name": "minecraft:red_carpet",
-        "id": -610
-    },
-    {
-        "name": "minecraft:red_concrete",
-        "id": -641
-    },
-    {
-        "name": "minecraft:red_concrete_powder",
-        "id": -722
-    },
-    {
-        "name": "minecraft:red_dye",
-        "id": 404
-    },
-    {
-        "name": "minecraft:red_flower",
-        "id": 737
-    },
-    {
-        "name": "minecraft:red_glazed_terracotta",
-        "id": 234
-    },
-    {
-        "name": "minecraft:red_mushroom",
-        "id": 40
-    },
-    {
-        "name": "minecraft:red_mushroom_block",
-        "id": 100
-    },
-    {
-        "name": "minecraft:red_nether_brick",
-        "id": 215
-    },
-    {
-        "name": "minecraft:red_nether_brick_stairs",
-        "id": -184
-    },
-    {
-        "name": "minecraft:red_sandstone",
-        "id": 179
-    },
-    {
-        "name": "minecraft:red_sandstone_stairs",
-        "id": 180
-    },
-    {
-        "name": "minecraft:red_shulker_box",
-        "id": -626
-    },
-    {
-        "name": "minecraft:red_stained_glass",
-        "id": -686
-    },
-    {
-        "name": "minecraft:red_stained_glass_pane",
-        "id": -656
-    },
-    {
-        "name": "minecraft:red_terracotta",
-        "id": -737
-    },
-    {
-        "name": "minecraft:red_tulip",
-        "id": -833
-    },
-    {
-        "name": "minecraft:red_wool",
-        "id": -556
-    },
-    {
-        "name": "minecraft:redstone",
-        "id": 380
-    },
-    {
-        "name": "minecraft:redstone_block",
-        "id": 152
-    },
-    {
-        "name": "minecraft:redstone_lamp",
-        "id": 123
-    },
-    {
-        "name": "minecraft:redstone_ore",
-        "id": 73
-    },
-    {
-        "name": "minecraft:redstone_torch",
-        "id": 76
-    },
-    {
-        "name": "minecraft:redstone_wire",
-        "id": 55
-    },
-    {
-        "name": "minecraft:reinforced_deepslate",
-        "id": -466
-    },
-    {
-        "name": "minecraft:repeater",
-        "id": 427
-    },
-    {
-        "name": "minecraft:repeating_command_block",
-        "id": 188
-    },
-    {
-        "name": "minecraft:reserved6",
-        "id": 255
-    },
-    {
-        "name": "minecraft:respawn_anchor",
-        "id": -272
-    },
-    {
-        "name": "minecraft:rib_armor_trim_smithing_template",
-        "id": 709
-    },
-    {
-        "name": "minecraft:rose_bush",
-        "id": -866
-    },
-    {
-        "name": "minecraft:rotten_flesh",
-        "id": 281
-    },
-    {
-        "name": "minecraft:saddle",
-        "id": 378
-    },
-    {
-        "name": "minecraft:salmon",
-        "id": 269
-    },
-    {
-        "name": "minecraft:salmon_bucket",
-        "id": 372
-    },
-    {
-        "name": "minecraft:salmon_spawn_egg",
-        "id": 492
-    },
-    {
-        "name": "minecraft:sand",
-        "id": 12
-    },
-    {
-        "name": "minecraft:sandstone",
-        "id": 24
-    },
-    {
-        "name": "minecraft:sandstone_slab",
-        "id": -872
-    },
-    {
-        "name": "minecraft:sandstone_stairs",
-        "id": 128
-    },
-    {
-        "name": "minecraft:sapling",
-        "id": 732
-    },
-    {
-        "name": "minecraft:scaffolding",
-        "id": -165
-    },
-    {
-        "name": "minecraft:scrape_pottery_sherd",
-        "id": 693
-    },
-    {
-        "name": "minecraft:sculk",
-        "id": -458
-    },
-    {
-        "name": "minecraft:sculk_catalyst",
-        "id": -460
-    },
-    {
-        "name": "minecraft:sculk_sensor",
-        "id": -307
-    },
-    {
-        "name": "minecraft:sculk_shrieker",
-        "id": -461
-    },
-    {
-        "name": "minecraft:sculk_vein",
-        "id": -459
-    },
-    {
-        "name": "minecraft:sea_lantern",
-        "id": 169
-    },
-    {
-        "name": "minecraft:sea_pickle",
-        "id": -156
-    },
-    {
-        "name": "minecraft:seagrass",
-        "id": -130
-    },
-    {
-        "name": "minecraft:sentry_armor_trim_smithing_template",
-        "id": 700
-    },
-    {
-        "name": "minecraft:shaper_armor_trim_smithing_template",
-        "id": 714
-    },
-    {
-        "name": "minecraft:sheaf_pottery_sherd",
-        "id": 694
-    },
-    {
-        "name": "minecraft:shears",
-        "id": 429
-    },
-    {
-        "name": "minecraft:sheep_spawn_egg",
-        "id": 447
-    },
-    {
-        "name": "minecraft:shelter_pottery_sherd",
-        "id": 695
-    },
-    {
-        "name": "minecraft:shield",
-        "id": 362
-    },
-    {
-        "name": "minecraft:short_grass",
-        "id": 31
-    },
-    {
-        "name": "minecraft:shroomlight",
-        "id": -230
-    },
-    {
-        "name": "minecraft:shulker_box",
-        "id": 747
-    },
-    {
-        "name": "minecraft:shulker_shell",
-        "id": 582
-    },
-    {
-        "name": "minecraft:shulker_spawn_egg",
-        "id": 479
-    },
-    {
-        "name": "minecraft:silence_armor_trim_smithing_template",
-        "id": 711
-    },
-    {
-        "name": "minecraft:silver_glazed_terracotta",
-        "id": 228
-    },
-    {
-        "name": "minecraft:silverfish_spawn_egg",
-        "id": 452
-    },
-    {
-        "name": "minecraft:skeleton_horse_spawn_egg",
-        "id": 477
-    },
-    {
-        "name": "minecraft:skeleton_spawn_egg",
-        "id": 453
-    },
-    {
-        "name": "minecraft:skull",
-        "id": 532
-    },
-    {
-        "name": "minecraft:skull_banner_pattern",
-        "id": 599
-    },
-    {
-        "name": "minecraft:skull_pottery_sherd",
-        "id": 696
-    },
-    {
-        "name": "minecraft:slime",
-        "id": 165
-    },
-    {
-        "name": "minecraft:slime_ball",
-        "id": 396
-    },
-    {
-        "name": "minecraft:slime_spawn_egg",
-        "id": 454
-    },
-    {
-        "name": "minecraft:small_amethyst_bud",
-        "id": -332
-    },
-    {
-        "name": "minecraft:small_dripleaf_block",
-        "id": -336
-    },
-    {
-        "name": "minecraft:smithing_table",
-        "id": -202
-    },
-    {
-        "name": "minecraft:smoker",
-        "id": -198
-    },
-    {
-        "name": "minecraft:smooth_basalt",
-        "id": -377
-    },
-    {
-        "name": "minecraft:smooth_quartz_stairs",
-        "id": -185
-    },
-    {
-        "name": "minecraft:smooth_red_sandstone_stairs",
-        "id": -176
-    },
-    {
-        "name": "minecraft:smooth_sandstone_stairs",
-        "id": -177
-    },
-    {
-        "name": "minecraft:smooth_stone",
-        "id": -183
-    },
-    {
-        "name": "minecraft:smooth_stone_slab",
-        "id": 44
-    },
-    {
-        "name": "minecraft:sniffer_egg",
-        "id": -596
-    },
-    {
-        "name": "minecraft:sniffer_spawn_egg",
-        "id": 510
-    },
-    {
-        "name": "minecraft:snort_pottery_sherd",
-        "id": 697
-    },
-    {
-        "name": "minecraft:snout_armor_trim_smithing_template",
-        "id": 708
-    },
-    {
-        "name": "minecraft:snow",
-        "id": 80
-    },
-    {
-        "name": "minecraft:snow_golem_spawn_egg",
-        "id": 516
-    },
-    {
-        "name": "minecraft:snow_layer",
-        "id": 78
-    },
-    {
-        "name": "minecraft:snowball",
-        "id": 381
-    },
-    {
-        "name": "minecraft:soul_campfire",
-        "id": 641
-    },
-    {
-        "name": "minecraft:soul_fire",
-        "id": -237
-    },
-    {
-        "name": "minecraft:soul_lantern",
-        "id": -269
-    },
-    {
-        "name": "minecraft:soul_sand",
-        "id": 88
-    },
-    {
-        "name": "minecraft:soul_soil",
-        "id": -236
-    },
-    {
-        "name": "minecraft:soul_torch",
-        "id": -268
-    },
-    {
-        "name": "minecraft:sparkler",
-        "id": 619
-    },
-    {
-        "name": "minecraft:spawn_egg",
-        "id": 757
-    },
-    {
-        "name": "minecraft:spider_eye",
-        "id": 282
-    },
-    {
-        "name": "minecraft:spider_spawn_egg",
-        "id": 455
-    },
-    {
-        "name": "minecraft:spire_armor_trim_smithing_template",
-        "id": 710
-    },
-    {
-        "name": "minecraft:splash_potion",
-        "id": 577
-    },
-    {
-        "name": "minecraft:sponge",
-        "id": 19
-    },
-    {
-        "name": "minecraft:spore_blossom",
-        "id": -321
-    },
-    {
-        "name": "minecraft:spruce_boat",
-        "id": 386
-    },
-    {
-        "name": "minecraft:spruce_button",
-        "id": -144
-    },
-    {
-        "name": "minecraft:spruce_chest_boat",
-        "id": 660
-    },
-    {
-        "name": "minecraft:spruce_door",
-        "id": 569
-    },
-    {
-        "name": "minecraft:spruce_double_slab",
-        "id": -809
-    },
-    {
-        "name": "minecraft:spruce_fence",
-        "id": -579
-    },
-    {
-        "name": "minecraft:spruce_fence_gate",
-        "id": 183
-    },
-    {
-        "name": "minecraft:spruce_hanging_sign",
-        "id": -501
-    },
-    {
-        "name": "minecraft:spruce_leaves",
-        "id": -800
-    },
-    {
-        "name": "minecraft:spruce_log",
-        "id": -569
-    },
-    {
-        "name": "minecraft:spruce_planks",
-        "id": -739
-    },
-    {
-        "name": "minecraft:spruce_pressure_plate",
-        "id": -154
-    },
-    {
-        "name": "minecraft:spruce_sapling",
-        "id": -825
-    },
-    {
-        "name": "minecraft:spruce_sign",
-        "id": 592
-    },
-    {
-        "name": "minecraft:spruce_slab",
-        "id": -804
-    },
-    {
-        "name": "minecraft:spruce_stairs",
-        "id": 134
-    },
-    {
-        "name": "minecraft:spruce_standing_sign",
-        "id": -181
-    },
-    {
-        "name": "minecraft:spruce_trapdoor",
-        "id": -149
-    },
-    {
-        "name": "minecraft:spruce_wall_sign",
-        "id": -182
-    },
-    {
-        "name": "minecraft:spruce_wood",
-        "id": -814
-    },
-    {
-        "name": "minecraft:spyglass",
-        "id": 644
-    },
-    {
-        "name": "minecraft:squid_spawn_egg",
-        "id": 459
-    },
-    {
-        "name": "minecraft:stained_glass",
-        "id": 745
-    },
-    {
-        "name": "minecraft:stained_glass_pane",
-        "id": 746
-    },
-    {
-        "name": "minecraft:stained_hardened_clay",
-        "id": 719
-    },
-    {
-        "name": "minecraft:standing_banner",
-        "id": 176
-    },
-    {
-        "name": "minecraft:standing_sign",
-        "id": 63
-    },
-    {
-        "name": "minecraft:stick",
-        "id": 327
-    },
-    {
-        "name": "minecraft:sticky_piston",
-        "id": 29
-    },
-    {
-        "name": "minecraft:sticky_piston_arm_collision",
-        "id": -217
-    },
-    {
-        "name": "minecraft:stone",
-        "id": 1
-    },
-    {
-        "name": "minecraft:stone_axe",
-        "id": 321
-    },
-    {
-        "name": "minecraft:stone_block_slab",
-        "id": 736
-    },
-    {
-        "name": "minecraft:stone_block_slab2",
-        "id": 182
-    },
-    {
-        "name": "minecraft:stone_block_slab3",
-        "id": -162
-    },
-    {
-        "name": "minecraft:stone_block_slab4",
-        "id": -166
-    },
-    {
-        "name": "minecraft:stone_brick_slab",
-        "id": -875
-    },
-    {
-        "name": "minecraft:stone_brick_stairs",
-        "id": 109
-    },
-    {
-        "name": "minecraft:stone_button",
-        "id": 77
-    },
-    {
-        "name": "minecraft:stone_hoe",
-        "id": 337
-    },
-    {
-        "name": "minecraft:stone_pickaxe",
-        "id": 320
-    },
-    {
-        "name": "minecraft:stone_pressure_plate",
-        "id": 70
-    },
-    {
-        "name": "minecraft:stone_shovel",
-        "id": 319
-    },
-    {
-        "name": "minecraft:stone_stairs",
-        "id": 67
-    },
-    {
-        "name": "minecraft:stone_sword",
-        "id": 318
-    },
-    {
-        "name": "minecraft:stonebrick",
-        "id": 98
-    },
-    {
-        "name": "minecraft:stonecutter",
-        "id": 245
-    },
-    {
-        "name": "minecraft:stonecutter_block",
-        "id": -197
-    },
-    {
-        "name": "minecraft:stray_spawn_egg",
-        "id": 471
-    },
-    {
-        "name": "minecraft:strider_spawn_egg",
-        "id": 505
-    },
-    {
-        "name": "minecraft:string",
-        "id": 333
-    },
-    {
-        "name": "minecraft:stripped_acacia_log",
-        "id": -8
-    },
-    {
-        "name": "minecraft:stripped_acacia_wood",
-        "id": -823
-    },
-    {
-        "name": "minecraft:stripped_bamboo_block",
-        "id": -528
-    },
-    {
-        "name": "minecraft:stripped_birch_log",
-        "id": -6
-    },
-    {
-        "name": "minecraft:stripped_birch_wood",
-        "id": -821
-    },
-    {
-        "name": "minecraft:stripped_cherry_log",
-        "id": -535
-    },
-    {
-        "name": "minecraft:stripped_cherry_wood",
-        "id": -545
-    },
-    {
-        "name": "minecraft:stripped_crimson_hyphae",
-        "id": -300
-    },
-    {
-        "name": "minecraft:stripped_crimson_stem",
-        "id": -240
-    },
-    {
-        "name": "minecraft:stripped_dark_oak_log",
-        "id": -9
-    },
-    {
-        "name": "minecraft:stripped_dark_oak_wood",
-        "id": -824
-    },
-    {
-        "name": "minecraft:stripped_jungle_log",
-        "id": -7
-    },
-    {
-        "name": "minecraft:stripped_jungle_wood",
-        "id": -822
-    },
-    {
-        "name": "minecraft:stripped_mangrove_log",
-        "id": -485
-    },
-    {
-        "name": "minecraft:stripped_mangrove_wood",
-        "id": -498
-    },
-    {
-        "name": "minecraft:stripped_oak_log",
-        "id": -10
-    },
-    {
-        "name": "minecraft:stripped_oak_wood",
-        "id": -819
-    },
-    {
-        "name": "minecraft:stripped_spruce_log",
-        "id": -5
-    },
-    {
-        "name": "minecraft:stripped_spruce_wood",
-        "id": -820
-    },
-    {
-        "name": "minecraft:stripped_warped_hyphae",
-        "id": -301
-    },
-    {
-        "name": "minecraft:stripped_warped_stem",
-        "id": -241
-    },
-    {
-        "name": "minecraft:structure_block",
-        "id": 252
-    },
-    {
-        "name": "minecraft:structure_void",
-        "id": 217
-    },
-    {
-        "name": "minecraft:sugar",
-        "id": 424
-    },
-    {
-        "name": "minecraft:sugar_cane",
-        "id": 393
-    },
-    {
-        "name": "minecraft:sunflower",
-        "id": 175
-    },
-    {
-        "name": "minecraft:suspicious_gravel",
-        "id": -573
-    },
-    {
-        "name": "minecraft:suspicious_sand",
-        "id": -529
-    },
-    {
-        "name": "minecraft:suspicious_stew",
-        "id": 608
-    },
-    {
-        "name": "minecraft:sweet_berries",
-        "id": 291
-    },
-    {
-        "name": "minecraft:sweet_berry_bush",
-        "id": -207
-    },
-    {
-        "name": "minecraft:tadpole_bucket",
-        "id": 649
-    },
-    {
-        "name": "minecraft:tadpole_spawn_egg",
-        "id": 648
-    },
-    {
-        "name": "minecraft:tall_grass",
-        "id": -864
-    },
-    {
-        "name": "minecraft:tallgrass",
-        "id": 741
-    },
-    {
-        "name": "minecraft:target",
-        "id": -239
-    },
-    {
-        "name": "minecraft:tide_armor_trim_smithing_template",
-        "id": 707
-    },
-    {
-        "name": "minecraft:tinted_glass",
-        "id": -334
-    },
-    {
-        "name": "minecraft:tnt",
-        "id": 46
-    },
-    {
-        "name": "minecraft:tnt_minecart",
-        "id": 541
-    },
-    {
-        "name": "minecraft:torch",
-        "id": 50
-    },
-    {
-        "name": "minecraft:torchflower",
-        "id": -568
-    },
-    {
-        "name": "minecraft:torchflower_crop",
-        "id": -567
-    },
-    {
-        "name": "minecraft:torchflower_seeds",
-        "id": 300
-    },
-    {
-        "name": "minecraft:totem_of_undying",
-        "id": 584
-    },
-    {
-        "name": "minecraft:trader_llama_spawn_egg",
-        "id": 667
-    },
-    {
-        "name": "minecraft:trapdoor",
-        "id": 96
-    },
-    {
-        "name": "minecraft:trapped_chest",
-        "id": 146
-    },
-    {
-        "name": "minecraft:trial_key",
-        "id": 259
-    },
-    {
-        "name": "minecraft:trial_spawner",
-        "id": -315
-    },
-    {
-        "name": "minecraft:trident",
-        "id": 562
-    },
-    {
-        "name": "minecraft:trip_wire",
-        "id": 132
-    },
-    {
-        "name": "minecraft:tripwire_hook",
-        "id": 131
-    },
-    {
-        "name": "minecraft:tropical_fish",
-        "id": 270
-    },
-    {
-        "name": "minecraft:tropical_fish_bucket",
-        "id": 373
-    },
-    {
-        "name": "minecraft:tropical_fish_spawn_egg",
-        "id": 489
-    },
-    {
-        "name": "minecraft:tube_coral",
-        "id": -131
-    },
-    {
-        "name": "minecraft:tube_coral_block",
-        "id": -132
-    },
-    {
-        "name": "minecraft:tube_coral_fan",
-        "id": -133
-    },
-    {
-        "name": "minecraft:tuff",
-        "id": -333
-    },
-    {
-        "name": "minecraft:tuff_brick_double_slab",
-        "id": -756
-    },
-    {
-        "name": "minecraft:tuff_brick_slab",
-        "id": -755
-    },
-    {
-        "name": "minecraft:tuff_brick_stairs",
-        "id": -757
-    },
-    {
-        "name": "minecraft:tuff_brick_wall",
-        "id": -758
-    },
-    {
-        "name": "minecraft:tuff_bricks",
-        "id": -754
-    },
-    {
-        "name": "minecraft:tuff_double_slab",
-        "id": -745
-    },
-    {
-        "name": "minecraft:tuff_slab",
-        "id": -744
-    },
-    {
-        "name": "minecraft:tuff_stairs",
-        "id": -746
-    },
-    {
-        "name": "minecraft:tuff_wall",
-        "id": -747
-    },
-    {
-        "name": "minecraft:turtle_egg",
-        "id": -159
-    },
-    {
-        "name": "minecraft:turtle_helmet",
-        "id": 589
-    },
-    {
-        "name": "minecraft:turtle_scute",
-        "id": 588
-    },
-    {
-        "name": "minecraft:turtle_spawn_egg",
-        "id": 495
-    },
-    {
-        "name": "minecraft:twisting_vines",
-        "id": -287
-    },
-    {
-        "name": "minecraft:underwater_torch",
-        "id": 239
-    },
-    {
-        "name": "minecraft:undyed_shulker_box",
-        "id": 205
-    },
-    {
-        "name": "minecraft:unknown",
-        "id": -305
-    },
-    {
-        "name": "minecraft:unlit_redstone_torch",
-        "id": 75
-    },
-    {
-        "name": "minecraft:unpowered_comparator",
-        "id": 149
-    },
-    {
-        "name": "minecraft:unpowered_repeater",
-        "id": 93
-    },
-    {
-        "name": "minecraft:vault",
-        "id": -314
-    },
-    {
-        "name": "minecraft:verdant_froglight",
-        "id": -470
-    },
-    {
-        "name": "minecraft:vex_armor_trim_smithing_template",
-        "id": 706
-    },
-    {
-        "name": "minecraft:vex_spawn_egg",
-        "id": 486
-    },
-    {
-        "name": "minecraft:villager_spawn_egg",
-        "id": 458
-    },
-    {
-        "name": "minecraft:vindicator_spawn_egg",
-        "id": 484
-    },
-    {
-        "name": "minecraft:vine",
-        "id": 106
-    },
-    {
-        "name": "minecraft:wall_banner",
-        "id": 177
-    },
-    {
-        "name": "minecraft:wall_sign",
-        "id": 68
-    },
-    {
-        "name": "minecraft:wandering_trader_spawn_egg",
-        "id": 502
-    },
-    {
-        "name": "minecraft:ward_armor_trim_smithing_template",
-        "id": 704
-    },
-    {
-        "name": "minecraft:warden_spawn_egg",
-        "id": 651
-    },
-    {
-        "name": "minecraft:warped_button",
-        "id": -261
-    },
-    {
-        "name": "minecraft:warped_door",
-        "id": 636
-    },
-    {
-        "name": "minecraft:warped_double_slab",
-        "id": -267
-    },
-    {
-        "name": "minecraft:warped_fence",
-        "id": -257
-    },
-    {
-        "name": "minecraft:warped_fence_gate",
-        "id": -259
-    },
-    {
-        "name": "minecraft:warped_fungus",
-        "id": -229
-    },
-    {
-        "name": "minecraft:warped_fungus_on_a_stick",
-        "id": 637
-    },
-    {
-        "name": "minecraft:warped_hanging_sign",
-        "id": -507
-    },
-    {
-        "name": "minecraft:warped_hyphae",
-        "id": -298
-    },
-    {
-        "name": "minecraft:warped_nylium",
-        "id": -233
-    },
-    {
-        "name": "minecraft:warped_planks",
-        "id": -243
-    },
-    {
-        "name": "minecraft:warped_pressure_plate",
-        "id": -263
-    },
-    {
-        "name": "minecraft:warped_roots",
-        "id": -224
-    },
-    {
-        "name": "minecraft:warped_sign",
-        "id": 634
-    },
-    {
-        "name": "minecraft:warped_slab",
-        "id": -265
-    },
-    {
-        "name": "minecraft:warped_stairs",
-        "id": -255
-    },
-    {
-        "name": "minecraft:warped_standing_sign",
-        "id": -251
-    },
-    {
-        "name": "minecraft:warped_stem",
-        "id": -226
-    },
-    {
-        "name": "minecraft:warped_trapdoor",
-        "id": -247
-    },
-    {
-        "name": "minecraft:warped_wall_sign",
-        "id": -253
-    },
-    {
-        "name": "minecraft:warped_wart_block",
-        "id": -227
-    },
-    {
-        "name": "minecraft:water",
-        "id": 9
-    },
-    {
-        "name": "minecraft:water_bucket",
-        "id": 369
-    },
-    {
-        "name": "minecraft:waterlily",
-        "id": 111
-    },
-    {
-        "name": "minecraft:waxed_chiseled_copper",
-        "id": -764
-    },
-    {
-        "name": "minecraft:waxed_copper",
-        "id": -344
-    },
-    {
-        "name": "minecraft:waxed_copper_bulb",
-        "id": -780
-    },
-    {
-        "name": "minecraft:waxed_copper_door",
-        "id": -788
-    },
-    {
-        "name": "minecraft:waxed_copper_grate",
-        "id": -772
-    },
-    {
-        "name": "minecraft:waxed_copper_trapdoor",
-        "id": -796
-    },
-    {
-        "name": "minecraft:waxed_cut_copper",
-        "id": -351
-    },
-    {
-        "name": "minecraft:waxed_cut_copper_slab",
-        "id": -365
-    },
-    {
-        "name": "minecraft:waxed_cut_copper_stairs",
-        "id": -358
-    },
-    {
-        "name": "minecraft:waxed_double_cut_copper_slab",
-        "id": -372
-    },
-    {
-        "name": "minecraft:waxed_exposed_chiseled_copper",
-        "id": -765
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper",
-        "id": -345
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_bulb",
-        "id": -781
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_door",
-        "id": -789
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_grate",
-        "id": -773
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_trapdoor",
-        "id": -797
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper",
-        "id": -352
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper_slab",
-        "id": -366
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper_stairs",
-        "id": -359
-    },
-    {
-        "name": "minecraft:waxed_exposed_double_cut_copper_slab",
-        "id": -373
-    },
-    {
-        "name": "minecraft:waxed_oxidized_chiseled_copper",
-        "id": -766
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper",
-        "id": -446
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_bulb",
-        "id": -783
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_door",
-        "id": -791
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_grate",
-        "id": -775
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_trapdoor",
-        "id": -799
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper",
-        "id": -447
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper_slab",
-        "id": -449
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper_stairs",
-        "id": -448
-    },
-    {
-        "name": "minecraft:waxed_oxidized_double_cut_copper_slab",
-        "id": -450
-    },
-    {
-        "name": "minecraft:waxed_weathered_chiseled_copper",
-        "id": -767
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper",
-        "id": -346
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_bulb",
-        "id": -782
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_door",
-        "id": -790
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_grate",
-        "id": -774
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_trapdoor",
-        "id": -798
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper",
-        "id": -353
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper_slab",
-        "id": -367
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper_stairs",
-        "id": -360
-    },
-    {
-        "name": "minecraft:waxed_weathered_double_cut_copper_slab",
-        "id": -374
-    },
-    {
-        "name": "minecraft:wayfinder_armor_trim_smithing_template",
-        "id": 712
-    },
-    {
-        "name": "minecraft:weathered_chiseled_copper",
-        "id": -762
-    },
-    {
-        "name": "minecraft:weathered_copper",
-        "id": -342
-    },
-    {
-        "name": "minecraft:weathered_copper_bulb",
-        "id": -778
-    },
-    {
-        "name": "minecraft:weathered_copper_door",
-        "id": -786
-    },
-    {
-        "name": "minecraft:weathered_copper_grate",
-        "id": -770
-    },
-    {
-        "name": "minecraft:weathered_copper_trapdoor",
-        "id": -794
-    },
-    {
-        "name": "minecraft:weathered_cut_copper",
-        "id": -349
-    },
-    {
-        "name": "minecraft:weathered_cut_copper_slab",
-        "id": -363
-    },
-    {
-        "name": "minecraft:weathered_cut_copper_stairs",
-        "id": -356
-    },
-    {
-        "name": "minecraft:weathered_double_cut_copper_slab",
-        "id": -370
-    },
-    {
-        "name": "minecraft:web",
-        "id": 30
-    },
-    {
-        "name": "minecraft:weeping_vines",
-        "id": -231
-    },
-    {
-        "name": "minecraft:wheat",
-        "id": 341
-    },
-    {
-        "name": "minecraft:wheat_seeds",
-        "id": 295
-    },
-    {
-        "name": "minecraft:white_candle",
-        "id": -413
-    },
-    {
-        "name": "minecraft:white_candle_cake",
-        "id": -430
-    },
-    {
-        "name": "minecraft:white_carpet",
-        "id": 171
-    },
-    {
-        "name": "minecraft:white_concrete",
-        "id": 236
-    },
-    {
-        "name": "minecraft:white_concrete_powder",
-        "id": 237
-    },
-    {
-        "name": "minecraft:white_dye",
-        "id": 418
-    },
-    {
-        "name": "minecraft:white_glazed_terracotta",
-        "id": 220
-    },
-    {
-        "name": "minecraft:white_shulker_box",
-        "id": 218
-    },
-    {
-        "name": "minecraft:white_stained_glass",
-        "id": 241
-    },
-    {
-        "name": "minecraft:white_stained_glass_pane",
-        "id": 160
-    },
-    {
-        "name": "minecraft:white_terracotta",
-        "id": 159
-    },
-    {
-        "name": "minecraft:white_tulip",
-        "id": -835
-    },
-    {
-        "name": "minecraft:white_wool",
-        "id": 35
-    },
-    {
-        "name": "minecraft:wild_armor_trim_smithing_template",
-        "id": 703
-    },
-    {
-        "name": "minecraft:wind_charge",
-        "id": 260
-    },
-    {
-        "name": "minecraft:witch_spawn_egg",
-        "id": 461
-    },
-    {
-        "name": "minecraft:wither_rose",
-        "id": -216
-    },
-    {
-        "name": "minecraft:wither_skeleton_spawn_egg",
-        "id": 474
-    },
-    {
-        "name": "minecraft:wither_spawn_egg",
-        "id": 518
-    },
-    {
-        "name": "minecraft:wolf_armor",
-        "id": 722
-    },
-    {
-        "name": "minecraft:wolf_spawn_egg",
-        "id": 448
-    },
-    {
-        "name": "minecraft:wood",
-        "id": 748
-    },
-    {
-        "name": "minecraft:wooden_axe",
-        "id": 317
-    },
-    {
-        "name": "minecraft:wooden_button",
-        "id": 143
-    },
-    {
-        "name": "minecraft:wooden_door",
-        "id": 366
-    },
-    {
-        "name": "minecraft:wooden_hoe",
-        "id": 336
-    },
-    {
-        "name": "minecraft:wooden_pickaxe",
-        "id": 316
-    },
-    {
-        "name": "minecraft:wooden_pressure_plate",
-        "id": 72
-    },
-    {
-        "name": "minecraft:wooden_shovel",
-        "id": 315
-    },
-    {
-        "name": "minecraft:wooden_slab",
-        "id": 735
-    },
-    {
-        "name": "minecraft:wooden_sword",
-        "id": 314
-    },
-    {
-        "name": "minecraft:wool",
-        "id": 725
-    },
-    {
-        "name": "minecraft:writable_book",
-        "id": 526
-    },
-    {
-        "name": "minecraft:written_book",
-        "id": 527
-    },
-    {
-        "name": "minecraft:yellow_candle",
-        "id": -417
-    },
-    {
-        "name": "minecraft:yellow_candle_cake",
-        "id": -434
-    },
-    {
-        "name": "minecraft:yellow_carpet",
-        "id": -600
-    },
-    {
-        "name": "minecraft:yellow_concrete",
-        "id": -631
-    },
-    {
-        "name": "minecraft:yellow_concrete_powder",
-        "id": -712
-    },
-    {
-        "name": "minecraft:yellow_dye",
-        "id": 414
-    },
-    {
-        "name": "minecraft:yellow_flower",
-        "id": 37
-    },
-    {
-        "name": "minecraft:yellow_glazed_terracotta",
-        "id": 224
-    },
-    {
-        "name": "minecraft:yellow_shulker_box",
-        "id": -616
-    },
-    {
-        "name": "minecraft:yellow_stained_glass",
-        "id": -676
-    },
-    {
-        "name": "minecraft:yellow_stained_glass_pane",
-        "id": -646
-    },
-    {
-        "name": "minecraft:yellow_terracotta",
-        "id": -727
-    },
-    {
-        "name": "minecraft:yellow_wool",
-        "id": -558
-    },
-    {
-        "name": "minecraft:zoglin_spawn_egg",
-        "id": 508
-    },
-    {
-        "name": "minecraft:zombie_horse_spawn_egg",
-        "id": 478
-    },
-    {
-        "name": "minecraft:zombie_pigman_spawn_egg",
-        "id": 457
-    },
-    {
-        "name": "minecraft:zombie_spawn_egg",
-        "id": 456
-    },
-    {
-        "name": "minecraft:zombie_villager_spawn_egg",
-        "id": 487
-    }
-]
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/runtime_item_states.1_21_20.json b/core/src/main/resources/bedrock/runtime_item_states.1_21_20.json
deleted file mode 100644
index 72c682293..000000000
--- a/core/src/main/resources/bedrock/runtime_item_states.1_21_20.json
+++ /dev/null
@@ -1,6794 +0,0 @@
-[
-    {
-        "name": "minecraft:acacia_boat",
-        "id": 388
-    },
-    {
-        "name": "minecraft:acacia_button",
-        "id": -140
-    },
-    {
-        "name": "minecraft:acacia_chest_boat",
-        "id": 662
-    },
-    {
-        "name": "minecraft:acacia_door",
-        "id": 573
-    },
-    {
-        "name": "minecraft:acacia_double_slab",
-        "id": -812
-    },
-    {
-        "name": "minecraft:acacia_fence",
-        "id": -575
-    },
-    {
-        "name": "minecraft:acacia_fence_gate",
-        "id": 187
-    },
-    {
-        "name": "minecraft:acacia_hanging_sign",
-        "id": -504
-    },
-    {
-        "name": "minecraft:acacia_leaves",
-        "id": 161
-    },
-    {
-        "name": "minecraft:acacia_log",
-        "id": 162
-    },
-    {
-        "name": "minecraft:acacia_planks",
-        "id": -742
-    },
-    {
-        "name": "minecraft:acacia_pressure_plate",
-        "id": -150
-    },
-    {
-        "name": "minecraft:acacia_sapling",
-        "id": -828
-    },
-    {
-        "name": "minecraft:acacia_sign",
-        "id": 596
-    },
-    {
-        "name": "minecraft:acacia_slab",
-        "id": -807
-    },
-    {
-        "name": "minecraft:acacia_stairs",
-        "id": 163
-    },
-    {
-        "name": "minecraft:acacia_standing_sign",
-        "id": -190
-    },
-    {
-        "name": "minecraft:acacia_trapdoor",
-        "id": -145
-    },
-    {
-        "name": "minecraft:acacia_wall_sign",
-        "id": -191
-    },
-    {
-        "name": "minecraft:acacia_wood",
-        "id": -817
-    },
-    {
-        "name": "minecraft:activator_rail",
-        "id": 126
-    },
-    {
-        "name": "minecraft:agent_spawn_egg",
-        "id": 498
-    },
-    {
-        "name": "minecraft:air",
-        "id": -158
-    },
-    {
-        "name": "minecraft:allay_spawn_egg",
-        "id": 651
-    },
-    {
-        "name": "minecraft:allium",
-        "id": -831
-    },
-    {
-        "name": "minecraft:allow",
-        "id": 210
-    },
-    {
-        "name": "minecraft:amethyst_block",
-        "id": -327
-    },
-    {
-        "name": "minecraft:amethyst_cluster",
-        "id": -329
-    },
-    {
-        "name": "minecraft:amethyst_shard",
-        "id": 644
-    },
-    {
-        "name": "minecraft:ancient_debris",
-        "id": -271
-    },
-    {
-        "name": "minecraft:andesite",
-        "id": -594
-    },
-    {
-        "name": "minecraft:andesite_double_slab",
-        "id": -920
-    },
-    {
-        "name": "minecraft:andesite_slab",
-        "id": -893
-    },
-    {
-        "name": "minecraft:andesite_stairs",
-        "id": -171
-    },
-    {
-        "name": "minecraft:angler_pottery_sherd",
-        "id": 676
-    },
-    {
-        "name": "minecraft:anvil",
-        "id": 145
-    },
-    {
-        "name": "minecraft:apple",
-        "id": 257
-    },
-    {
-        "name": "minecraft:archer_pottery_sherd",
-        "id": 677
-    },
-    {
-        "name": "minecraft:armadillo_scute",
-        "id": 722
-    },
-    {
-        "name": "minecraft:armadillo_spawn_egg",
-        "id": 721
-    },
-    {
-        "name": "minecraft:armor_stand",
-        "id": 569
-    },
-    {
-        "name": "minecraft:arms_up_pottery_sherd",
-        "id": 678
-    },
-    {
-        "name": "minecraft:arrow",
-        "id": 308
-    },
-    {
-        "name": "minecraft:axolotl_bucket",
-        "id": 377
-    },
-    {
-        "name": "minecraft:axolotl_spawn_egg",
-        "id": 513
-    },
-    {
-        "name": "minecraft:azalea",
-        "id": -337
-    },
-    {
-        "name": "minecraft:azalea_leaves",
-        "id": -324
-    },
-    {
-        "name": "minecraft:azalea_leaves_flowered",
-        "id": -325
-    },
-    {
-        "name": "minecraft:azure_bluet",
-        "id": -832
-    },
-    {
-        "name": "minecraft:baked_potato",
-        "id": 286
-    },
-    {
-        "name": "minecraft:balloon",
-        "id": 618
-    },
-    {
-        "name": "minecraft:bamboo",
-        "id": -163
-    },
-    {
-        "name": "minecraft:bamboo_block",
-        "id": -527
-    },
-    {
-        "name": "minecraft:bamboo_button",
-        "id": -511
-    },
-    {
-        "name": "minecraft:bamboo_chest_raft",
-        "id": 674
-    },
-    {
-        "name": "minecraft:bamboo_door",
-        "id": -517
-    },
-    {
-        "name": "minecraft:bamboo_double_slab",
-        "id": -521
-    },
-    {
-        "name": "minecraft:bamboo_fence",
-        "id": -515
-    },
-    {
-        "name": "minecraft:bamboo_fence_gate",
-        "id": -516
-    },
-    {
-        "name": "minecraft:bamboo_hanging_sign",
-        "id": -522
-    },
-    {
-        "name": "minecraft:bamboo_mosaic",
-        "id": -509
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_double_slab",
-        "id": -525
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_slab",
-        "id": -524
-    },
-    {
-        "name": "minecraft:bamboo_mosaic_stairs",
-        "id": -523
-    },
-    {
-        "name": "minecraft:bamboo_planks",
-        "id": -510
-    },
-    {
-        "name": "minecraft:bamboo_pressure_plate",
-        "id": -514
-    },
-    {
-        "name": "minecraft:bamboo_raft",
-        "id": 673
-    },
-    {
-        "name": "minecraft:bamboo_sapling",
-        "id": -164
-    },
-    {
-        "name": "minecraft:bamboo_sign",
-        "id": 672
-    },
-    {
-        "name": "minecraft:bamboo_slab",
-        "id": -513
-    },
-    {
-        "name": "minecraft:bamboo_stairs",
-        "id": -512
-    },
-    {
-        "name": "minecraft:bamboo_standing_sign",
-        "id": -518
-    },
-    {
-        "name": "minecraft:bamboo_trapdoor",
-        "id": -520
-    },
-    {
-        "name": "minecraft:bamboo_wall_sign",
-        "id": -519
-    },
-    {
-        "name": "minecraft:banner",
-        "id": 584
-    },
-    {
-        "name": "minecraft:banner_pattern",
-        "id": 767
-    },
-    {
-        "name": "minecraft:barrel",
-        "id": -203
-    },
-    {
-        "name": "minecraft:barrier",
-        "id": -161
-    },
-    {
-        "name": "minecraft:basalt",
-        "id": -234
-    },
-    {
-        "name": "minecraft:bat_spawn_egg",
-        "id": 463
-    },
-    {
-        "name": "minecraft:beacon",
-        "id": 138
-    },
-    {
-        "name": "minecraft:bed",
-        "id": 427
-    },
-    {
-        "name": "minecraft:bedrock",
-        "id": 7
-    },
-    {
-        "name": "minecraft:bee_nest",
-        "id": -218
-    },
-    {
-        "name": "minecraft:bee_spawn_egg",
-        "id": 505
-    },
-    {
-        "name": "minecraft:beef",
-        "id": 278
-    },
-    {
-        "name": "minecraft:beehive",
-        "id": -219
-    },
-    {
-        "name": "minecraft:beetroot",
-        "id": 290
-    },
-    {
-        "name": "minecraft:beetroot_seeds",
-        "id": 300
-    },
-    {
-        "name": "minecraft:beetroot_soup",
-        "id": 291
-    },
-    {
-        "name": "minecraft:bell",
-        "id": -206
-    },
-    {
-        "name": "minecraft:big_dripleaf",
-        "id": -323
-    },
-    {
-        "name": "minecraft:birch_boat",
-        "id": 385
-    },
-    {
-        "name": "minecraft:birch_button",
-        "id": -141
-    },
-    {
-        "name": "minecraft:birch_chest_boat",
-        "id": 659
-    },
-    {
-        "name": "minecraft:birch_door",
-        "id": 571
-    },
-    {
-        "name": "minecraft:birch_double_slab",
-        "id": -810
-    },
-    {
-        "name": "minecraft:birch_fence",
-        "id": -576
-    },
-    {
-        "name": "minecraft:birch_fence_gate",
-        "id": 184
-    },
-    {
-        "name": "minecraft:birch_hanging_sign",
-        "id": -502
-    },
-    {
-        "name": "minecraft:birch_leaves",
-        "id": -801
-    },
-    {
-        "name": "minecraft:birch_log",
-        "id": -570
-    },
-    {
-        "name": "minecraft:birch_planks",
-        "id": -740
-    },
-    {
-        "name": "minecraft:birch_pressure_plate",
-        "id": -151
-    },
-    {
-        "name": "minecraft:birch_sapling",
-        "id": -826
-    },
-    {
-        "name": "minecraft:birch_sign",
-        "id": 594
-    },
-    {
-        "name": "minecraft:birch_slab",
-        "id": -805
-    },
-    {
-        "name": "minecraft:birch_stairs",
-        "id": 135
-    },
-    {
-        "name": "minecraft:birch_standing_sign",
-        "id": -186
-    },
-    {
-        "name": "minecraft:birch_trapdoor",
-        "id": -146
-    },
-    {
-        "name": "minecraft:birch_wall_sign",
-        "id": -187
-    },
-    {
-        "name": "minecraft:birch_wood",
-        "id": -815
-    },
-    {
-        "name": "minecraft:black_candle",
-        "id": -428
-    },
-    {
-        "name": "minecraft:black_candle_cake",
-        "id": -445
-    },
-    {
-        "name": "minecraft:black_carpet",
-        "id": -611
-    },
-    {
-        "name": "minecraft:black_concrete",
-        "id": -642
-    },
-    {
-        "name": "minecraft:black_concrete_powder",
-        "id": -723
-    },
-    {
-        "name": "minecraft:black_dye",
-        "id": 404
-    },
-    {
-        "name": "minecraft:black_glazed_terracotta",
-        "id": 235
-    },
-    {
-        "name": "minecraft:black_shulker_box",
-        "id": -627
-    },
-    {
-        "name": "minecraft:black_stained_glass",
-        "id": -687
-    },
-    {
-        "name": "minecraft:black_stained_glass_pane",
-        "id": -657
-    },
-    {
-        "name": "minecraft:black_terracotta",
-        "id": -738
-    },
-    {
-        "name": "minecraft:black_wool",
-        "id": -554
-    },
-    {
-        "name": "minecraft:blackstone",
-        "id": -273
-    },
-    {
-        "name": "minecraft:blackstone_double_slab",
-        "id": -283
-    },
-    {
-        "name": "minecraft:blackstone_slab",
-        "id": -282
-    },
-    {
-        "name": "minecraft:blackstone_stairs",
-        "id": -276
-    },
-    {
-        "name": "minecraft:blackstone_wall",
-        "id": -277
-    },
-    {
-        "name": "minecraft:blade_pottery_sherd",
-        "id": 679
-    },
-    {
-        "name": "minecraft:blast_furnace",
-        "id": -196
-    },
-    {
-        "name": "minecraft:blaze_powder",
-        "id": 439
-    },
-    {
-        "name": "minecraft:blaze_rod",
-        "id": 432
-    },
-    {
-        "name": "minecraft:blaze_spawn_egg",
-        "id": 466
-    },
-    {
-        "name": "minecraft:bleach",
-        "id": 616
-    },
-    {
-        "name": "minecraft:blue_candle",
-        "id": -424
-    },
-    {
-        "name": "minecraft:blue_candle_cake",
-        "id": -441
-    },
-    {
-        "name": "minecraft:blue_carpet",
-        "id": -607
-    },
-    {
-        "name": "minecraft:blue_concrete",
-        "id": -638
-    },
-    {
-        "name": "minecraft:blue_concrete_powder",
-        "id": -719
-    },
-    {
-        "name": "minecraft:blue_dye",
-        "id": 408
-    },
-    {
-        "name": "minecraft:blue_glazed_terracotta",
-        "id": 231
-    },
-    {
-        "name": "minecraft:blue_ice",
-        "id": -11
-    },
-    {
-        "name": "minecraft:blue_orchid",
-        "id": -830
-    },
-    {
-        "name": "minecraft:blue_shulker_box",
-        "id": -623
-    },
-    {
-        "name": "minecraft:blue_stained_glass",
-        "id": -683
-    },
-    {
-        "name": "minecraft:blue_stained_glass_pane",
-        "id": -653
-    },
-    {
-        "name": "minecraft:blue_terracotta",
-        "id": -734
-    },
-    {
-        "name": "minecraft:blue_wool",
-        "id": -563
-    },
-    {
-        "name": "minecraft:boat",
-        "id": 765
-    },
-    {
-        "name": "minecraft:bogged_spawn_egg",
-        "id": 473
-    },
-    {
-        "name": "minecraft:bolt_armor_trim_smithing_template",
-        "id": 718
-    },
-    {
-        "name": "minecraft:bone",
-        "id": 424
-    },
-    {
-        "name": "minecraft:bone_block",
-        "id": 216
-    },
-    {
-        "name": "minecraft:bone_meal",
-        "id": 420
-    },
-    {
-        "name": "minecraft:book",
-        "id": 396
-    },
-    {
-        "name": "minecraft:bookshelf",
-        "id": 47
-    },
-    {
-        "name": "minecraft:border_block",
-        "id": 212
-    },
-    {
-        "name": "minecraft:bordure_indented_banner_pattern",
-        "id": 603
-    },
-    {
-        "name": "minecraft:bow",
-        "id": 307
-    },
-    {
-        "name": "minecraft:bowl",
-        "id": 329
-    },
-    {
-        "name": "minecraft:brain_coral",
-        "id": -581
-    },
-    {
-        "name": "minecraft:brain_coral_block",
-        "id": -849
-    },
-    {
-        "name": "minecraft:brain_coral_fan",
-        "id": -840
-    },
-    {
-        "name": "minecraft:brain_coral_wall_fan",
-        "id": -904
-    },
-    {
-        "name": "minecraft:bread",
-        "id": 266
-    },
-    {
-        "name": "minecraft:breeze_rod",
-        "id": 261
-    },
-    {
-        "name": "minecraft:breeze_spawn_egg",
-        "id": 512
-    },
-    {
-        "name": "minecraft:brewer_pottery_sherd",
-        "id": 680
-    },
-    {
-        "name": "minecraft:brewing_stand",
-        "id": 441
-    },
-    {
-        "name": "minecraft:brick",
-        "id": 392
-    },
-    {
-        "name": "minecraft:brick_block",
-        "id": 45
-    },
-    {
-        "name": "minecraft:brick_double_slab",
-        "id": -880
-    },
-    {
-        "name": "minecraft:brick_slab",
-        "id": -874
-    },
-    {
-        "name": "minecraft:brick_stairs",
-        "id": 108
-    },
-    {
-        "name": "minecraft:brown_candle",
-        "id": -425
-    },
-    {
-        "name": "minecraft:brown_candle_cake",
-        "id": -442
-    },
-    {
-        "name": "minecraft:brown_carpet",
-        "id": -608
-    },
-    {
-        "name": "minecraft:brown_concrete",
-        "id": -639
-    },
-    {
-        "name": "minecraft:brown_concrete_powder",
-        "id": -720
-    },
-    {
-        "name": "minecraft:brown_dye",
-        "id": 407
-    },
-    {
-        "name": "minecraft:brown_glazed_terracotta",
-        "id": 232
-    },
-    {
-        "name": "minecraft:brown_mushroom",
-        "id": 39
-    },
-    {
-        "name": "minecraft:brown_mushroom_block",
-        "id": 99
-    },
-    {
-        "name": "minecraft:brown_shulker_box",
-        "id": -624
-    },
-    {
-        "name": "minecraft:brown_stained_glass",
-        "id": -684
-    },
-    {
-        "name": "minecraft:brown_stained_glass_pane",
-        "id": -654
-    },
-    {
-        "name": "minecraft:brown_terracotta",
-        "id": -735
-    },
-    {
-        "name": "minecraft:brown_wool",
-        "id": -555
-    },
-    {
-        "name": "minecraft:brush",
-        "id": 699
-    },
-    {
-        "name": "minecraft:bubble_column",
-        "id": -160
-    },
-    {
-        "name": "minecraft:bubble_coral",
-        "id": -582
-    },
-    {
-        "name": "minecraft:bubble_coral_block",
-        "id": -850
-    },
-    {
-        "name": "minecraft:bubble_coral_fan",
-        "id": -841
-    },
-    {
-        "name": "minecraft:bubble_coral_wall_fan",
-        "id": -136
-    },
-    {
-        "name": "minecraft:bucket",
-        "id": 368
-    },
-    {
-        "name": "minecraft:budding_amethyst",
-        "id": -328
-    },
-    {
-        "name": "minecraft:burn_pottery_sherd",
-        "id": 681
-    },
-    {
-        "name": "minecraft:cactus",
-        "id": 81
-    },
-    {
-        "name": "minecraft:cake",
-        "id": 426
-    },
-    {
-        "name": "minecraft:calcite",
-        "id": -326
-    },
-    {
-        "name": "minecraft:calibrated_sculk_sensor",
-        "id": -580
-    },
-    {
-        "name": "minecraft:camel_spawn_egg",
-        "id": 675
-    },
-    {
-        "name": "minecraft:camera",
-        "id": 613
-    },
-    {
-        "name": "minecraft:campfire",
-        "id": 608
-    },
-    {
-        "name": "minecraft:candle",
-        "id": -412
-    },
-    {
-        "name": "minecraft:candle_cake",
-        "id": -429
-    },
-    {
-        "name": "minecraft:carpet",
-        "id": 727
-    },
-    {
-        "name": "minecraft:carrot",
-        "id": 284
-    },
-    {
-        "name": "minecraft:carrot_on_a_stick",
-        "id": 534
-    },
-    {
-        "name": "minecraft:carrots",
-        "id": 141
-    },
-    {
-        "name": "minecraft:cartography_table",
-        "id": -200
-    },
-    {
-        "name": "minecraft:carved_pumpkin",
-        "id": -155
-    },
-    {
-        "name": "minecraft:cat_spawn_egg",
-        "id": 499
-    },
-    {
-        "name": "minecraft:cauldron",
-        "id": 442
-    },
-    {
-        "name": "minecraft:cave_spider_spawn_egg",
-        "id": 467
-    },
-    {
-        "name": "minecraft:cave_vines",
-        "id": -322
-    },
-    {
-        "name": "minecraft:cave_vines_body_with_berries",
-        "id": -375
-    },
-    {
-        "name": "minecraft:cave_vines_head_with_berries",
-        "id": -376
-    },
-    {
-        "name": "minecraft:chain",
-        "id": 639
-    },
-    {
-        "name": "minecraft:chain_command_block",
-        "id": 189
-    },
-    {
-        "name": "minecraft:chainmail_boots",
-        "id": 350
-    },
-    {
-        "name": "minecraft:chainmail_chestplate",
-        "id": 348
-    },
-    {
-        "name": "minecraft:chainmail_helmet",
-        "id": 347
-    },
-    {
-        "name": "minecraft:chainmail_leggings",
-        "id": 349
-    },
-    {
-        "name": "minecraft:charcoal",
-        "id": 310
-    },
-    {
-        "name": "minecraft:chemical_heat",
-        "id": 192
-    },
-    {
-        "name": "minecraft:chemistry_table",
-        "id": 238
-    },
-    {
-        "name": "minecraft:cherry_boat",
-        "id": 669
-    },
-    {
-        "name": "minecraft:cherry_button",
-        "id": -530
-    },
-    {
-        "name": "minecraft:cherry_chest_boat",
-        "id": 670
-    },
-    {
-        "name": "minecraft:cherry_door",
-        "id": -531
-    },
-    {
-        "name": "minecraft:cherry_double_slab",
-        "id": -540
-    },
-    {
-        "name": "minecraft:cherry_fence",
-        "id": -532
-    },
-    {
-        "name": "minecraft:cherry_fence_gate",
-        "id": -533
-    },
-    {
-        "name": "minecraft:cherry_hanging_sign",
-        "id": -534
-    },
-    {
-        "name": "minecraft:cherry_leaves",
-        "id": -548
-    },
-    {
-        "name": "minecraft:cherry_log",
-        "id": -536
-    },
-    {
-        "name": "minecraft:cherry_planks",
-        "id": -537
-    },
-    {
-        "name": "minecraft:cherry_pressure_plate",
-        "id": -538
-    },
-    {
-        "name": "minecraft:cherry_sapling",
-        "id": -547
-    },
-    {
-        "name": "minecraft:cherry_sign",
-        "id": 671
-    },
-    {
-        "name": "minecraft:cherry_slab",
-        "id": -539
-    },
-    {
-        "name": "minecraft:cherry_stairs",
-        "id": -541
-    },
-    {
-        "name": "minecraft:cherry_standing_sign",
-        "id": -542
-    },
-    {
-        "name": "minecraft:cherry_trapdoor",
-        "id": -543
-    },
-    {
-        "name": "minecraft:cherry_wall_sign",
-        "id": -544
-    },
-    {
-        "name": "minecraft:cherry_wood",
-        "id": -546
-    },
-    {
-        "name": "minecraft:chest",
-        "id": 54
-    },
-    {
-        "name": "minecraft:chest_boat",
-        "id": 665
-    },
-    {
-        "name": "minecraft:chest_minecart",
-        "id": 398
-    },
-    {
-        "name": "minecraft:chicken",
-        "id": 280
-    },
-    {
-        "name": "minecraft:chicken_spawn_egg",
-        "id": 445
-    },
-    {
-        "name": "minecraft:chipped_anvil",
-        "id": -959
-    },
-    {
-        "name": "minecraft:chiseled_bookshelf",
-        "id": -526
-    },
-    {
-        "name": "minecraft:chiseled_copper",
-        "id": -760
-    },
-    {
-        "name": "minecraft:chiseled_deepslate",
-        "id": -395
-    },
-    {
-        "name": "minecraft:chiseled_nether_bricks",
-        "id": -302
-    },
-    {
-        "name": "minecraft:chiseled_polished_blackstone",
-        "id": -279
-    },
-    {
-        "name": "minecraft:chiseled_quartz_block",
-        "id": -953
-    },
-    {
-        "name": "minecraft:chiseled_red_sandstone",
-        "id": -956
-    },
-    {
-        "name": "minecraft:chiseled_sandstone",
-        "id": -944
-    },
-    {
-        "name": "minecraft:chiseled_stone_bricks",
-        "id": -870
-    },
-    {
-        "name": "minecraft:chiseled_tuff",
-        "id": -753
-    },
-    {
-        "name": "minecraft:chiseled_tuff_bricks",
-        "id": -759
-    },
-    {
-        "name": "minecraft:chorus_flower",
-        "id": 200
-    },
-    {
-        "name": "minecraft:chorus_fruit",
-        "id": 575
-    },
-    {
-        "name": "minecraft:chorus_plant",
-        "id": 240
-    },
-    {
-        "name": "minecraft:clay",
-        "id": 82
-    },
-    {
-        "name": "minecraft:clay_ball",
-        "id": 393
-    },
-    {
-        "name": "minecraft:client_request_placeholder_block",
-        "id": -465
-    },
-    {
-        "name": "minecraft:clock",
-        "id": 402
-    },
-    {
-        "name": "minecraft:coal",
-        "id": 309
-    },
-    {
-        "name": "minecraft:coal_block",
-        "id": 173
-    },
-    {
-        "name": "minecraft:coal_ore",
-        "id": 16
-    },
-    {
-        "name": "minecraft:coarse_dirt",
-        "id": -962
-    },
-    {
-        "name": "minecraft:coast_armor_trim_smithing_template",
-        "id": 703
-    },
-    {
-        "name": "minecraft:cobbled_deepslate",
-        "id": -379
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_double_slab",
-        "id": -396
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_slab",
-        "id": -380
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_stairs",
-        "id": -381
-    },
-    {
-        "name": "minecraft:cobbled_deepslate_wall",
-        "id": -382
-    },
-    {
-        "name": "minecraft:cobblestone",
-        "id": 4
-    },
-    {
-        "name": "minecraft:cobblestone_double_slab",
-        "id": -879
-    },
-    {
-        "name": "minecraft:cobblestone_slab",
-        "id": -873
-    },
-    {
-        "name": "minecraft:cobblestone_wall",
-        "id": 139
-    },
-    {
-        "name": "minecraft:cocoa",
-        "id": 127
-    },
-    {
-        "name": "minecraft:cocoa_beans",
-        "id": 421
-    },
-    {
-        "name": "minecraft:cod",
-        "id": 269
-    },
-    {
-        "name": "minecraft:cod_bucket",
-        "id": 372
-    },
-    {
-        "name": "minecraft:cod_spawn_egg",
-        "id": 491
-    },
-    {
-        "name": "minecraft:colored_torch_bp",
-        "id": 204
-    },
-    {
-        "name": "minecraft:colored_torch_rg",
-        "id": 202
-    },
-    {
-        "name": "minecraft:command_block",
-        "id": 137
-    },
-    {
-        "name": "minecraft:command_block_minecart",
-        "id": 580
-    },
-    {
-        "name": "minecraft:comparator",
-        "id": 539
-    },
-    {
-        "name": "minecraft:compass",
-        "id": 400
-    },
-    {
-        "name": "minecraft:composter",
-        "id": -213
-    },
-    {
-        "name": "minecraft:compound",
-        "id": 614
-    },
-    {
-        "name": "minecraft:concrete",
-        "id": 753
-    },
-    {
-        "name": "minecraft:concrete_powder",
-        "id": 754
-    },
-    {
-        "name": "minecraft:conduit",
-        "id": -157
-    },
-    {
-        "name": "minecraft:cooked_beef",
-        "id": 279
-    },
-    {
-        "name": "minecraft:cooked_chicken",
-        "id": 281
-    },
-    {
-        "name": "minecraft:cooked_cod",
-        "id": 273
-    },
-    {
-        "name": "minecraft:cooked_mutton",
-        "id": 568
-    },
-    {
-        "name": "minecraft:cooked_porkchop",
-        "id": 268
-    },
-    {
-        "name": "minecraft:cooked_rabbit",
-        "id": 294
-    },
-    {
-        "name": "minecraft:cooked_salmon",
-        "id": 274
-    },
-    {
-        "name": "minecraft:cookie",
-        "id": 276
-    },
-    {
-        "name": "minecraft:copper_block",
-        "id": -340
-    },
-    {
-        "name": "minecraft:copper_bulb",
-        "id": -776
-    },
-    {
-        "name": "minecraft:copper_door",
-        "id": -784
-    },
-    {
-        "name": "minecraft:copper_grate",
-        "id": -768
-    },
-    {
-        "name": "minecraft:copper_ingot",
-        "id": 521
-    },
-    {
-        "name": "minecraft:copper_ore",
-        "id": -311
-    },
-    {
-        "name": "minecraft:copper_trapdoor",
-        "id": -792
-    },
-    {
-        "name": "minecraft:coral",
-        "id": 749
-    },
-    {
-        "name": "minecraft:coral_block",
-        "id": 731
-    },
-    {
-        "name": "minecraft:coral_fan",
-        "id": 740
-    },
-    {
-        "name": "minecraft:coral_fan_dead",
-        "id": 741
-    },
-    {
-        "name": "minecraft:cornflower",
-        "id": -838
-    },
-    {
-        "name": "minecraft:cow_spawn_egg",
-        "id": 446
-    },
-    {
-        "name": "minecraft:cracked_deepslate_bricks",
-        "id": -410
-    },
-    {
-        "name": "minecraft:cracked_deepslate_tiles",
-        "id": -409
-    },
-    {
-        "name": "minecraft:cracked_nether_bricks",
-        "id": -303
-    },
-    {
-        "name": "minecraft:cracked_polished_blackstone_bricks",
-        "id": -280
-    },
-    {
-        "name": "minecraft:cracked_stone_bricks",
-        "id": -869
-    },
-    {
-        "name": "minecraft:crafter",
-        "id": -313
-    },
-    {
-        "name": "minecraft:crafting_table",
-        "id": 58
-    },
-    {
-        "name": "minecraft:creeper_banner_pattern",
-        "id": 599
-    },
-    {
-        "name": "minecraft:creeper_spawn_egg",
-        "id": 451
-    },
-    {
-        "name": "minecraft:crimson_button",
-        "id": -260
-    },
-    {
-        "name": "minecraft:crimson_door",
-        "id": 636
-    },
-    {
-        "name": "minecraft:crimson_double_slab",
-        "id": -266
-    },
-    {
-        "name": "minecraft:crimson_fence",
-        "id": -256
-    },
-    {
-        "name": "minecraft:crimson_fence_gate",
-        "id": -258
-    },
-    {
-        "name": "minecraft:crimson_fungus",
-        "id": -228
-    },
-    {
-        "name": "minecraft:crimson_hanging_sign",
-        "id": -506
-    },
-    {
-        "name": "minecraft:crimson_hyphae",
-        "id": -299
-    },
-    {
-        "name": "minecraft:crimson_nylium",
-        "id": -232
-    },
-    {
-        "name": "minecraft:crimson_planks",
-        "id": -242
-    },
-    {
-        "name": "minecraft:crimson_pressure_plate",
-        "id": -262
-    },
-    {
-        "name": "minecraft:crimson_roots",
-        "id": -223
-    },
-    {
-        "name": "minecraft:crimson_sign",
-        "id": 634
-    },
-    {
-        "name": "minecraft:crimson_slab",
-        "id": -264
-    },
-    {
-        "name": "minecraft:crimson_stairs",
-        "id": -254
-    },
-    {
-        "name": "minecraft:crimson_standing_sign",
-        "id": -250
-    },
-    {
-        "name": "minecraft:crimson_stem",
-        "id": -225
-    },
-    {
-        "name": "minecraft:crimson_trapdoor",
-        "id": -246
-    },
-    {
-        "name": "minecraft:crimson_wall_sign",
-        "id": -252
-    },
-    {
-        "name": "minecraft:crossbow",
-        "id": 592
-    },
-    {
-        "name": "minecraft:crying_obsidian",
-        "id": -289
-    },
-    {
-        "name": "minecraft:cut_copper",
-        "id": -347
-    },
-    {
-        "name": "minecraft:cut_copper_slab",
-        "id": -361
-    },
-    {
-        "name": "minecraft:cut_copper_stairs",
-        "id": -354
-    },
-    {
-        "name": "minecraft:cut_red_sandstone",
-        "id": -957
-    },
-    {
-        "name": "minecraft:cut_red_sandstone_double_slab",
-        "id": -928
-    },
-    {
-        "name": "minecraft:cut_red_sandstone_slab",
-        "id": -901
-    },
-    {
-        "name": "minecraft:cut_sandstone",
-        "id": -945
-    },
-    {
-        "name": "minecraft:cut_sandstone_double_slab",
-        "id": -927
-    },
-    {
-        "name": "minecraft:cut_sandstone_slab",
-        "id": -900
-    },
-    {
-        "name": "minecraft:cyan_candle",
-        "id": -422
-    },
-    {
-        "name": "minecraft:cyan_candle_cake",
-        "id": -439
-    },
-    {
-        "name": "minecraft:cyan_carpet",
-        "id": -605
-    },
-    {
-        "name": "minecraft:cyan_concrete",
-        "id": -636
-    },
-    {
-        "name": "minecraft:cyan_concrete_powder",
-        "id": -717
-    },
-    {
-        "name": "minecraft:cyan_dye",
-        "id": 410
-    },
-    {
-        "name": "minecraft:cyan_glazed_terracotta",
-        "id": 229
-    },
-    {
-        "name": "minecraft:cyan_shulker_box",
-        "id": -621
-    },
-    {
-        "name": "minecraft:cyan_stained_glass",
-        "id": -681
-    },
-    {
-        "name": "minecraft:cyan_stained_glass_pane",
-        "id": -651
-    },
-    {
-        "name": "minecraft:cyan_terracotta",
-        "id": -732
-    },
-    {
-        "name": "minecraft:cyan_wool",
-        "id": -561
-    },
-    {
-        "name": "minecraft:damaged_anvil",
-        "id": -960
-    },
-    {
-        "name": "minecraft:dandelion",
-        "id": 37
-    },
-    {
-        "name": "minecraft:danger_pottery_sherd",
-        "id": 682
-    },
-    {
-        "name": "minecraft:dark_oak_boat",
-        "id": 389
-    },
-    {
-        "name": "minecraft:dark_oak_button",
-        "id": -142
-    },
-    {
-        "name": "minecraft:dark_oak_chest_boat",
-        "id": 663
-    },
-    {
-        "name": "minecraft:dark_oak_door",
-        "id": 574
-    },
-    {
-        "name": "minecraft:dark_oak_double_slab",
-        "id": -813
-    },
-    {
-        "name": "minecraft:dark_oak_fence",
-        "id": -577
-    },
-    {
-        "name": "minecraft:dark_oak_fence_gate",
-        "id": 186
-    },
-    {
-        "name": "minecraft:dark_oak_hanging_sign",
-        "id": -505
-    },
-    {
-        "name": "minecraft:dark_oak_leaves",
-        "id": -803
-    },
-    {
-        "name": "minecraft:dark_oak_log",
-        "id": -572
-    },
-    {
-        "name": "minecraft:dark_oak_planks",
-        "id": -743
-    },
-    {
-        "name": "minecraft:dark_oak_pressure_plate",
-        "id": -152
-    },
-    {
-        "name": "minecraft:dark_oak_sapling",
-        "id": -829
-    },
-    {
-        "name": "minecraft:dark_oak_sign",
-        "id": 597
-    },
-    {
-        "name": "minecraft:dark_oak_slab",
-        "id": -808
-    },
-    {
-        "name": "minecraft:dark_oak_stairs",
-        "id": 164
-    },
-    {
-        "name": "minecraft:dark_oak_trapdoor",
-        "id": -147
-    },
-    {
-        "name": "minecraft:dark_oak_wood",
-        "id": -818
-    },
-    {
-        "name": "minecraft:dark_prismarine",
-        "id": -947
-    },
-    {
-        "name": "minecraft:dark_prismarine_double_slab",
-        "id": -913
-    },
-    {
-        "name": "minecraft:dark_prismarine_slab",
-        "id": -886
-    },
-    {
-        "name": "minecraft:dark_prismarine_stairs",
-        "id": -3
-    },
-    {
-        "name": "minecraft:darkoak_standing_sign",
-        "id": -192
-    },
-    {
-        "name": "minecraft:darkoak_wall_sign",
-        "id": -193
-    },
-    {
-        "name": "minecraft:daylight_detector",
-        "id": 151
-    },
-    {
-        "name": "minecraft:daylight_detector_inverted",
-        "id": 178
-    },
-    {
-        "name": "minecraft:dead_brain_coral",
-        "id": -586
-    },
-    {
-        "name": "minecraft:dead_brain_coral_block",
-        "id": -854
-    },
-    {
-        "name": "minecraft:dead_brain_coral_fan",
-        "id": -844
-    },
-    {
-        "name": "minecraft:dead_brain_coral_wall_fan",
-        "id": -906
-    },
-    {
-        "name": "minecraft:dead_bubble_coral",
-        "id": -587
-    },
-    {
-        "name": "minecraft:dead_bubble_coral_block",
-        "id": -855
-    },
-    {
-        "name": "minecraft:dead_bubble_coral_fan",
-        "id": -845
-    },
-    {
-        "name": "minecraft:dead_bubble_coral_wall_fan",
-        "id": -908
-    },
-    {
-        "name": "minecraft:dead_fire_coral",
-        "id": -588
-    },
-    {
-        "name": "minecraft:dead_fire_coral_block",
-        "id": -856
-    },
-    {
-        "name": "minecraft:dead_fire_coral_fan",
-        "id": -846
-    },
-    {
-        "name": "minecraft:dead_fire_coral_wall_fan",
-        "id": -909
-    },
-    {
-        "name": "minecraft:dead_horn_coral",
-        "id": -589
-    },
-    {
-        "name": "minecraft:dead_horn_coral_block",
-        "id": -857
-    },
-    {
-        "name": "minecraft:dead_horn_coral_fan",
-        "id": -847
-    },
-    {
-        "name": "minecraft:dead_horn_coral_wall_fan",
-        "id": -910
-    },
-    {
-        "name": "minecraft:dead_tube_coral",
-        "id": -585
-    },
-    {
-        "name": "minecraft:dead_tube_coral_block",
-        "id": -853
-    },
-    {
-        "name": "minecraft:dead_tube_coral_fan",
-        "id": -134
-    },
-    {
-        "name": "minecraft:dead_tube_coral_wall_fan",
-        "id": -905
-    },
-    {
-        "name": "minecraft:deadbush",
-        "id": 32
-    },
-    {
-        "name": "minecraft:decorated_pot",
-        "id": -551
-    },
-    {
-        "name": "minecraft:deepslate",
-        "id": -378
-    },
-    {
-        "name": "minecraft:deepslate_brick_double_slab",
-        "id": -399
-    },
-    {
-        "name": "minecraft:deepslate_brick_slab",
-        "id": -392
-    },
-    {
-        "name": "minecraft:deepslate_brick_stairs",
-        "id": -393
-    },
-    {
-        "name": "minecraft:deepslate_brick_wall",
-        "id": -394
-    },
-    {
-        "name": "minecraft:deepslate_bricks",
-        "id": -391
-    },
-    {
-        "name": "minecraft:deepslate_coal_ore",
-        "id": -406
-    },
-    {
-        "name": "minecraft:deepslate_copper_ore",
-        "id": -408
-    },
-    {
-        "name": "minecraft:deepslate_diamond_ore",
-        "id": -405
-    },
-    {
-        "name": "minecraft:deepslate_emerald_ore",
-        "id": -407
-    },
-    {
-        "name": "minecraft:deepslate_gold_ore",
-        "id": -402
-    },
-    {
-        "name": "minecraft:deepslate_iron_ore",
-        "id": -401
-    },
-    {
-        "name": "minecraft:deepslate_lapis_ore",
-        "id": -400
-    },
-    {
-        "name": "minecraft:deepslate_redstone_ore",
-        "id": -403
-    },
-    {
-        "name": "minecraft:deepslate_tile_double_slab",
-        "id": -398
-    },
-    {
-        "name": "minecraft:deepslate_tile_slab",
-        "id": -388
-    },
-    {
-        "name": "minecraft:deepslate_tile_stairs",
-        "id": -389
-    },
-    {
-        "name": "minecraft:deepslate_tile_wall",
-        "id": -390
-    },
-    {
-        "name": "minecraft:deepslate_tiles",
-        "id": -387
-    },
-    {
-        "name": "minecraft:deny",
-        "id": 211
-    },
-    {
-        "name": "minecraft:deprecated_anvil",
-        "id": -961
-    },
-    {
-        "name": "minecraft:detector_rail",
-        "id": 28
-    },
-    {
-        "name": "minecraft:diamond",
-        "id": 311
-    },
-    {
-        "name": "minecraft:diamond_axe",
-        "id": 326
-    },
-    {
-        "name": "minecraft:diamond_block",
-        "id": 57
-    },
-    {
-        "name": "minecraft:diamond_boots",
-        "id": 358
-    },
-    {
-        "name": "minecraft:diamond_chestplate",
-        "id": 356
-    },
-    {
-        "name": "minecraft:diamond_helmet",
-        "id": 355
-    },
-    {
-        "name": "minecraft:diamond_hoe",
-        "id": 340
-    },
-    {
-        "name": "minecraft:diamond_horse_armor",
-        "id": 550
-    },
-    {
-        "name": "minecraft:diamond_leggings",
-        "id": 357
-    },
-    {
-        "name": "minecraft:diamond_ore",
-        "id": 56
-    },
-    {
-        "name": "minecraft:diamond_pickaxe",
-        "id": 325
-    },
-    {
-        "name": "minecraft:diamond_shovel",
-        "id": 324
-    },
-    {
-        "name": "minecraft:diamond_sword",
-        "id": 323
-    },
-    {
-        "name": "minecraft:diorite",
-        "id": -592
-    },
-    {
-        "name": "minecraft:diorite_double_slab",
-        "id": -921
-    },
-    {
-        "name": "minecraft:diorite_slab",
-        "id": -894
-    },
-    {
-        "name": "minecraft:diorite_stairs",
-        "id": -170
-    },
-    {
-        "name": "minecraft:dirt",
-        "id": 3
-    },
-    {
-        "name": "minecraft:dirt_with_roots",
-        "id": -318
-    },
-    {
-        "name": "minecraft:disc_fragment_5",
-        "id": 657
-    },
-    {
-        "name": "minecraft:dispenser",
-        "id": 23
-    },
-    {
-        "name": "minecraft:dolphin_spawn_egg",
-        "id": 495
-    },
-    {
-        "name": "minecraft:donkey_spawn_egg",
-        "id": 476
-    },
-    {
-        "name": "minecraft:double_cut_copper_slab",
-        "id": -368
-    },
-    {
-        "name": "minecraft:double_plant",
-        "id": 747
-    },
-    {
-        "name": "minecraft:double_stone_block_slab",
-        "id": 736
-    },
-    {
-        "name": "minecraft:double_stone_block_slab2",
-        "id": 737
-    },
-    {
-        "name": "minecraft:double_stone_block_slab3",
-        "id": 738
-    },
-    {
-        "name": "minecraft:double_stone_block_slab4",
-        "id": 739
-    },
-    {
-        "name": "minecraft:dragon_breath",
-        "id": 577
-    },
-    {
-        "name": "minecraft:dragon_egg",
-        "id": 122
-    },
-    {
-        "name": "minecraft:dried_kelp",
-        "id": 275
-    },
-    {
-        "name": "minecraft:dried_kelp_block",
-        "id": -139
-    },
-    {
-        "name": "minecraft:dripstone_block",
-        "id": -317
-    },
-    {
-        "name": "minecraft:dropper",
-        "id": 125
-    },
-    {
-        "name": "minecraft:drowned_spawn_egg",
-        "id": 494
-    },
-    {
-        "name": "minecraft:dune_armor_trim_smithing_template",
-        "id": 702
-    },
-    {
-        "name": "minecraft:dye",
-        "id": 766
-    },
-    {
-        "name": "minecraft:echo_shard",
-        "id": 667
-    },
-    {
-        "name": "minecraft:egg",
-        "id": 399
-    },
-    {
-        "name": "minecraft:elder_guardian_spawn_egg",
-        "id": 482
-    },
-    {
-        "name": "minecraft:element_0",
-        "id": 36
-    },
-    {
-        "name": "minecraft:element_1",
-        "id": -12
-    },
-    {
-        "name": "minecraft:element_10",
-        "id": -21
-    },
-    {
-        "name": "minecraft:element_100",
-        "id": -111
-    },
-    {
-        "name": "minecraft:element_101",
-        "id": -112
-    },
-    {
-        "name": "minecraft:element_102",
-        "id": -113
-    },
-    {
-        "name": "minecraft:element_103",
-        "id": -114
-    },
-    {
-        "name": "minecraft:element_104",
-        "id": -115
-    },
-    {
-        "name": "minecraft:element_105",
-        "id": -116
-    },
-    {
-        "name": "minecraft:element_106",
-        "id": -117
-    },
-    {
-        "name": "minecraft:element_107",
-        "id": -118
-    },
-    {
-        "name": "minecraft:element_108",
-        "id": -119
-    },
-    {
-        "name": "minecraft:element_109",
-        "id": -120
-    },
-    {
-        "name": "minecraft:element_11",
-        "id": -22
-    },
-    {
-        "name": "minecraft:element_110",
-        "id": -121
-    },
-    {
-        "name": "minecraft:element_111",
-        "id": -122
-    },
-    {
-        "name": "minecraft:element_112",
-        "id": -123
-    },
-    {
-        "name": "minecraft:element_113",
-        "id": -124
-    },
-    {
-        "name": "minecraft:element_114",
-        "id": -125
-    },
-    {
-        "name": "minecraft:element_115",
-        "id": -126
-    },
-    {
-        "name": "minecraft:element_116",
-        "id": -127
-    },
-    {
-        "name": "minecraft:element_117",
-        "id": -128
-    },
-    {
-        "name": "minecraft:element_118",
-        "id": -129
-    },
-    {
-        "name": "minecraft:element_12",
-        "id": -23
-    },
-    {
-        "name": "minecraft:element_13",
-        "id": -24
-    },
-    {
-        "name": "minecraft:element_14",
-        "id": -25
-    },
-    {
-        "name": "minecraft:element_15",
-        "id": -26
-    },
-    {
-        "name": "minecraft:element_16",
-        "id": -27
-    },
-    {
-        "name": "minecraft:element_17",
-        "id": -28
-    },
-    {
-        "name": "minecraft:element_18",
-        "id": -29
-    },
-    {
-        "name": "minecraft:element_19",
-        "id": -30
-    },
-    {
-        "name": "minecraft:element_2",
-        "id": -13
-    },
-    {
-        "name": "minecraft:element_20",
-        "id": -31
-    },
-    {
-        "name": "minecraft:element_21",
-        "id": -32
-    },
-    {
-        "name": "minecraft:element_22",
-        "id": -33
-    },
-    {
-        "name": "minecraft:element_23",
-        "id": -34
-    },
-    {
-        "name": "minecraft:element_24",
-        "id": -35
-    },
-    {
-        "name": "minecraft:element_25",
-        "id": -36
-    },
-    {
-        "name": "minecraft:element_26",
-        "id": -37
-    },
-    {
-        "name": "minecraft:element_27",
-        "id": -38
-    },
-    {
-        "name": "minecraft:element_28",
-        "id": -39
-    },
-    {
-        "name": "minecraft:element_29",
-        "id": -40
-    },
-    {
-        "name": "minecraft:element_3",
-        "id": -14
-    },
-    {
-        "name": "minecraft:element_30",
-        "id": -41
-    },
-    {
-        "name": "minecraft:element_31",
-        "id": -42
-    },
-    {
-        "name": "minecraft:element_32",
-        "id": -43
-    },
-    {
-        "name": "minecraft:element_33",
-        "id": -44
-    },
-    {
-        "name": "minecraft:element_34",
-        "id": -45
-    },
-    {
-        "name": "minecraft:element_35",
-        "id": -46
-    },
-    {
-        "name": "minecraft:element_36",
-        "id": -47
-    },
-    {
-        "name": "minecraft:element_37",
-        "id": -48
-    },
-    {
-        "name": "minecraft:element_38",
-        "id": -49
-    },
-    {
-        "name": "minecraft:element_39",
-        "id": -50
-    },
-    {
-        "name": "minecraft:element_4",
-        "id": -15
-    },
-    {
-        "name": "minecraft:element_40",
-        "id": -51
-    },
-    {
-        "name": "minecraft:element_41",
-        "id": -52
-    },
-    {
-        "name": "minecraft:element_42",
-        "id": -53
-    },
-    {
-        "name": "minecraft:element_43",
-        "id": -54
-    },
-    {
-        "name": "minecraft:element_44",
-        "id": -55
-    },
-    {
-        "name": "minecraft:element_45",
-        "id": -56
-    },
-    {
-        "name": "minecraft:element_46",
-        "id": -57
-    },
-    {
-        "name": "minecraft:element_47",
-        "id": -58
-    },
-    {
-        "name": "minecraft:element_48",
-        "id": -59
-    },
-    {
-        "name": "minecraft:element_49",
-        "id": -60
-    },
-    {
-        "name": "minecraft:element_5",
-        "id": -16
-    },
-    {
-        "name": "minecraft:element_50",
-        "id": -61
-    },
-    {
-        "name": "minecraft:element_51",
-        "id": -62
-    },
-    {
-        "name": "minecraft:element_52",
-        "id": -63
-    },
-    {
-        "name": "minecraft:element_53",
-        "id": -64
-    },
-    {
-        "name": "minecraft:element_54",
-        "id": -65
-    },
-    {
-        "name": "minecraft:element_55",
-        "id": -66
-    },
-    {
-        "name": "minecraft:element_56",
-        "id": -67
-    },
-    {
-        "name": "minecraft:element_57",
-        "id": -68
-    },
-    {
-        "name": "minecraft:element_58",
-        "id": -69
-    },
-    {
-        "name": "minecraft:element_59",
-        "id": -70
-    },
-    {
-        "name": "minecraft:element_6",
-        "id": -17
-    },
-    {
-        "name": "minecraft:element_60",
-        "id": -71
-    },
-    {
-        "name": "minecraft:element_61",
-        "id": -72
-    },
-    {
-        "name": "minecraft:element_62",
-        "id": -73
-    },
-    {
-        "name": "minecraft:element_63",
-        "id": -74
-    },
-    {
-        "name": "minecraft:element_64",
-        "id": -75
-    },
-    {
-        "name": "minecraft:element_65",
-        "id": -76
-    },
-    {
-        "name": "minecraft:element_66",
-        "id": -77
-    },
-    {
-        "name": "minecraft:element_67",
-        "id": -78
-    },
-    {
-        "name": "minecraft:element_68",
-        "id": -79
-    },
-    {
-        "name": "minecraft:element_69",
-        "id": -80
-    },
-    {
-        "name": "minecraft:element_7",
-        "id": -18
-    },
-    {
-        "name": "minecraft:element_70",
-        "id": -81
-    },
-    {
-        "name": "minecraft:element_71",
-        "id": -82
-    },
-    {
-        "name": "minecraft:element_72",
-        "id": -83
-    },
-    {
-        "name": "minecraft:element_73",
-        "id": -84
-    },
-    {
-        "name": "minecraft:element_74",
-        "id": -85
-    },
-    {
-        "name": "minecraft:element_75",
-        "id": -86
-    },
-    {
-        "name": "minecraft:element_76",
-        "id": -87
-    },
-    {
-        "name": "minecraft:element_77",
-        "id": -88
-    },
-    {
-        "name": "minecraft:element_78",
-        "id": -89
-    },
-    {
-        "name": "minecraft:element_79",
-        "id": -90
-    },
-    {
-        "name": "minecraft:element_8",
-        "id": -19
-    },
-    {
-        "name": "minecraft:element_80",
-        "id": -91
-    },
-    {
-        "name": "minecraft:element_81",
-        "id": -92
-    },
-    {
-        "name": "minecraft:element_82",
-        "id": -93
-    },
-    {
-        "name": "minecraft:element_83",
-        "id": -94
-    },
-    {
-        "name": "minecraft:element_84",
-        "id": -95
-    },
-    {
-        "name": "minecraft:element_85",
-        "id": -96
-    },
-    {
-        "name": "minecraft:element_86",
-        "id": -97
-    },
-    {
-        "name": "minecraft:element_87",
-        "id": -98
-    },
-    {
-        "name": "minecraft:element_88",
-        "id": -99
-    },
-    {
-        "name": "minecraft:element_89",
-        "id": -100
-    },
-    {
-        "name": "minecraft:element_9",
-        "id": -20
-    },
-    {
-        "name": "minecraft:element_90",
-        "id": -101
-    },
-    {
-        "name": "minecraft:element_91",
-        "id": -102
-    },
-    {
-        "name": "minecraft:element_92",
-        "id": -103
-    },
-    {
-        "name": "minecraft:element_93",
-        "id": -104
-    },
-    {
-        "name": "minecraft:element_94",
-        "id": -105
-    },
-    {
-        "name": "minecraft:element_95",
-        "id": -106
-    },
-    {
-        "name": "minecraft:element_96",
-        "id": -107
-    },
-    {
-        "name": "minecraft:element_97",
-        "id": -108
-    },
-    {
-        "name": "minecraft:element_98",
-        "id": -109
-    },
-    {
-        "name": "minecraft:element_99",
-        "id": -110
-    },
-    {
-        "name": "minecraft:elytra",
-        "id": 581
-    },
-    {
-        "name": "minecraft:emerald",
-        "id": 529
-    },
-    {
-        "name": "minecraft:emerald_block",
-        "id": 133
-    },
-    {
-        "name": "minecraft:emerald_ore",
-        "id": 129
-    },
-    {
-        "name": "minecraft:empty_map",
-        "id": 532
-    },
-    {
-        "name": "minecraft:enchanted_book",
-        "id": 538
-    },
-    {
-        "name": "minecraft:enchanted_golden_apple",
-        "id": 264
-    },
-    {
-        "name": "minecraft:enchanting_table",
-        "id": 116
-    },
-    {
-        "name": "minecraft:end_brick_stairs",
-        "id": -178
-    },
-    {
-        "name": "minecraft:end_bricks",
-        "id": 206
-    },
-    {
-        "name": "minecraft:end_crystal",
-        "id": 769
-    },
-    {
-        "name": "minecraft:end_gateway",
-        "id": 209
-    },
-    {
-        "name": "minecraft:end_portal",
-        "id": 119
-    },
-    {
-        "name": "minecraft:end_portal_frame",
-        "id": 120
-    },
-    {
-        "name": "minecraft:end_rod",
-        "id": 208
-    },
-    {
-        "name": "minecraft:end_stone",
-        "id": 121
-    },
-    {
-        "name": "minecraft:end_stone_brick_double_slab",
-        "id": -167
-    },
-    {
-        "name": "minecraft:end_stone_brick_slab",
-        "id": -162
-    },
-    {
-        "name": "minecraft:ender_chest",
-        "id": 130
-    },
-    {
-        "name": "minecraft:ender_dragon_spawn_egg",
-        "id": 518
-    },
-    {
-        "name": "minecraft:ender_eye",
-        "id": 443
-    },
-    {
-        "name": "minecraft:ender_pearl",
-        "id": 431
-    },
-    {
-        "name": "minecraft:enderman_spawn_egg",
-        "id": 452
-    },
-    {
-        "name": "minecraft:endermite_spawn_egg",
-        "id": 470
-    },
-    {
-        "name": "minecraft:evoker_spawn_egg",
-        "id": 486
-    },
-    {
-        "name": "minecraft:experience_bottle",
-        "id": 525
-    },
-    {
-        "name": "minecraft:explorer_pottery_sherd",
-        "id": 683
-    },
-    {
-        "name": "minecraft:exposed_chiseled_copper",
-        "id": -761
-    },
-    {
-        "name": "minecraft:exposed_copper",
-        "id": -341
-    },
-    {
-        "name": "minecraft:exposed_copper_bulb",
-        "id": -777
-    },
-    {
-        "name": "minecraft:exposed_copper_door",
-        "id": -785
-    },
-    {
-        "name": "minecraft:exposed_copper_grate",
-        "id": -769
-    },
-    {
-        "name": "minecraft:exposed_copper_trapdoor",
-        "id": -793
-    },
-    {
-        "name": "minecraft:exposed_cut_copper",
-        "id": -348
-    },
-    {
-        "name": "minecraft:exposed_cut_copper_slab",
-        "id": -362
-    },
-    {
-        "name": "minecraft:exposed_cut_copper_stairs",
-        "id": -355
-    },
-    {
-        "name": "minecraft:exposed_double_cut_copper_slab",
-        "id": -369
-    },
-    {
-        "name": "minecraft:eye_armor_trim_smithing_template",
-        "id": 706
-    },
-    {
-        "name": "minecraft:farmland",
-        "id": 60
-    },
-    {
-        "name": "minecraft:feather",
-        "id": 335
-    },
-    {
-        "name": "minecraft:fence",
-        "id": 729
-    },
-    {
-        "name": "minecraft:fence_gate",
-        "id": 107
-    },
-    {
-        "name": "minecraft:fermented_spider_eye",
-        "id": 438
-    },
-    {
-        "name": "minecraft:fern",
-        "id": -848
-    },
-    {
-        "name": "minecraft:field_masoned_banner_pattern",
-        "id": 602
-    },
-    {
-        "name": "minecraft:filled_map",
-        "id": 429
-    },
-    {
-        "name": "minecraft:fire",
-        "id": 51
-    },
-    {
-        "name": "minecraft:fire_charge",
-        "id": 526
-    },
-    {
-        "name": "minecraft:fire_coral",
-        "id": -583
-    },
-    {
-        "name": "minecraft:fire_coral_block",
-        "id": -851
-    },
-    {
-        "name": "minecraft:fire_coral_fan",
-        "id": -842
-    },
-    {
-        "name": "minecraft:fire_coral_wall_fan",
-        "id": -907
-    },
-    {
-        "name": "minecraft:firework_rocket",
-        "id": 536
-    },
-    {
-        "name": "minecraft:firework_star",
-        "id": 537
-    },
-    {
-        "name": "minecraft:fishing_rod",
-        "id": 401
-    },
-    {
-        "name": "minecraft:fletching_table",
-        "id": -201
-    },
-    {
-        "name": "minecraft:flint",
-        "id": 364
-    },
-    {
-        "name": "minecraft:flint_and_steel",
-        "id": 306
-    },
-    {
-        "name": "minecraft:flow_armor_trim_smithing_template",
-        "id": 717
-    },
-    {
-        "name": "minecraft:flow_banner_pattern",
-        "id": 606
-    },
-    {
-        "name": "minecraft:flow_pottery_sherd",
-        "id": 684
-    },
-    {
-        "name": "minecraft:flower_banner_pattern",
-        "id": 598
-    },
-    {
-        "name": "minecraft:flower_pot",
-        "id": 531
-    },
-    {
-        "name": "minecraft:flowering_azalea",
-        "id": -338
-    },
-    {
-        "name": "minecraft:flowing_lava",
-        "id": 10
-    },
-    {
-        "name": "minecraft:flowing_water",
-        "id": 8
-    },
-    {
-        "name": "minecraft:fox_spawn_egg",
-        "id": 501
-    },
-    {
-        "name": "minecraft:frame",
-        "id": 530
-    },
-    {
-        "name": "minecraft:friend_pottery_sherd",
-        "id": 685
-    },
-    {
-        "name": "minecraft:frog_spawn",
-        "id": -468
-    },
-    {
-        "name": "minecraft:frog_spawn_egg",
-        "id": 648
-    },
-    {
-        "name": "minecraft:frosted_ice",
-        "id": 207
-    },
-    {
-        "name": "minecraft:furnace",
-        "id": 61
-    },
-    {
-        "name": "minecraft:ghast_spawn_egg",
-        "id": 464
-    },
-    {
-        "name": "minecraft:ghast_tear",
-        "id": 434
-    },
-    {
-        "name": "minecraft:gilded_blackstone",
-        "id": -281
-    },
-    {
-        "name": "minecraft:glass",
-        "id": 20
-    },
-    {
-        "name": "minecraft:glass_bottle",
-        "id": 437
-    },
-    {
-        "name": "minecraft:glass_pane",
-        "id": 102
-    },
-    {
-        "name": "minecraft:glistering_melon_slice",
-        "id": 444
-    },
-    {
-        "name": "minecraft:globe_banner_pattern",
-        "id": 605
-    },
-    {
-        "name": "minecraft:glow_berries",
-        "id": 770
-    },
-    {
-        "name": "minecraft:glow_frame",
-        "id": 643
-    },
-    {
-        "name": "minecraft:glow_ink_sac",
-        "id": 520
-    },
-    {
-        "name": "minecraft:glow_lichen",
-        "id": -411
-    },
-    {
-        "name": "minecraft:glow_squid_spawn_egg",
-        "id": 515
-    },
-    {
-        "name": "minecraft:glow_stick",
-        "id": 621
-    },
-    {
-        "name": "minecraft:glowingobsidian",
-        "id": 246
-    },
-    {
-        "name": "minecraft:glowstone",
-        "id": 89
-    },
-    {
-        "name": "minecraft:glowstone_dust",
-        "id": 403
-    },
-    {
-        "name": "minecraft:goat_horn",
-        "id": 647
-    },
-    {
-        "name": "minecraft:goat_spawn_egg",
-        "id": 514
-    },
-    {
-        "name": "minecraft:gold_block",
-        "id": 41
-    },
-    {
-        "name": "minecraft:gold_ingot",
-        "id": 313
-    },
-    {
-        "name": "minecraft:gold_nugget",
-        "id": 435
-    },
-    {
-        "name": "minecraft:gold_ore",
-        "id": 14
-    },
-    {
-        "name": "minecraft:golden_apple",
-        "id": 263
-    },
-    {
-        "name": "minecraft:golden_axe",
-        "id": 333
-    },
-    {
-        "name": "minecraft:golden_boots",
-        "id": 362
-    },
-    {
-        "name": "minecraft:golden_carrot",
-        "id": 288
-    },
-    {
-        "name": "minecraft:golden_chestplate",
-        "id": 360
-    },
-    {
-        "name": "minecraft:golden_helmet",
-        "id": 359
-    },
-    {
-        "name": "minecraft:golden_hoe",
-        "id": 341
-    },
-    {
-        "name": "minecraft:golden_horse_armor",
-        "id": 549
-    },
-    {
-        "name": "minecraft:golden_leggings",
-        "id": 361
-    },
-    {
-        "name": "minecraft:golden_pickaxe",
-        "id": 332
-    },
-    {
-        "name": "minecraft:golden_rail",
-        "id": 27
-    },
-    {
-        "name": "minecraft:golden_shovel",
-        "id": 331
-    },
-    {
-        "name": "minecraft:golden_sword",
-        "id": 330
-    },
-    {
-        "name": "minecraft:granite",
-        "id": -590
-    },
-    {
-        "name": "minecraft:granite_double_slab",
-        "id": -923
-    },
-    {
-        "name": "minecraft:granite_slab",
-        "id": -896
-    },
-    {
-        "name": "minecraft:granite_stairs",
-        "id": -169
-    },
-    {
-        "name": "minecraft:grass_block",
-        "id": 2
-    },
-    {
-        "name": "minecraft:grass_path",
-        "id": 198
-    },
-    {
-        "name": "minecraft:gravel",
-        "id": 13
-    },
-    {
-        "name": "minecraft:gray_candle",
-        "id": -420
-    },
-    {
-        "name": "minecraft:gray_candle_cake",
-        "id": -437
-    },
-    {
-        "name": "minecraft:gray_carpet",
-        "id": -603
-    },
-    {
-        "name": "minecraft:gray_concrete",
-        "id": -634
-    },
-    {
-        "name": "minecraft:gray_concrete_powder",
-        "id": -715
-    },
-    {
-        "name": "minecraft:gray_dye",
-        "id": 412
-    },
-    {
-        "name": "minecraft:gray_glazed_terracotta",
-        "id": 227
-    },
-    {
-        "name": "minecraft:gray_shulker_box",
-        "id": -619
-    },
-    {
-        "name": "minecraft:gray_stained_glass",
-        "id": -679
-    },
-    {
-        "name": "minecraft:gray_stained_glass_pane",
-        "id": -649
-    },
-    {
-        "name": "minecraft:gray_terracotta",
-        "id": -730
-    },
-    {
-        "name": "minecraft:gray_wool",
-        "id": -553
-    },
-    {
-        "name": "minecraft:green_candle",
-        "id": -426
-    },
-    {
-        "name": "minecraft:green_candle_cake",
-        "id": -443
-    },
-    {
-        "name": "minecraft:green_carpet",
-        "id": -609
-    },
-    {
-        "name": "minecraft:green_concrete",
-        "id": -640
-    },
-    {
-        "name": "minecraft:green_concrete_powder",
-        "id": -721
-    },
-    {
-        "name": "minecraft:green_dye",
-        "id": 406
-    },
-    {
-        "name": "minecraft:green_glazed_terracotta",
-        "id": 233
-    },
-    {
-        "name": "minecraft:green_shulker_box",
-        "id": -625
-    },
-    {
-        "name": "minecraft:green_stained_glass",
-        "id": -685
-    },
-    {
-        "name": "minecraft:green_stained_glass_pane",
-        "id": -655
-    },
-    {
-        "name": "minecraft:green_terracotta",
-        "id": -736
-    },
-    {
-        "name": "minecraft:green_wool",
-        "id": -560
-    },
-    {
-        "name": "minecraft:grindstone",
-        "id": -195
-    },
-    {
-        "name": "minecraft:guardian_spawn_egg",
-        "id": 471
-    },
-    {
-        "name": "minecraft:gunpowder",
-        "id": 336
-    },
-    {
-        "name": "minecraft:guster_banner_pattern",
-        "id": 607
-    },
-    {
-        "name": "minecraft:guster_pottery_sherd",
-        "id": 686
-    },
-    {
-        "name": "minecraft:hanging_roots",
-        "id": -319
-    },
-    {
-        "name": "minecraft:hard_black_stained_glass",
-        "id": -702
-    },
-    {
-        "name": "minecraft:hard_black_stained_glass_pane",
-        "id": -672
-    },
-    {
-        "name": "minecraft:hard_blue_stained_glass",
-        "id": -698
-    },
-    {
-        "name": "minecraft:hard_blue_stained_glass_pane",
-        "id": -668
-    },
-    {
-        "name": "minecraft:hard_brown_stained_glass",
-        "id": -699
-    },
-    {
-        "name": "minecraft:hard_brown_stained_glass_pane",
-        "id": -669
-    },
-    {
-        "name": "minecraft:hard_cyan_stained_glass",
-        "id": -696
-    },
-    {
-        "name": "minecraft:hard_cyan_stained_glass_pane",
-        "id": -666
-    },
-    {
-        "name": "minecraft:hard_glass",
-        "id": 253
-    },
-    {
-        "name": "minecraft:hard_glass_pane",
-        "id": 190
-    },
-    {
-        "name": "minecraft:hard_gray_stained_glass",
-        "id": -694
-    },
-    {
-        "name": "minecraft:hard_gray_stained_glass_pane",
-        "id": -664
-    },
-    {
-        "name": "minecraft:hard_green_stained_glass",
-        "id": -700
-    },
-    {
-        "name": "minecraft:hard_green_stained_glass_pane",
-        "id": -670
-    },
-    {
-        "name": "minecraft:hard_light_blue_stained_glass",
-        "id": -690
-    },
-    {
-        "name": "minecraft:hard_light_blue_stained_glass_pane",
-        "id": -660
-    },
-    {
-        "name": "minecraft:hard_light_gray_stained_glass",
-        "id": -695
-    },
-    {
-        "name": "minecraft:hard_light_gray_stained_glass_pane",
-        "id": -665
-    },
-    {
-        "name": "minecraft:hard_lime_stained_glass",
-        "id": -692
-    },
-    {
-        "name": "minecraft:hard_lime_stained_glass_pane",
-        "id": -662
-    },
-    {
-        "name": "minecraft:hard_magenta_stained_glass",
-        "id": -689
-    },
-    {
-        "name": "minecraft:hard_magenta_stained_glass_pane",
-        "id": -659
-    },
-    {
-        "name": "minecraft:hard_orange_stained_glass",
-        "id": -688
-    },
-    {
-        "name": "minecraft:hard_orange_stained_glass_pane",
-        "id": -658
-    },
-    {
-        "name": "minecraft:hard_pink_stained_glass",
-        "id": -693
-    },
-    {
-        "name": "minecraft:hard_pink_stained_glass_pane",
-        "id": -663
-    },
-    {
-        "name": "minecraft:hard_purple_stained_glass",
-        "id": -697
-    },
-    {
-        "name": "minecraft:hard_purple_stained_glass_pane",
-        "id": -667
-    },
-    {
-        "name": "minecraft:hard_red_stained_glass",
-        "id": -701
-    },
-    {
-        "name": "minecraft:hard_red_stained_glass_pane",
-        "id": -671
-    },
-    {
-        "name": "minecraft:hard_stained_glass",
-        "id": 762
-    },
-    {
-        "name": "minecraft:hard_stained_glass_pane",
-        "id": 763
-    },
-    {
-        "name": "minecraft:hard_white_stained_glass",
-        "id": 254
-    },
-    {
-        "name": "minecraft:hard_white_stained_glass_pane",
-        "id": 191
-    },
-    {
-        "name": "minecraft:hard_yellow_stained_glass",
-        "id": -691
-    },
-    {
-        "name": "minecraft:hard_yellow_stained_glass_pane",
-        "id": -661
-    },
-    {
-        "name": "minecraft:hardened_clay",
-        "id": 172
-    },
-    {
-        "name": "minecraft:hay_block",
-        "id": 170
-    },
-    {
-        "name": "minecraft:heart_of_the_sea",
-        "id": 588
-    },
-    {
-        "name": "minecraft:heart_pottery_sherd",
-        "id": 687
-    },
-    {
-        "name": "minecraft:heartbreak_pottery_sherd",
-        "id": 688
-    },
-    {
-        "name": "minecraft:heavy_core",
-        "id": -316
-    },
-    {
-        "name": "minecraft:heavy_weighted_pressure_plate",
-        "id": 148
-    },
-    {
-        "name": "minecraft:hoglin_spawn_egg",
-        "id": 507
-    },
-    {
-        "name": "minecraft:honey_block",
-        "id": -220
-    },
-    {
-        "name": "minecraft:honey_bottle",
-        "id": 611
-    },
-    {
-        "name": "minecraft:honeycomb",
-        "id": 610
-    },
-    {
-        "name": "minecraft:honeycomb_block",
-        "id": -221
-    },
-    {
-        "name": "minecraft:hopper",
-        "id": 544
-    },
-    {
-        "name": "minecraft:hopper_minecart",
-        "id": 543
-    },
-    {
-        "name": "minecraft:horn_coral",
-        "id": -584
-    },
-    {
-        "name": "minecraft:horn_coral_block",
-        "id": -852
-    },
-    {
-        "name": "minecraft:horn_coral_fan",
-        "id": -843
-    },
-    {
-        "name": "minecraft:horn_coral_wall_fan",
-        "id": -137
-    },
-    {
-        "name": "minecraft:horse_spawn_egg",
-        "id": 468
-    },
-    {
-        "name": "minecraft:host_armor_trim_smithing_template",
-        "id": 716
-    },
-    {
-        "name": "minecraft:howl_pottery_sherd",
-        "id": 689
-    },
-    {
-        "name": "minecraft:husk_spawn_egg",
-        "id": 474
-    },
-    {
-        "name": "minecraft:ice",
-        "id": 79
-    },
-    {
-        "name": "minecraft:ice_bomb",
-        "id": 615
-    },
-    {
-        "name": "minecraft:infested_chiseled_stone_bricks",
-        "id": -862
-    },
-    {
-        "name": "minecraft:infested_cobblestone",
-        "id": -858
-    },
-    {
-        "name": "minecraft:infested_cracked_stone_bricks",
-        "id": -861
-    },
-    {
-        "name": "minecraft:infested_deepslate",
-        "id": -454
-    },
-    {
-        "name": "minecraft:infested_mossy_stone_bricks",
-        "id": -860
-    },
-    {
-        "name": "minecraft:infested_stone",
-        "id": 97
-    },
-    {
-        "name": "minecraft:infested_stone_bricks",
-        "id": -859
-    },
-    {
-        "name": "minecraft:info_update",
-        "id": 248
-    },
-    {
-        "name": "minecraft:info_update2",
-        "id": 249
-    },
-    {
-        "name": "minecraft:ink_sac",
-        "id": 422
-    },
-    {
-        "name": "minecraft:invisible_bedrock",
-        "id": 95
-    },
-    {
-        "name": "minecraft:iron_axe",
-        "id": 305
-    },
-    {
-        "name": "minecraft:iron_bars",
-        "id": 101
-    },
-    {
-        "name": "minecraft:iron_block",
-        "id": 42
-    },
-    {
-        "name": "minecraft:iron_boots",
-        "id": 354
-    },
-    {
-        "name": "minecraft:iron_chestplate",
-        "id": 352
-    },
-    {
-        "name": "minecraft:iron_door",
-        "id": 380
-    },
-    {
-        "name": "minecraft:iron_golem_spawn_egg",
-        "id": 516
-    },
-    {
-        "name": "minecraft:iron_helmet",
-        "id": 351
-    },
-    {
-        "name": "minecraft:iron_hoe",
-        "id": 339
-    },
-    {
-        "name": "minecraft:iron_horse_armor",
-        "id": 548
-    },
-    {
-        "name": "minecraft:iron_ingot",
-        "id": 312
-    },
-    {
-        "name": "minecraft:iron_leggings",
-        "id": 353
-    },
-    {
-        "name": "minecraft:iron_nugget",
-        "id": 586
-    },
-    {
-        "name": "minecraft:iron_ore",
-        "id": 15
-    },
-    {
-        "name": "minecraft:iron_pickaxe",
-        "id": 304
-    },
-    {
-        "name": "minecraft:iron_shovel",
-        "id": 303
-    },
-    {
-        "name": "minecraft:iron_sword",
-        "id": 314
-    },
-    {
-        "name": "minecraft:iron_trapdoor",
-        "id": 167
-    },
-    {
-        "name": "minecraft:item.acacia_door",
-        "id": 196
-    },
-    {
-        "name": "minecraft:item.bed",
-        "id": 26
-    },
-    {
-        "name": "minecraft:item.beetroot",
-        "id": 244
-    },
-    {
-        "name": "minecraft:item.birch_door",
-        "id": 194
-    },
-    {
-        "name": "minecraft:item.brewing_stand",
-        "id": 117
-    },
-    {
-        "name": "minecraft:item.cake",
-        "id": 92
-    },
-    {
-        "name": "minecraft:item.camera",
-        "id": 242
-    },
-    {
-        "name": "minecraft:item.campfire",
-        "id": -209
-    },
-    {
-        "name": "minecraft:item.cauldron",
-        "id": 118
-    },
-    {
-        "name": "minecraft:item.chain",
-        "id": -286
-    },
-    {
-        "name": "minecraft:item.crimson_door",
-        "id": -244
-    },
-    {
-        "name": "minecraft:item.dark_oak_door",
-        "id": 197
-    },
-    {
-        "name": "minecraft:item.flower_pot",
-        "id": 140
-    },
-    {
-        "name": "minecraft:item.frame",
-        "id": 199
-    },
-    {
-        "name": "minecraft:item.glow_frame",
-        "id": -339
-    },
-    {
-        "name": "minecraft:item.hopper",
-        "id": 154
-    },
-    {
-        "name": "minecraft:item.iron_door",
-        "id": 71
-    },
-    {
-        "name": "minecraft:item.jungle_door",
-        "id": 195
-    },
-    {
-        "name": "minecraft:item.kelp",
-        "id": -138
-    },
-    {
-        "name": "minecraft:item.mangrove_door",
-        "id": -493
-    },
-    {
-        "name": "minecraft:item.nether_sprouts",
-        "id": -238
-    },
-    {
-        "name": "minecraft:item.nether_wart",
-        "id": 115
-    },
-    {
-        "name": "minecraft:item.reeds",
-        "id": 83
-    },
-    {
-        "name": "minecraft:item.skull",
-        "id": 144
-    },
-    {
-        "name": "minecraft:item.soul_campfire",
-        "id": -290
-    },
-    {
-        "name": "minecraft:item.spruce_door",
-        "id": 193
-    },
-    {
-        "name": "minecraft:item.warped_door",
-        "id": -245
-    },
-    {
-        "name": "minecraft:item.wheat",
-        "id": 59
-    },
-    {
-        "name": "minecraft:item.wooden_door",
-        "id": 64
-    },
-    {
-        "name": "minecraft:jigsaw",
-        "id": -211
-    },
-    {
-        "name": "minecraft:jukebox",
-        "id": 84
-    },
-    {
-        "name": "minecraft:jungle_boat",
-        "id": 386
-    },
-    {
-        "name": "minecraft:jungle_button",
-        "id": -143
-    },
-    {
-        "name": "minecraft:jungle_chest_boat",
-        "id": 660
-    },
-    {
-        "name": "minecraft:jungle_door",
-        "id": 572
-    },
-    {
-        "name": "minecraft:jungle_double_slab",
-        "id": -811
-    },
-    {
-        "name": "minecraft:jungle_fence",
-        "id": -578
-    },
-    {
-        "name": "minecraft:jungle_fence_gate",
-        "id": 185
-    },
-    {
-        "name": "minecraft:jungle_hanging_sign",
-        "id": -503
-    },
-    {
-        "name": "minecraft:jungle_leaves",
-        "id": -802
-    },
-    {
-        "name": "minecraft:jungle_log",
-        "id": -571
-    },
-    {
-        "name": "minecraft:jungle_planks",
-        "id": -741
-    },
-    {
-        "name": "minecraft:jungle_pressure_plate",
-        "id": -153
-    },
-    {
-        "name": "minecraft:jungle_sapling",
-        "id": -827
-    },
-    {
-        "name": "minecraft:jungle_sign",
-        "id": 595
-    },
-    {
-        "name": "minecraft:jungle_slab",
-        "id": -806
-    },
-    {
-        "name": "minecraft:jungle_stairs",
-        "id": 136
-    },
-    {
-        "name": "minecraft:jungle_standing_sign",
-        "id": -188
-    },
-    {
-        "name": "minecraft:jungle_trapdoor",
-        "id": -148
-    },
-    {
-        "name": "minecraft:jungle_wall_sign",
-        "id": -189
-    },
-    {
-        "name": "minecraft:jungle_wood",
-        "id": -816
-    },
-    {
-        "name": "minecraft:kelp",
-        "id": 391
-    },
-    {
-        "name": "minecraft:ladder",
-        "id": 65
-    },
-    {
-        "name": "minecraft:lantern",
-        "id": -208
-    },
-    {
-        "name": "minecraft:lapis_block",
-        "id": 22
-    },
-    {
-        "name": "minecraft:lapis_lazuli",
-        "id": 423
-    },
-    {
-        "name": "minecraft:lapis_ore",
-        "id": 21
-    },
-    {
-        "name": "minecraft:large_amethyst_bud",
-        "id": -330
-    },
-    {
-        "name": "minecraft:large_fern",
-        "id": -865
-    },
-    {
-        "name": "minecraft:lava",
-        "id": 11
-    },
-    {
-        "name": "minecraft:lava_bucket",
-        "id": 371
-    },
-    {
-        "name": "minecraft:lead",
-        "id": 564
-    },
-    {
-        "name": "minecraft:leather",
-        "id": 390
-    },
-    {
-        "name": "minecraft:leather_boots",
-        "id": 346
-    },
-    {
-        "name": "minecraft:leather_chestplate",
-        "id": 344
-    },
-    {
-        "name": "minecraft:leather_helmet",
-        "id": 343
-    },
-    {
-        "name": "minecraft:leather_horse_armor",
-        "id": 547
-    },
-    {
-        "name": "minecraft:leather_leggings",
-        "id": 345
-    },
-    {
-        "name": "minecraft:leaves",
-        "id": 743
-    },
-    {
-        "name": "minecraft:leaves2",
-        "id": 744
-    },
-    {
-        "name": "minecraft:lectern",
-        "id": -194
-    },
-    {
-        "name": "minecraft:lever",
-        "id": 69
-    },
-    {
-        "name": "minecraft:light_block",
-        "id": 764
-    },
-    {
-        "name": "minecraft:light_block_0",
-        "id": -215
-    },
-    {
-        "name": "minecraft:light_block_1",
-        "id": -929
-    },
-    {
-        "name": "minecraft:light_block_10",
-        "id": -938
-    },
-    {
-        "name": "minecraft:light_block_11",
-        "id": -939
-    },
-    {
-        "name": "minecraft:light_block_12",
-        "id": -940
-    },
-    {
-        "name": "minecraft:light_block_13",
-        "id": -941
-    },
-    {
-        "name": "minecraft:light_block_14",
-        "id": -942
-    },
-    {
-        "name": "minecraft:light_block_15",
-        "id": -943
-    },
-    {
-        "name": "minecraft:light_block_2",
-        "id": -930
-    },
-    {
-        "name": "minecraft:light_block_3",
-        "id": -931
-    },
-    {
-        "name": "minecraft:light_block_4",
-        "id": -932
-    },
-    {
-        "name": "minecraft:light_block_5",
-        "id": -933
-    },
-    {
-        "name": "minecraft:light_block_6",
-        "id": -934
-    },
-    {
-        "name": "minecraft:light_block_7",
-        "id": -935
-    },
-    {
-        "name": "minecraft:light_block_8",
-        "id": -936
-    },
-    {
-        "name": "minecraft:light_block_9",
-        "id": -937
-    },
-    {
-        "name": "minecraft:light_blue_candle",
-        "id": -416
-    },
-    {
-        "name": "minecraft:light_blue_candle_cake",
-        "id": -433
-    },
-    {
-        "name": "minecraft:light_blue_carpet",
-        "id": -599
-    },
-    {
-        "name": "minecraft:light_blue_concrete",
-        "id": -630
-    },
-    {
-        "name": "minecraft:light_blue_concrete_powder",
-        "id": -711
-    },
-    {
-        "name": "minecraft:light_blue_dye",
-        "id": 416
-    },
-    {
-        "name": "minecraft:light_blue_glazed_terracotta",
-        "id": 223
-    },
-    {
-        "name": "minecraft:light_blue_shulker_box",
-        "id": -615
-    },
-    {
-        "name": "minecraft:light_blue_stained_glass",
-        "id": -675
-    },
-    {
-        "name": "minecraft:light_blue_stained_glass_pane",
-        "id": -645
-    },
-    {
-        "name": "minecraft:light_blue_terracotta",
-        "id": -726
-    },
-    {
-        "name": "minecraft:light_blue_wool",
-        "id": -562
-    },
-    {
-        "name": "minecraft:light_gray_candle",
-        "id": -421
-    },
-    {
-        "name": "minecraft:light_gray_candle_cake",
-        "id": -438
-    },
-    {
-        "name": "minecraft:light_gray_carpet",
-        "id": -604
-    },
-    {
-        "name": "minecraft:light_gray_concrete",
-        "id": -635
-    },
-    {
-        "name": "minecraft:light_gray_concrete_powder",
-        "id": -716
-    },
-    {
-        "name": "minecraft:light_gray_dye",
-        "id": 411
-    },
-    {
-        "name": "minecraft:light_gray_shulker_box",
-        "id": -620
-    },
-    {
-        "name": "minecraft:light_gray_stained_glass",
-        "id": -680
-    },
-    {
-        "name": "minecraft:light_gray_stained_glass_pane",
-        "id": -650
-    },
-    {
-        "name": "minecraft:light_gray_terracotta",
-        "id": -731
-    },
-    {
-        "name": "minecraft:light_gray_wool",
-        "id": -552
-    },
-    {
-        "name": "minecraft:light_weighted_pressure_plate",
-        "id": 147
-    },
-    {
-        "name": "minecraft:lightning_rod",
-        "id": -312
-    },
-    {
-        "name": "minecraft:lilac",
-        "id": -863
-    },
-    {
-        "name": "minecraft:lily_of_the_valley",
-        "id": -839
-    },
-    {
-        "name": "minecraft:lime_candle",
-        "id": -418
-    },
-    {
-        "name": "minecraft:lime_candle_cake",
-        "id": -435
-    },
-    {
-        "name": "minecraft:lime_carpet",
-        "id": -601
-    },
-    {
-        "name": "minecraft:lime_concrete",
-        "id": -632
-    },
-    {
-        "name": "minecraft:lime_concrete_powder",
-        "id": -713
-    },
-    {
-        "name": "minecraft:lime_dye",
-        "id": 414
-    },
-    {
-        "name": "minecraft:lime_glazed_terracotta",
-        "id": 225
-    },
-    {
-        "name": "minecraft:lime_shulker_box",
-        "id": -617
-    },
-    {
-        "name": "minecraft:lime_stained_glass",
-        "id": -677
-    },
-    {
-        "name": "minecraft:lime_stained_glass_pane",
-        "id": -647
-    },
-    {
-        "name": "minecraft:lime_terracotta",
-        "id": -728
-    },
-    {
-        "name": "minecraft:lime_wool",
-        "id": -559
-    },
-    {
-        "name": "minecraft:lingering_potion",
-        "id": 579
-    },
-    {
-        "name": "minecraft:lit_blast_furnace",
-        "id": -214
-    },
-    {
-        "name": "minecraft:lit_deepslate_redstone_ore",
-        "id": -404
-    },
-    {
-        "name": "minecraft:lit_furnace",
-        "id": 62
-    },
-    {
-        "name": "minecraft:lit_pumpkin",
-        "id": 91
-    },
-    {
-        "name": "minecraft:lit_redstone_lamp",
-        "id": 124
-    },
-    {
-        "name": "minecraft:lit_redstone_ore",
-        "id": 74
-    },
-    {
-        "name": "minecraft:lit_smoker",
-        "id": -199
-    },
-    {
-        "name": "minecraft:llama_spawn_egg",
-        "id": 484
-    },
-    {
-        "name": "minecraft:lodestone",
-        "id": -222
-    },
-    {
-        "name": "minecraft:lodestone_compass",
-        "id": 622
-    },
-    {
-        "name": "minecraft:log",
-        "id": 728
-    },
-    {
-        "name": "minecraft:log2",
-        "id": 751
-    },
-    {
-        "name": "minecraft:loom",
-        "id": -204
-    },
-    {
-        "name": "minecraft:mace",
-        "id": 327
-    },
-    {
-        "name": "minecraft:magenta_candle",
-        "id": -415
-    },
-    {
-        "name": "minecraft:magenta_candle_cake",
-        "id": -432
-    },
-    {
-        "name": "minecraft:magenta_carpet",
-        "id": -598
-    },
-    {
-        "name": "minecraft:magenta_concrete",
-        "id": -629
-    },
-    {
-        "name": "minecraft:magenta_concrete_powder",
-        "id": -710
-    },
-    {
-        "name": "minecraft:magenta_dye",
-        "id": 417
-    },
-    {
-        "name": "minecraft:magenta_glazed_terracotta",
-        "id": 222
-    },
-    {
-        "name": "minecraft:magenta_shulker_box",
-        "id": -614
-    },
-    {
-        "name": "minecraft:magenta_stained_glass",
-        "id": -674
-    },
-    {
-        "name": "minecraft:magenta_stained_glass_pane",
-        "id": -644
-    },
-    {
-        "name": "minecraft:magenta_terracotta",
-        "id": -725
-    },
-    {
-        "name": "minecraft:magenta_wool",
-        "id": -565
-    },
-    {
-        "name": "minecraft:magma",
-        "id": 213
-    },
-    {
-        "name": "minecraft:magma_cream",
-        "id": 440
-    },
-    {
-        "name": "minecraft:magma_cube_spawn_egg",
-        "id": 465
-    },
-    {
-        "name": "minecraft:mangrove_boat",
-        "id": 655
-    },
-    {
-        "name": "minecraft:mangrove_button",
-        "id": -487
-    },
-    {
-        "name": "minecraft:mangrove_chest_boat",
-        "id": 664
-    },
-    {
-        "name": "minecraft:mangrove_door",
-        "id": 653
-    },
-    {
-        "name": "minecraft:mangrove_double_slab",
-        "id": -499
-    },
-    {
-        "name": "minecraft:mangrove_fence",
-        "id": -491
-    },
-    {
-        "name": "minecraft:mangrove_fence_gate",
-        "id": -492
-    },
-    {
-        "name": "minecraft:mangrove_hanging_sign",
-        "id": -508
-    },
-    {
-        "name": "minecraft:mangrove_leaves",
-        "id": -472
-    },
-    {
-        "name": "minecraft:mangrove_log",
-        "id": -484
-    },
-    {
-        "name": "minecraft:mangrove_planks",
-        "id": -486
-    },
-    {
-        "name": "minecraft:mangrove_pressure_plate",
-        "id": -490
-    },
-    {
-        "name": "minecraft:mangrove_propagule",
-        "id": -474
-    },
-    {
-        "name": "minecraft:mangrove_roots",
-        "id": -482
-    },
-    {
-        "name": "minecraft:mangrove_sign",
-        "id": 654
-    },
-    {
-        "name": "minecraft:mangrove_slab",
-        "id": -489
-    },
-    {
-        "name": "minecraft:mangrove_stairs",
-        "id": -488
-    },
-    {
-        "name": "minecraft:mangrove_standing_sign",
-        "id": -494
-    },
-    {
-        "name": "minecraft:mangrove_trapdoor",
-        "id": -496
-    },
-    {
-        "name": "minecraft:mangrove_wall_sign",
-        "id": -495
-    },
-    {
-        "name": "minecraft:mangrove_wood",
-        "id": -497
-    },
-    {
-        "name": "minecraft:medicine",
-        "id": 619
-    },
-    {
-        "name": "minecraft:medium_amethyst_bud",
-        "id": -331
-    },
-    {
-        "name": "minecraft:melon_block",
-        "id": 103
-    },
-    {
-        "name": "minecraft:melon_seeds",
-        "id": 298
-    },
-    {
-        "name": "minecraft:melon_slice",
-        "id": 277
-    },
-    {
-        "name": "minecraft:melon_stem",
-        "id": 105
-    },
-    {
-        "name": "minecraft:milk_bucket",
-        "id": 369
-    },
-    {
-        "name": "minecraft:minecart",
-        "id": 378
-    },
-    {
-        "name": "minecraft:miner_pottery_sherd",
-        "id": 690
-    },
-    {
-        "name": "minecraft:mob_spawner",
-        "id": 52
-    },
-    {
-        "name": "minecraft:mojang_banner_pattern",
-        "id": 601
-    },
-    {
-        "name": "minecraft:monster_egg",
-        "id": 752
-    },
-    {
-        "name": "minecraft:mooshroom_spawn_egg",
-        "id": 450
-    },
-    {
-        "name": "minecraft:moss_block",
-        "id": -320
-    },
-    {
-        "name": "minecraft:moss_carpet",
-        "id": -335
-    },
-    {
-        "name": "minecraft:mossy_cobblestone",
-        "id": 48
-    },
-    {
-        "name": "minecraft:mossy_cobblestone_double_slab",
-        "id": -915
-    },
-    {
-        "name": "minecraft:mossy_cobblestone_slab",
-        "id": -888
-    },
-    {
-        "name": "minecraft:mossy_cobblestone_stairs",
-        "id": -179
-    },
-    {
-        "name": "minecraft:mossy_stone_brick_double_slab",
-        "id": -168
-    },
-    {
-        "name": "minecraft:mossy_stone_brick_slab",
-        "id": -166
-    },
-    {
-        "name": "minecraft:mossy_stone_brick_stairs",
-        "id": -175
-    },
-    {
-        "name": "minecraft:mossy_stone_bricks",
-        "id": -868
-    },
-    {
-        "name": "minecraft:mourner_pottery_sherd",
-        "id": 691
-    },
-    {
-        "name": "minecraft:moving_block",
-        "id": 250
-    },
-    {
-        "name": "minecraft:mud",
-        "id": -473
-    },
-    {
-        "name": "minecraft:mud_brick_double_slab",
-        "id": -479
-    },
-    {
-        "name": "minecraft:mud_brick_slab",
-        "id": -478
-    },
-    {
-        "name": "minecraft:mud_brick_stairs",
-        "id": -480
-    },
-    {
-        "name": "minecraft:mud_brick_wall",
-        "id": -481
-    },
-    {
-        "name": "minecraft:mud_bricks",
-        "id": -475
-    },
-    {
-        "name": "minecraft:muddy_mangrove_roots",
-        "id": -483
-    },
-    {
-        "name": "minecraft:mule_spawn_egg",
-        "id": 477
-    },
-    {
-        "name": "minecraft:mushroom_stew",
-        "id": 265
-    },
-    {
-        "name": "minecraft:music_disc_11",
-        "id": 561
-    },
-    {
-        "name": "minecraft:music_disc_13",
-        "id": 551
-    },
-    {
-        "name": "minecraft:music_disc_5",
-        "id": 656
-    },
-    {
-        "name": "minecraft:music_disc_blocks",
-        "id": 553
-    },
-    {
-        "name": "minecraft:music_disc_cat",
-        "id": 552
-    },
-    {
-        "name": "minecraft:music_disc_chirp",
-        "id": 554
-    },
-    {
-        "name": "minecraft:music_disc_creator",
-        "id": 759
-    },
-    {
-        "name": "minecraft:music_disc_creator_music_box",
-        "id": 760
-    },
-    {
-        "name": "minecraft:music_disc_far",
-        "id": 555
-    },
-    {
-        "name": "minecraft:music_disc_mall",
-        "id": 556
-    },
-    {
-        "name": "minecraft:music_disc_mellohi",
-        "id": 557
-    },
-    {
-        "name": "minecraft:music_disc_otherside",
-        "id": 646
-    },
-    {
-        "name": "minecraft:music_disc_pigstep",
-        "id": 640
-    },
-    {
-        "name": "minecraft:music_disc_precipice",
-        "id": 761
-    },
-    {
-        "name": "minecraft:music_disc_relic",
-        "id": 719
-    },
-    {
-        "name": "minecraft:music_disc_stal",
-        "id": 558
-    },
-    {
-        "name": "minecraft:music_disc_strad",
-        "id": 559
-    },
-    {
-        "name": "minecraft:music_disc_wait",
-        "id": 562
-    },
-    {
-        "name": "minecraft:music_disc_ward",
-        "id": 560
-    },
-    {
-        "name": "minecraft:mutton",
-        "id": 567
-    },
-    {
-        "name": "minecraft:mycelium",
-        "id": 110
-    },
-    {
-        "name": "minecraft:name_tag",
-        "id": 565
-    },
-    {
-        "name": "minecraft:nautilus_shell",
-        "id": 587
-    },
-    {
-        "name": "minecraft:nether_brick",
-        "id": 112
-    },
-    {
-        "name": "minecraft:nether_brick_double_slab",
-        "id": -883
-    },
-    {
-        "name": "minecraft:nether_brick_fence",
-        "id": 113
-    },
-    {
-        "name": "minecraft:nether_brick_slab",
-        "id": -877
-    },
-    {
-        "name": "minecraft:nether_brick_stairs",
-        "id": 114
-    },
-    {
-        "name": "minecraft:nether_gold_ore",
-        "id": -288
-    },
-    {
-        "name": "minecraft:nether_sprouts",
-        "id": 641
-    },
-    {
-        "name": "minecraft:nether_star",
-        "id": 535
-    },
-    {
-        "name": "minecraft:nether_wart",
-        "id": 299
-    },
-    {
-        "name": "minecraft:nether_wart_block",
-        "id": 214
-    },
-    {
-        "name": "minecraft:netherbrick",
-        "id": 540
-    },
-    {
-        "name": "minecraft:netherite_axe",
-        "id": 626
-    },
-    {
-        "name": "minecraft:netherite_block",
-        "id": -270
-    },
-    {
-        "name": "minecraft:netherite_boots",
-        "id": 632
-    },
-    {
-        "name": "minecraft:netherite_chestplate",
-        "id": 630
-    },
-    {
-        "name": "minecraft:netherite_helmet",
-        "id": 629
-    },
-    {
-        "name": "minecraft:netherite_hoe",
-        "id": 627
-    },
-    {
-        "name": "minecraft:netherite_ingot",
-        "id": 628
-    },
-    {
-        "name": "minecraft:netherite_leggings",
-        "id": 631
-    },
-    {
-        "name": "minecraft:netherite_pickaxe",
-        "id": 625
-    },
-    {
-        "name": "minecraft:netherite_scrap",
-        "id": 633
-    },
-    {
-        "name": "minecraft:netherite_shovel",
-        "id": 624
-    },
-    {
-        "name": "minecraft:netherite_sword",
-        "id": 623
-    },
-    {
-        "name": "minecraft:netherite_upgrade_smithing_template",
-        "id": 700
-    },
-    {
-        "name": "minecraft:netherrack",
-        "id": 87
-    },
-    {
-        "name": "minecraft:netherreactor",
-        "id": 247
-    },
-    {
-        "name": "minecraft:normal_stone_double_slab",
-        "id": -926
-    },
-    {
-        "name": "minecraft:normal_stone_slab",
-        "id": -899
-    },
-    {
-        "name": "minecraft:normal_stone_stairs",
-        "id": -180
-    },
-    {
-        "name": "minecraft:noteblock",
-        "id": 25
-    },
-    {
-        "name": "minecraft:npc_spawn_egg",
-        "id": 481
-    },
-    {
-        "name": "minecraft:oak_boat",
-        "id": 384
-    },
-    {
-        "name": "minecraft:oak_chest_boat",
-        "id": 658
-    },
-    {
-        "name": "minecraft:oak_double_slab",
-        "id": 157
-    },
-    {
-        "name": "minecraft:oak_fence",
-        "id": 85
-    },
-    {
-        "name": "minecraft:oak_hanging_sign",
-        "id": -500
-    },
-    {
-        "name": "minecraft:oak_leaves",
-        "id": 18
-    },
-    {
-        "name": "minecraft:oak_log",
-        "id": 17
-    },
-    {
-        "name": "minecraft:oak_planks",
-        "id": 5
-    },
-    {
-        "name": "minecraft:oak_sapling",
-        "id": 6
-    },
-    {
-        "name": "minecraft:oak_sign",
-        "id": 366
-    },
-    {
-        "name": "minecraft:oak_slab",
-        "id": 158
-    },
-    {
-        "name": "minecraft:oak_stairs",
-        "id": 53
-    },
-    {
-        "name": "minecraft:oak_wood",
-        "id": -212
-    },
-    {
-        "name": "minecraft:observer",
-        "id": 251
-    },
-    {
-        "name": "minecraft:obsidian",
-        "id": 49
-    },
-    {
-        "name": "minecraft:ocelot_spawn_egg",
-        "id": 461
-    },
-    {
-        "name": "minecraft:ochre_froglight",
-        "id": -471
-    },
-    {
-        "name": "minecraft:ominous_bottle",
-        "id": 612
-    },
-    {
-        "name": "minecraft:ominous_trial_key",
-        "id": 258
-    },
-    {
-        "name": "minecraft:orange_candle",
-        "id": -414
-    },
-    {
-        "name": "minecraft:orange_candle_cake",
-        "id": -431
-    },
-    {
-        "name": "minecraft:orange_carpet",
-        "id": -597
-    },
-    {
-        "name": "minecraft:orange_concrete",
-        "id": -628
-    },
-    {
-        "name": "minecraft:orange_concrete_powder",
-        "id": -709
-    },
-    {
-        "name": "minecraft:orange_dye",
-        "id": 418
-    },
-    {
-        "name": "minecraft:orange_glazed_terracotta",
-        "id": 221
-    },
-    {
-        "name": "minecraft:orange_shulker_box",
-        "id": -613
-    },
-    {
-        "name": "minecraft:orange_stained_glass",
-        "id": -673
-    },
-    {
-        "name": "minecraft:orange_stained_glass_pane",
-        "id": -643
-    },
-    {
-        "name": "minecraft:orange_terracotta",
-        "id": -724
-    },
-    {
-        "name": "minecraft:orange_tulip",
-        "id": -834
-    },
-    {
-        "name": "minecraft:orange_wool",
-        "id": -557
-    },
-    {
-        "name": "minecraft:oxeye_daisy",
-        "id": -837
-    },
-    {
-        "name": "minecraft:oxidized_chiseled_copper",
-        "id": -763
-    },
-    {
-        "name": "minecraft:oxidized_copper",
-        "id": -343
-    },
-    {
-        "name": "minecraft:oxidized_copper_bulb",
-        "id": -779
-    },
-    {
-        "name": "minecraft:oxidized_copper_door",
-        "id": -787
-    },
-    {
-        "name": "minecraft:oxidized_copper_grate",
-        "id": -771
-    },
-    {
-        "name": "minecraft:oxidized_copper_trapdoor",
-        "id": -795
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper",
-        "id": -350
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper_slab",
-        "id": -364
-    },
-    {
-        "name": "minecraft:oxidized_cut_copper_stairs",
-        "id": -357
-    },
-    {
-        "name": "minecraft:oxidized_double_cut_copper_slab",
-        "id": -371
-    },
-    {
-        "name": "minecraft:packed_ice",
-        "id": 174
-    },
-    {
-        "name": "minecraft:packed_mud",
-        "id": -477
-    },
-    {
-        "name": "minecraft:painting",
-        "id": 365
-    },
-    {
-        "name": "minecraft:panda_spawn_egg",
-        "id": 500
-    },
-    {
-        "name": "minecraft:paper",
-        "id": 395
-    },
-    {
-        "name": "minecraft:parrot_spawn_egg",
-        "id": 489
-    },
-    {
-        "name": "minecraft:pearlescent_froglight",
-        "id": -469
-    },
-    {
-        "name": "minecraft:peony",
-        "id": -867
-    },
-    {
-        "name": "minecraft:petrified_oak_double_slab",
-        "id": -903
-    },
-    {
-        "name": "minecraft:petrified_oak_slab",
-        "id": -902
-    },
-    {
-        "name": "minecraft:phantom_membrane",
-        "id": 591
-    },
-    {
-        "name": "minecraft:phantom_spawn_egg",
-        "id": 497
-    },
-    {
-        "name": "minecraft:pig_spawn_egg",
-        "id": 447
-    },
-    {
-        "name": "minecraft:piglin_banner_pattern",
-        "id": 604
-    },
-    {
-        "name": "minecraft:piglin_brute_spawn_egg",
-        "id": 510
-    },
-    {
-        "name": "minecraft:piglin_spawn_egg",
-        "id": 508
-    },
-    {
-        "name": "minecraft:pillager_spawn_egg",
-        "id": 502
-    },
-    {
-        "name": "minecraft:pink_candle",
-        "id": -419
-    },
-    {
-        "name": "minecraft:pink_candle_cake",
-        "id": -436
-    },
-    {
-        "name": "minecraft:pink_carpet",
-        "id": -602
-    },
-    {
-        "name": "minecraft:pink_concrete",
-        "id": -633
-    },
-    {
-        "name": "minecraft:pink_concrete_powder",
-        "id": -714
-    },
-    {
-        "name": "minecraft:pink_dye",
-        "id": 413
-    },
-    {
-        "name": "minecraft:pink_glazed_terracotta",
-        "id": 226
-    },
-    {
-        "name": "minecraft:pink_petals",
-        "id": -549
-    },
-    {
-        "name": "minecraft:pink_shulker_box",
-        "id": -618
-    },
-    {
-        "name": "minecraft:pink_stained_glass",
-        "id": -678
-    },
-    {
-        "name": "minecraft:pink_stained_glass_pane",
-        "id": -648
-    },
-    {
-        "name": "minecraft:pink_terracotta",
-        "id": -729
-    },
-    {
-        "name": "minecraft:pink_tulip",
-        "id": -836
-    },
-    {
-        "name": "minecraft:pink_wool",
-        "id": -566
-    },
-    {
-        "name": "minecraft:piston",
-        "id": 33
-    },
-    {
-        "name": "minecraft:piston_arm_collision",
-        "id": 34
-    },
-    {
-        "name": "minecraft:pitcher_crop",
-        "id": -574
-    },
-    {
-        "name": "minecraft:pitcher_plant",
-        "id": -612
-    },
-    {
-        "name": "minecraft:pitcher_pod",
-        "id": 302
-    },
-    {
-        "name": "minecraft:planks",
-        "id": 748
-    },
-    {
-        "name": "minecraft:plenty_pottery_sherd",
-        "id": 692
-    },
-    {
-        "name": "minecraft:podzol",
-        "id": 243
-    },
-    {
-        "name": "minecraft:pointed_dripstone",
-        "id": -308
-    },
-    {
-        "name": "minecraft:poisonous_potato",
-        "id": 287
-    },
-    {
-        "name": "minecraft:polar_bear_spawn_egg",
-        "id": 483
-    },
-    {
-        "name": "minecraft:polished_andesite",
-        "id": -595
-    },
-    {
-        "name": "minecraft:polished_andesite_double_slab",
-        "id": -919
-    },
-    {
-        "name": "minecraft:polished_andesite_slab",
-        "id": -892
-    },
-    {
-        "name": "minecraft:polished_andesite_stairs",
-        "id": -174
-    },
-    {
-        "name": "minecraft:polished_basalt",
-        "id": -235
-    },
-    {
-        "name": "minecraft:polished_blackstone",
-        "id": -291
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_double_slab",
-        "id": -285
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_slab",
-        "id": -284
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_stairs",
-        "id": -275
-    },
-    {
-        "name": "minecraft:polished_blackstone_brick_wall",
-        "id": -278
-    },
-    {
-        "name": "minecraft:polished_blackstone_bricks",
-        "id": -274
-    },
-    {
-        "name": "minecraft:polished_blackstone_button",
-        "id": -296
-    },
-    {
-        "name": "minecraft:polished_blackstone_double_slab",
-        "id": -294
-    },
-    {
-        "name": "minecraft:polished_blackstone_pressure_plate",
-        "id": -295
-    },
-    {
-        "name": "minecraft:polished_blackstone_slab",
-        "id": -293
-    },
-    {
-        "name": "minecraft:polished_blackstone_stairs",
-        "id": -292
-    },
-    {
-        "name": "minecraft:polished_blackstone_wall",
-        "id": -297
-    },
-    {
-        "name": "minecraft:polished_deepslate",
-        "id": -383
-    },
-    {
-        "name": "minecraft:polished_deepslate_double_slab",
-        "id": -397
-    },
-    {
-        "name": "minecraft:polished_deepslate_slab",
-        "id": -384
-    },
-    {
-        "name": "minecraft:polished_deepslate_stairs",
-        "id": -385
-    },
-    {
-        "name": "minecraft:polished_deepslate_wall",
-        "id": -386
-    },
-    {
-        "name": "minecraft:polished_diorite",
-        "id": -593
-    },
-    {
-        "name": "minecraft:polished_diorite_double_slab",
-        "id": -922
-    },
-    {
-        "name": "minecraft:polished_diorite_slab",
-        "id": -895
-    },
-    {
-        "name": "minecraft:polished_diorite_stairs",
-        "id": -173
-    },
-    {
-        "name": "minecraft:polished_granite",
-        "id": -591
-    },
-    {
-        "name": "minecraft:polished_granite_double_slab",
-        "id": -924
-    },
-    {
-        "name": "minecraft:polished_granite_slab",
-        "id": -897
-    },
-    {
-        "name": "minecraft:polished_granite_stairs",
-        "id": -172
-    },
-    {
-        "name": "minecraft:polished_tuff",
-        "id": -748
-    },
-    {
-        "name": "minecraft:polished_tuff_double_slab",
-        "id": -750
-    },
-    {
-        "name": "minecraft:polished_tuff_slab",
-        "id": -749
-    },
-    {
-        "name": "minecraft:polished_tuff_stairs",
-        "id": -751
-    },
-    {
-        "name": "minecraft:polished_tuff_wall",
-        "id": -752
-    },
-    {
-        "name": "minecraft:popped_chorus_fruit",
-        "id": 576
-    },
-    {
-        "name": "minecraft:poppy",
-        "id": 38
-    },
-    {
-        "name": "minecraft:porkchop",
-        "id": 267
-    },
-    {
-        "name": "minecraft:portal",
-        "id": 90
-    },
-    {
-        "name": "minecraft:potato",
-        "id": 285
-    },
-    {
-        "name": "minecraft:potatoes",
-        "id": 142
-    },
-    {
-        "name": "minecraft:potion",
-        "id": 436
-    },
-    {
-        "name": "minecraft:powder_snow",
-        "id": -306
-    },
-    {
-        "name": "minecraft:powder_snow_bucket",
-        "id": 376
-    },
-    {
-        "name": "minecraft:powered_comparator",
-        "id": 150
-    },
-    {
-        "name": "minecraft:powered_repeater",
-        "id": 94
-    },
-    {
-        "name": "minecraft:prismarine",
-        "id": 168
-    },
-    {
-        "name": "minecraft:prismarine_brick_double_slab",
-        "id": -914
-    },
-    {
-        "name": "minecraft:prismarine_brick_slab",
-        "id": -887
-    },
-    {
-        "name": "minecraft:prismarine_bricks",
-        "id": -948
-    },
-    {
-        "name": "minecraft:prismarine_bricks_stairs",
-        "id": -4
-    },
-    {
-        "name": "minecraft:prismarine_crystals",
-        "id": 566
-    },
-    {
-        "name": "minecraft:prismarine_double_slab",
-        "id": -912
-    },
-    {
-        "name": "minecraft:prismarine_shard",
-        "id": 582
-    },
-    {
-        "name": "minecraft:prismarine_slab",
-        "id": -885
-    },
-    {
-        "name": "minecraft:prismarine_stairs",
-        "id": -2
-    },
-    {
-        "name": "minecraft:prize_pottery_sherd",
-        "id": 693
-    },
-    {
-        "name": "minecraft:pufferfish",
-        "id": 272
-    },
-    {
-        "name": "minecraft:pufferfish_bucket",
-        "id": 375
-    },
-    {
-        "name": "minecraft:pufferfish_spawn_egg",
-        "id": 492
-    },
-    {
-        "name": "minecraft:pumpkin",
-        "id": 86
-    },
-    {
-        "name": "minecraft:pumpkin_pie",
-        "id": 289
-    },
-    {
-        "name": "minecraft:pumpkin_seeds",
-        "id": 297
-    },
-    {
-        "name": "minecraft:pumpkin_stem",
-        "id": 104
-    },
-    {
-        "name": "minecraft:purple_candle",
-        "id": -423
-    },
-    {
-        "name": "minecraft:purple_candle_cake",
-        "id": -440
-    },
-    {
-        "name": "minecraft:purple_carpet",
-        "id": -606
-    },
-    {
-        "name": "minecraft:purple_concrete",
-        "id": -637
-    },
-    {
-        "name": "minecraft:purple_concrete_powder",
-        "id": -718
-    },
-    {
-        "name": "minecraft:purple_dye",
-        "id": 409
-    },
-    {
-        "name": "minecraft:purple_glazed_terracotta",
-        "id": 219
-    },
-    {
-        "name": "minecraft:purple_shulker_box",
-        "id": -622
-    },
-    {
-        "name": "minecraft:purple_stained_glass",
-        "id": -682
-    },
-    {
-        "name": "minecraft:purple_stained_glass_pane",
-        "id": -652
-    },
-    {
-        "name": "minecraft:purple_terracotta",
-        "id": -733
-    },
-    {
-        "name": "minecraft:purple_wool",
-        "id": -564
-    },
-    {
-        "name": "minecraft:purpur_block",
-        "id": 201
-    },
-    {
-        "name": "minecraft:purpur_double_slab",
-        "id": -911
-    },
-    {
-        "name": "minecraft:purpur_slab",
-        "id": -884
-    },
-    {
-        "name": "minecraft:purpur_stairs",
-        "id": 203
-    },
-    {
-        "name": "minecraft:quartz",
-        "id": 541
-    },
-    {
-        "name": "minecraft:quartz_block",
-        "id": 155
-    },
-    {
-        "name": "minecraft:quartz_bricks",
-        "id": -304
-    },
-    {
-        "name": "minecraft:quartz_double_slab",
-        "id": -882
-    },
-    {
-        "name": "minecraft:quartz_ore",
-        "id": 153
-    },
-    {
-        "name": "minecraft:quartz_pillar",
-        "id": -954
-    },
-    {
-        "name": "minecraft:quartz_slab",
-        "id": -876
-    },
-    {
-        "name": "minecraft:quartz_stairs",
-        "id": 156
-    },
-    {
-        "name": "minecraft:rabbit",
-        "id": 293
-    },
-    {
-        "name": "minecraft:rabbit_foot",
-        "id": 545
-    },
-    {
-        "name": "minecraft:rabbit_hide",
-        "id": 546
-    },
-    {
-        "name": "minecraft:rabbit_spawn_egg",
-        "id": 469
-    },
-    {
-        "name": "minecraft:rabbit_stew",
-        "id": 295
-    },
-    {
-        "name": "minecraft:rail",
-        "id": 66
-    },
-    {
-        "name": "minecraft:raiser_armor_trim_smithing_template",
-        "id": 714
-    },
-    {
-        "name": "minecraft:rapid_fertilizer",
-        "id": 617
-    },
-    {
-        "name": "minecraft:ravager_spawn_egg",
-        "id": 504
-    },
-    {
-        "name": "minecraft:raw_copper",
-        "id": 524
-    },
-    {
-        "name": "minecraft:raw_copper_block",
-        "id": -452
-    },
-    {
-        "name": "minecraft:raw_gold",
-        "id": 523
-    },
-    {
-        "name": "minecraft:raw_gold_block",
-        "id": -453
-    },
-    {
-        "name": "minecraft:raw_iron",
-        "id": 522
-    },
-    {
-        "name": "minecraft:raw_iron_block",
-        "id": -451
-    },
-    {
-        "name": "minecraft:recovery_compass",
-        "id": 666
-    },
-    {
-        "name": "minecraft:red_candle",
-        "id": -427
-    },
-    {
-        "name": "minecraft:red_candle_cake",
-        "id": -444
-    },
-    {
-        "name": "minecraft:red_carpet",
-        "id": -610
-    },
-    {
-        "name": "minecraft:red_concrete",
-        "id": -641
-    },
-    {
-        "name": "minecraft:red_concrete_powder",
-        "id": -722
-    },
-    {
-        "name": "minecraft:red_dye",
-        "id": 405
-    },
-    {
-        "name": "minecraft:red_flower",
-        "id": 746
-    },
-    {
-        "name": "minecraft:red_glazed_terracotta",
-        "id": 234
-    },
-    {
-        "name": "minecraft:red_mushroom",
-        "id": 40
-    },
-    {
-        "name": "minecraft:red_mushroom_block",
-        "id": 100
-    },
-    {
-        "name": "minecraft:red_nether_brick",
-        "id": 215
-    },
-    {
-        "name": "minecraft:red_nether_brick_double_slab",
-        "id": -917
-    },
-    {
-        "name": "minecraft:red_nether_brick_slab",
-        "id": -890
-    },
-    {
-        "name": "minecraft:red_nether_brick_stairs",
-        "id": -184
-    },
-    {
-        "name": "minecraft:red_sand",
-        "id": -949
-    },
-    {
-        "name": "minecraft:red_sandstone",
-        "id": 179
-    },
-    {
-        "name": "minecraft:red_sandstone_double_slab",
-        "id": 181
-    },
-    {
-        "name": "minecraft:red_sandstone_slab",
-        "id": 182
-    },
-    {
-        "name": "minecraft:red_sandstone_stairs",
-        "id": 180
-    },
-    {
-        "name": "minecraft:red_shulker_box",
-        "id": -626
-    },
-    {
-        "name": "minecraft:red_stained_glass",
-        "id": -686
-    },
-    {
-        "name": "minecraft:red_stained_glass_pane",
-        "id": -656
-    },
-    {
-        "name": "minecraft:red_terracotta",
-        "id": -737
-    },
-    {
-        "name": "minecraft:red_tulip",
-        "id": -833
-    },
-    {
-        "name": "minecraft:red_wool",
-        "id": -556
-    },
-    {
-        "name": "minecraft:redstone",
-        "id": 381
-    },
-    {
-        "name": "minecraft:redstone_block",
-        "id": 152
-    },
-    {
-        "name": "minecraft:redstone_lamp",
-        "id": 123
-    },
-    {
-        "name": "minecraft:redstone_ore",
-        "id": 73
-    },
-    {
-        "name": "minecraft:redstone_torch",
-        "id": 76
-    },
-    {
-        "name": "minecraft:redstone_wire",
-        "id": 55
-    },
-    {
-        "name": "minecraft:reinforced_deepslate",
-        "id": -466
-    },
-    {
-        "name": "minecraft:repeater",
-        "id": 428
-    },
-    {
-        "name": "minecraft:repeating_command_block",
-        "id": 188
-    },
-    {
-        "name": "minecraft:reserved6",
-        "id": 255
-    },
-    {
-        "name": "minecraft:respawn_anchor",
-        "id": -272
-    },
-    {
-        "name": "minecraft:rib_armor_trim_smithing_template",
-        "id": 710
-    },
-    {
-        "name": "minecraft:rose_bush",
-        "id": -866
-    },
-    {
-        "name": "minecraft:rotten_flesh",
-        "id": 282
-    },
-    {
-        "name": "minecraft:saddle",
-        "id": 379
-    },
-    {
-        "name": "minecraft:salmon",
-        "id": 270
-    },
-    {
-        "name": "minecraft:salmon_bucket",
-        "id": 373
-    },
-    {
-        "name": "minecraft:salmon_spawn_egg",
-        "id": 493
-    },
-    {
-        "name": "minecraft:sand",
-        "id": 12
-    },
-    {
-        "name": "minecraft:sandstone",
-        "id": 24
-    },
-    {
-        "name": "minecraft:sandstone_double_slab",
-        "id": -878
-    },
-    {
-        "name": "minecraft:sandstone_slab",
-        "id": -872
-    },
-    {
-        "name": "minecraft:sandstone_stairs",
-        "id": 128
-    },
-    {
-        "name": "minecraft:sapling",
-        "id": 742
-    },
-    {
-        "name": "minecraft:scaffolding",
-        "id": -165
-    },
-    {
-        "name": "minecraft:scrape_pottery_sherd",
-        "id": 694
-    },
-    {
-        "name": "minecraft:sculk",
-        "id": -458
-    },
-    {
-        "name": "minecraft:sculk_catalyst",
-        "id": -460
-    },
-    {
-        "name": "minecraft:sculk_sensor",
-        "id": -307
-    },
-    {
-        "name": "minecraft:sculk_shrieker",
-        "id": -461
-    },
-    {
-        "name": "minecraft:sculk_vein",
-        "id": -459
-    },
-    {
-        "name": "minecraft:sea_lantern",
-        "id": 169
-    },
-    {
-        "name": "minecraft:sea_pickle",
-        "id": -156
-    },
-    {
-        "name": "minecraft:seagrass",
-        "id": -130
-    },
-    {
-        "name": "minecraft:sentry_armor_trim_smithing_template",
-        "id": 701
-    },
-    {
-        "name": "minecraft:shaper_armor_trim_smithing_template",
-        "id": 715
-    },
-    {
-        "name": "minecraft:sheaf_pottery_sherd",
-        "id": 695
-    },
-    {
-        "name": "minecraft:shears",
-        "id": 430
-    },
-    {
-        "name": "minecraft:sheep_spawn_egg",
-        "id": 448
-    },
-    {
-        "name": "minecraft:shelter_pottery_sherd",
-        "id": 696
-    },
-    {
-        "name": "minecraft:shield",
-        "id": 363
-    },
-    {
-        "name": "minecraft:short_grass",
-        "id": 31
-    },
-    {
-        "name": "minecraft:shroomlight",
-        "id": -230
-    },
-    {
-        "name": "minecraft:shulker_box",
-        "id": 757
-    },
-    {
-        "name": "minecraft:shulker_shell",
-        "id": 583
-    },
-    {
-        "name": "minecraft:shulker_spawn_egg",
-        "id": 480
-    },
-    {
-        "name": "minecraft:silence_armor_trim_smithing_template",
-        "id": 712
-    },
-    {
-        "name": "minecraft:silver_glazed_terracotta",
-        "id": 228
-    },
-    {
-        "name": "minecraft:silverfish_spawn_egg",
-        "id": 453
-    },
-    {
-        "name": "minecraft:skeleton_horse_spawn_egg",
-        "id": 478
-    },
-    {
-        "name": "minecraft:skeleton_spawn_egg",
-        "id": 454
-    },
-    {
-        "name": "minecraft:skull",
-        "id": 533
-    },
-    {
-        "name": "minecraft:skull_banner_pattern",
-        "id": 600
-    },
-    {
-        "name": "minecraft:skull_pottery_sherd",
-        "id": 697
-    },
-    {
-        "name": "minecraft:slime",
-        "id": 165
-    },
-    {
-        "name": "minecraft:slime_ball",
-        "id": 397
-    },
-    {
-        "name": "minecraft:slime_spawn_egg",
-        "id": 455
-    },
-    {
-        "name": "minecraft:small_amethyst_bud",
-        "id": -332
-    },
-    {
-        "name": "minecraft:small_dripleaf_block",
-        "id": -336
-    },
-    {
-        "name": "minecraft:smithing_table",
-        "id": -202
-    },
-    {
-        "name": "minecraft:smoker",
-        "id": -198
-    },
-    {
-        "name": "minecraft:smooth_basalt",
-        "id": -377
-    },
-    {
-        "name": "minecraft:smooth_quartz",
-        "id": -955
-    },
-    {
-        "name": "minecraft:smooth_quartz_double_slab",
-        "id": -925
-    },
-    {
-        "name": "minecraft:smooth_quartz_slab",
-        "id": -898
-    },
-    {
-        "name": "minecraft:smooth_quartz_stairs",
-        "id": -185
-    },
-    {
-        "name": "minecraft:smooth_red_sandstone",
-        "id": -958
-    },
-    {
-        "name": "minecraft:smooth_red_sandstone_double_slab",
-        "id": -918
-    },
-    {
-        "name": "minecraft:smooth_red_sandstone_slab",
-        "id": -891
-    },
-    {
-        "name": "minecraft:smooth_red_sandstone_stairs",
-        "id": -176
-    },
-    {
-        "name": "minecraft:smooth_sandstone",
-        "id": -946
-    },
-    {
-        "name": "minecraft:smooth_sandstone_double_slab",
-        "id": -916
-    },
-    {
-        "name": "minecraft:smooth_sandstone_slab",
-        "id": -889
-    },
-    {
-        "name": "minecraft:smooth_sandstone_stairs",
-        "id": -177
-    },
-    {
-        "name": "minecraft:smooth_stone",
-        "id": -183
-    },
-    {
-        "name": "minecraft:smooth_stone_double_slab",
-        "id": 43
-    },
-    {
-        "name": "minecraft:smooth_stone_slab",
-        "id": 44
-    },
-    {
-        "name": "minecraft:sniffer_egg",
-        "id": -596
-    },
-    {
-        "name": "minecraft:sniffer_spawn_egg",
-        "id": 511
-    },
-    {
-        "name": "minecraft:snort_pottery_sherd",
-        "id": 698
-    },
-    {
-        "name": "minecraft:snout_armor_trim_smithing_template",
-        "id": 709
-    },
-    {
-        "name": "minecraft:snow",
-        "id": 80
-    },
-    {
-        "name": "minecraft:snow_golem_spawn_egg",
-        "id": 517
-    },
-    {
-        "name": "minecraft:snow_layer",
-        "id": 78
-    },
-    {
-        "name": "minecraft:snowball",
-        "id": 382
-    },
-    {
-        "name": "minecraft:soul_campfire",
-        "id": 642
-    },
-    {
-        "name": "minecraft:soul_fire",
-        "id": -237
-    },
-    {
-        "name": "minecraft:soul_lantern",
-        "id": -269
-    },
-    {
-        "name": "minecraft:soul_sand",
-        "id": 88
-    },
-    {
-        "name": "minecraft:soul_soil",
-        "id": -236
-    },
-    {
-        "name": "minecraft:soul_torch",
-        "id": -268
-    },
-    {
-        "name": "minecraft:sparkler",
-        "id": 620
-    },
-    {
-        "name": "minecraft:spawn_egg",
-        "id": 768
-    },
-    {
-        "name": "minecraft:spider_eye",
-        "id": 283
-    },
-    {
-        "name": "minecraft:spider_spawn_egg",
-        "id": 456
-    },
-    {
-        "name": "minecraft:spire_armor_trim_smithing_template",
-        "id": 711
-    },
-    {
-        "name": "minecraft:splash_potion",
-        "id": 578
-    },
-    {
-        "name": "minecraft:sponge",
-        "id": 19
-    },
-    {
-        "name": "minecraft:spore_blossom",
-        "id": -321
-    },
-    {
-        "name": "minecraft:spruce_boat",
-        "id": 387
-    },
-    {
-        "name": "minecraft:spruce_button",
-        "id": -144
-    },
-    {
-        "name": "minecraft:spruce_chest_boat",
-        "id": 661
-    },
-    {
-        "name": "minecraft:spruce_door",
-        "id": 570
-    },
-    {
-        "name": "minecraft:spruce_double_slab",
-        "id": -809
-    },
-    {
-        "name": "minecraft:spruce_fence",
-        "id": -579
-    },
-    {
-        "name": "minecraft:spruce_fence_gate",
-        "id": 183
-    },
-    {
-        "name": "minecraft:spruce_hanging_sign",
-        "id": -501
-    },
-    {
-        "name": "minecraft:spruce_leaves",
-        "id": -800
-    },
-    {
-        "name": "minecraft:spruce_log",
-        "id": -569
-    },
-    {
-        "name": "minecraft:spruce_planks",
-        "id": -739
-    },
-    {
-        "name": "minecraft:spruce_pressure_plate",
-        "id": -154
-    },
-    {
-        "name": "minecraft:spruce_sapling",
-        "id": -825
-    },
-    {
-        "name": "minecraft:spruce_sign",
-        "id": 593
-    },
-    {
-        "name": "minecraft:spruce_slab",
-        "id": -804
-    },
-    {
-        "name": "minecraft:spruce_stairs",
-        "id": 134
-    },
-    {
-        "name": "minecraft:spruce_standing_sign",
-        "id": -181
-    },
-    {
-        "name": "minecraft:spruce_trapdoor",
-        "id": -149
-    },
-    {
-        "name": "minecraft:spruce_wall_sign",
-        "id": -182
-    },
-    {
-        "name": "minecraft:spruce_wood",
-        "id": -814
-    },
-    {
-        "name": "minecraft:spyglass",
-        "id": 645
-    },
-    {
-        "name": "minecraft:squid_spawn_egg",
-        "id": 460
-    },
-    {
-        "name": "minecraft:stained_glass",
-        "id": 755
-    },
-    {
-        "name": "minecraft:stained_glass_pane",
-        "id": 756
-    },
-    {
-        "name": "minecraft:stained_hardened_clay",
-        "id": 720
-    },
-    {
-        "name": "minecraft:standing_banner",
-        "id": 176
-    },
-    {
-        "name": "minecraft:standing_sign",
-        "id": 63
-    },
-    {
-        "name": "minecraft:stick",
-        "id": 328
-    },
-    {
-        "name": "minecraft:sticky_piston",
-        "id": 29
-    },
-    {
-        "name": "minecraft:sticky_piston_arm_collision",
-        "id": -217
-    },
-    {
-        "name": "minecraft:stone",
-        "id": 1
-    },
-    {
-        "name": "minecraft:stone_axe",
-        "id": 322
-    },
-    {
-        "name": "minecraft:stone_block_slab",
-        "id": 732
-    },
-    {
-        "name": "minecraft:stone_block_slab2",
-        "id": 733
-    },
-    {
-        "name": "minecraft:stone_block_slab3",
-        "id": 734
-    },
-    {
-        "name": "minecraft:stone_block_slab4",
-        "id": 735
-    },
-    {
-        "name": "minecraft:stone_brick_double_slab",
-        "id": -881
-    },
-    {
-        "name": "minecraft:stone_brick_slab",
-        "id": -875
-    },
-    {
-        "name": "minecraft:stone_brick_stairs",
-        "id": 109
-    },
-    {
-        "name": "minecraft:stone_bricks",
-        "id": 98
-    },
-    {
-        "name": "minecraft:stone_button",
-        "id": 77
-    },
-    {
-        "name": "minecraft:stone_hoe",
-        "id": 338
-    },
-    {
-        "name": "minecraft:stone_pickaxe",
-        "id": 321
-    },
-    {
-        "name": "minecraft:stone_pressure_plate",
-        "id": 70
-    },
-    {
-        "name": "minecraft:stone_shovel",
-        "id": 320
-    },
-    {
-        "name": "minecraft:stone_stairs",
-        "id": 67
-    },
-    {
-        "name": "minecraft:stone_sword",
-        "id": 319
-    },
-    {
-        "name": "minecraft:stonebrick",
-        "id": 730
-    },
-    {
-        "name": "minecraft:stonecutter",
-        "id": 245
-    },
-    {
-        "name": "minecraft:stonecutter_block",
-        "id": -197
-    },
-    {
-        "name": "minecraft:stray_spawn_egg",
-        "id": 472
-    },
-    {
-        "name": "minecraft:strider_spawn_egg",
-        "id": 506
-    },
-    {
-        "name": "minecraft:string",
-        "id": 334
-    },
-    {
-        "name": "minecraft:stripped_acacia_log",
-        "id": -8
-    },
-    {
-        "name": "minecraft:stripped_acacia_wood",
-        "id": -823
-    },
-    {
-        "name": "minecraft:stripped_bamboo_block",
-        "id": -528
-    },
-    {
-        "name": "minecraft:stripped_birch_log",
-        "id": -6
-    },
-    {
-        "name": "minecraft:stripped_birch_wood",
-        "id": -821
-    },
-    {
-        "name": "minecraft:stripped_cherry_log",
-        "id": -535
-    },
-    {
-        "name": "minecraft:stripped_cherry_wood",
-        "id": -545
-    },
-    {
-        "name": "minecraft:stripped_crimson_hyphae",
-        "id": -300
-    },
-    {
-        "name": "minecraft:stripped_crimson_stem",
-        "id": -240
-    },
-    {
-        "name": "minecraft:stripped_dark_oak_log",
-        "id": -9
-    },
-    {
-        "name": "minecraft:stripped_dark_oak_wood",
-        "id": -824
-    },
-    {
-        "name": "minecraft:stripped_jungle_log",
-        "id": -7
-    },
-    {
-        "name": "minecraft:stripped_jungle_wood",
-        "id": -822
-    },
-    {
-        "name": "minecraft:stripped_mangrove_log",
-        "id": -485
-    },
-    {
-        "name": "minecraft:stripped_mangrove_wood",
-        "id": -498
-    },
-    {
-        "name": "minecraft:stripped_oak_log",
-        "id": -10
-    },
-    {
-        "name": "minecraft:stripped_oak_wood",
-        "id": -819
-    },
-    {
-        "name": "minecraft:stripped_spruce_log",
-        "id": -5
-    },
-    {
-        "name": "minecraft:stripped_spruce_wood",
-        "id": -820
-    },
-    {
-        "name": "minecraft:stripped_warped_hyphae",
-        "id": -301
-    },
-    {
-        "name": "minecraft:stripped_warped_stem",
-        "id": -241
-    },
-    {
-        "name": "minecraft:structure_block",
-        "id": 252
-    },
-    {
-        "name": "minecraft:structure_void",
-        "id": 217
-    },
-    {
-        "name": "minecraft:sugar",
-        "id": 425
-    },
-    {
-        "name": "minecraft:sugar_cane",
-        "id": 394
-    },
-    {
-        "name": "minecraft:sunflower",
-        "id": 175
-    },
-    {
-        "name": "minecraft:suspicious_gravel",
-        "id": -573
-    },
-    {
-        "name": "minecraft:suspicious_sand",
-        "id": -529
-    },
-    {
-        "name": "minecraft:suspicious_stew",
-        "id": 609
-    },
-    {
-        "name": "minecraft:sweet_berries",
-        "id": 292
-    },
-    {
-        "name": "minecraft:sweet_berry_bush",
-        "id": -207
-    },
-    {
-        "name": "minecraft:tadpole_bucket",
-        "id": 650
-    },
-    {
-        "name": "minecraft:tadpole_spawn_egg",
-        "id": 649
-    },
-    {
-        "name": "minecraft:tall_grass",
-        "id": -864
-    },
-    {
-        "name": "minecraft:tallgrass",
-        "id": 750
-    },
-    {
-        "name": "minecraft:target",
-        "id": -239
-    },
-    {
-        "name": "minecraft:tide_armor_trim_smithing_template",
-        "id": 708
-    },
-    {
-        "name": "minecraft:tinted_glass",
-        "id": -334
-    },
-    {
-        "name": "minecraft:tnt",
-        "id": 46
-    },
-    {
-        "name": "minecraft:tnt_minecart",
-        "id": 542
-    },
-    {
-        "name": "minecraft:torch",
-        "id": 50
-    },
-    {
-        "name": "minecraft:torchflower",
-        "id": -568
-    },
-    {
-        "name": "minecraft:torchflower_crop",
-        "id": -567
-    },
-    {
-        "name": "minecraft:torchflower_seeds",
-        "id": 301
-    },
-    {
-        "name": "minecraft:totem_of_undying",
-        "id": 585
-    },
-    {
-        "name": "minecraft:trader_llama_spawn_egg",
-        "id": 668
-    },
-    {
-        "name": "minecraft:trapdoor",
-        "id": 96
-    },
-    {
-        "name": "minecraft:trapped_chest",
-        "id": 146
-    },
-    {
-        "name": "minecraft:trial_key",
-        "id": 259
-    },
-    {
-        "name": "minecraft:trial_spawner",
-        "id": -315
-    },
-    {
-        "name": "minecraft:trident",
-        "id": 563
-    },
-    {
-        "name": "minecraft:trip_wire",
-        "id": 132
-    },
-    {
-        "name": "minecraft:tripwire_hook",
-        "id": 131
-    },
-    {
-        "name": "minecraft:tropical_fish",
-        "id": 271
-    },
-    {
-        "name": "minecraft:tropical_fish_bucket",
-        "id": 374
-    },
-    {
-        "name": "minecraft:tropical_fish_spawn_egg",
-        "id": 490
-    },
-    {
-        "name": "minecraft:tube_coral",
-        "id": -131
-    },
-    {
-        "name": "minecraft:tube_coral_block",
-        "id": -132
-    },
-    {
-        "name": "minecraft:tube_coral_fan",
-        "id": -133
-    },
-    {
-        "name": "minecraft:tube_coral_wall_fan",
-        "id": -135
-    },
-    {
-        "name": "minecraft:tuff",
-        "id": -333
-    },
-    {
-        "name": "minecraft:tuff_brick_double_slab",
-        "id": -756
-    },
-    {
-        "name": "minecraft:tuff_brick_slab",
-        "id": -755
-    },
-    {
-        "name": "minecraft:tuff_brick_stairs",
-        "id": -757
-    },
-    {
-        "name": "minecraft:tuff_brick_wall",
-        "id": -758
-    },
-    {
-        "name": "minecraft:tuff_bricks",
-        "id": -754
-    },
-    {
-        "name": "minecraft:tuff_double_slab",
-        "id": -745
-    },
-    {
-        "name": "minecraft:tuff_slab",
-        "id": -744
-    },
-    {
-        "name": "minecraft:tuff_stairs",
-        "id": -746
-    },
-    {
-        "name": "minecraft:tuff_wall",
-        "id": -747
-    },
-    {
-        "name": "minecraft:turtle_egg",
-        "id": -159
-    },
-    {
-        "name": "minecraft:turtle_helmet",
-        "id": 590
-    },
-    {
-        "name": "minecraft:turtle_scute",
-        "id": 589
-    },
-    {
-        "name": "minecraft:turtle_spawn_egg",
-        "id": 496
-    },
-    {
-        "name": "minecraft:twisting_vines",
-        "id": -287
-    },
-    {
-        "name": "minecraft:underwater_torch",
-        "id": 239
-    },
-    {
-        "name": "minecraft:undyed_shulker_box",
-        "id": 205
-    },
-    {
-        "name": "minecraft:unknown",
-        "id": -305
-    },
-    {
-        "name": "minecraft:unlit_redstone_torch",
-        "id": 75
-    },
-    {
-        "name": "minecraft:unpowered_comparator",
-        "id": 149
-    },
-    {
-        "name": "minecraft:unpowered_repeater",
-        "id": 93
-    },
-    {
-        "name": "minecraft:vault",
-        "id": -314
-    },
-    {
-        "name": "minecraft:verdant_froglight",
-        "id": -470
-    },
-    {
-        "name": "minecraft:vex_armor_trim_smithing_template",
-        "id": 707
-    },
-    {
-        "name": "minecraft:vex_spawn_egg",
-        "id": 487
-    },
-    {
-        "name": "minecraft:villager_spawn_egg",
-        "id": 459
-    },
-    {
-        "name": "minecraft:vindicator_spawn_egg",
-        "id": 485
-    },
-    {
-        "name": "minecraft:vine",
-        "id": 106
-    },
-    {
-        "name": "minecraft:wall_banner",
-        "id": 177
-    },
-    {
-        "name": "minecraft:wall_sign",
-        "id": 68
-    },
-    {
-        "name": "minecraft:wandering_trader_spawn_egg",
-        "id": 503
-    },
-    {
-        "name": "minecraft:ward_armor_trim_smithing_template",
-        "id": 705
-    },
-    {
-        "name": "minecraft:warden_spawn_egg",
-        "id": 652
-    },
-    {
-        "name": "minecraft:warped_button",
-        "id": -261
-    },
-    {
-        "name": "minecraft:warped_door",
-        "id": 637
-    },
-    {
-        "name": "minecraft:warped_double_slab",
-        "id": -267
-    },
-    {
-        "name": "minecraft:warped_fence",
-        "id": -257
-    },
-    {
-        "name": "minecraft:warped_fence_gate",
-        "id": -259
-    },
-    {
-        "name": "minecraft:warped_fungus",
-        "id": -229
-    },
-    {
-        "name": "minecraft:warped_fungus_on_a_stick",
-        "id": 638
-    },
-    {
-        "name": "minecraft:warped_hanging_sign",
-        "id": -507
-    },
-    {
-        "name": "minecraft:warped_hyphae",
-        "id": -298
-    },
-    {
-        "name": "minecraft:warped_nylium",
-        "id": -233
-    },
-    {
-        "name": "minecraft:warped_planks",
-        "id": -243
-    },
-    {
-        "name": "minecraft:warped_pressure_plate",
-        "id": -263
-    },
-    {
-        "name": "minecraft:warped_roots",
-        "id": -224
-    },
-    {
-        "name": "minecraft:warped_sign",
-        "id": 635
-    },
-    {
-        "name": "minecraft:warped_slab",
-        "id": -265
-    },
-    {
-        "name": "minecraft:warped_stairs",
-        "id": -255
-    },
-    {
-        "name": "minecraft:warped_standing_sign",
-        "id": -251
-    },
-    {
-        "name": "minecraft:warped_stem",
-        "id": -226
-    },
-    {
-        "name": "minecraft:warped_trapdoor",
-        "id": -247
-    },
-    {
-        "name": "minecraft:warped_wall_sign",
-        "id": -253
-    },
-    {
-        "name": "minecraft:warped_wart_block",
-        "id": -227
-    },
-    {
-        "name": "minecraft:water",
-        "id": 9
-    },
-    {
-        "name": "minecraft:water_bucket",
-        "id": 370
-    },
-    {
-        "name": "minecraft:waterlily",
-        "id": 111
-    },
-    {
-        "name": "minecraft:waxed_chiseled_copper",
-        "id": -764
-    },
-    {
-        "name": "minecraft:waxed_copper",
-        "id": -344
-    },
-    {
-        "name": "minecraft:waxed_copper_bulb",
-        "id": -780
-    },
-    {
-        "name": "minecraft:waxed_copper_door",
-        "id": -788
-    },
-    {
-        "name": "minecraft:waxed_copper_grate",
-        "id": -772
-    },
-    {
-        "name": "minecraft:waxed_copper_trapdoor",
-        "id": -796
-    },
-    {
-        "name": "minecraft:waxed_cut_copper",
-        "id": -351
-    },
-    {
-        "name": "minecraft:waxed_cut_copper_slab",
-        "id": -365
-    },
-    {
-        "name": "minecraft:waxed_cut_copper_stairs",
-        "id": -358
-    },
-    {
-        "name": "minecraft:waxed_double_cut_copper_slab",
-        "id": -372
-    },
-    {
-        "name": "minecraft:waxed_exposed_chiseled_copper",
-        "id": -765
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper",
-        "id": -345
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_bulb",
-        "id": -781
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_door",
-        "id": -789
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_grate",
-        "id": -773
-    },
-    {
-        "name": "minecraft:waxed_exposed_copper_trapdoor",
-        "id": -797
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper",
-        "id": -352
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper_slab",
-        "id": -366
-    },
-    {
-        "name": "minecraft:waxed_exposed_cut_copper_stairs",
-        "id": -359
-    },
-    {
-        "name": "minecraft:waxed_exposed_double_cut_copper_slab",
-        "id": -373
-    },
-    {
-        "name": "minecraft:waxed_oxidized_chiseled_copper",
-        "id": -766
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper",
-        "id": -446
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_bulb",
-        "id": -783
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_door",
-        "id": -791
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_grate",
-        "id": -775
-    },
-    {
-        "name": "minecraft:waxed_oxidized_copper_trapdoor",
-        "id": -799
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper",
-        "id": -447
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper_slab",
-        "id": -449
-    },
-    {
-        "name": "minecraft:waxed_oxidized_cut_copper_stairs",
-        "id": -448
-    },
-    {
-        "name": "minecraft:waxed_oxidized_double_cut_copper_slab",
-        "id": -450
-    },
-    {
-        "name": "minecraft:waxed_weathered_chiseled_copper",
-        "id": -767
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper",
-        "id": -346
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_bulb",
-        "id": -782
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_door",
-        "id": -790
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_grate",
-        "id": -774
-    },
-    {
-        "name": "minecraft:waxed_weathered_copper_trapdoor",
-        "id": -798
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper",
-        "id": -353
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper_slab",
-        "id": -367
-    },
-    {
-        "name": "minecraft:waxed_weathered_cut_copper_stairs",
-        "id": -360
-    },
-    {
-        "name": "minecraft:waxed_weathered_double_cut_copper_slab",
-        "id": -374
-    },
-    {
-        "name": "minecraft:wayfinder_armor_trim_smithing_template",
-        "id": 713
-    },
-    {
-        "name": "minecraft:weathered_chiseled_copper",
-        "id": -762
-    },
-    {
-        "name": "minecraft:weathered_copper",
-        "id": -342
-    },
-    {
-        "name": "minecraft:weathered_copper_bulb",
-        "id": -778
-    },
-    {
-        "name": "minecraft:weathered_copper_door",
-        "id": -786
-    },
-    {
-        "name": "minecraft:weathered_copper_grate",
-        "id": -770
-    },
-    {
-        "name": "minecraft:weathered_copper_trapdoor",
-        "id": -794
-    },
-    {
-        "name": "minecraft:weathered_cut_copper",
-        "id": -349
-    },
-    {
-        "name": "minecraft:weathered_cut_copper_slab",
-        "id": -363
-    },
-    {
-        "name": "minecraft:weathered_cut_copper_stairs",
-        "id": -356
-    },
-    {
-        "name": "minecraft:weathered_double_cut_copper_slab",
-        "id": -370
-    },
-    {
-        "name": "minecraft:web",
-        "id": 30
-    },
-    {
-        "name": "minecraft:weeping_vines",
-        "id": -231
-    },
-    {
-        "name": "minecraft:wheat",
-        "id": 342
-    },
-    {
-        "name": "minecraft:wheat_seeds",
-        "id": 296
-    },
-    {
-        "name": "minecraft:white_candle",
-        "id": -413
-    },
-    {
-        "name": "minecraft:white_candle_cake",
-        "id": -430
-    },
-    {
-        "name": "minecraft:white_carpet",
-        "id": 171
-    },
-    {
-        "name": "minecraft:white_concrete",
-        "id": 236
-    },
-    {
-        "name": "minecraft:white_concrete_powder",
-        "id": 237
-    },
-    {
-        "name": "minecraft:white_dye",
-        "id": 419
-    },
-    {
-        "name": "minecraft:white_glazed_terracotta",
-        "id": 220
-    },
-    {
-        "name": "minecraft:white_shulker_box",
-        "id": 218
-    },
-    {
-        "name": "minecraft:white_stained_glass",
-        "id": 241
-    },
-    {
-        "name": "minecraft:white_stained_glass_pane",
-        "id": 160
-    },
-    {
-        "name": "minecraft:white_terracotta",
-        "id": 159
-    },
-    {
-        "name": "minecraft:white_tulip",
-        "id": -835
-    },
-    {
-        "name": "minecraft:white_wool",
-        "id": 35
-    },
-    {
-        "name": "minecraft:wild_armor_trim_smithing_template",
-        "id": 704
-    },
-    {
-        "name": "minecraft:wind_charge",
-        "id": 260
-    },
-    {
-        "name": "minecraft:witch_spawn_egg",
-        "id": 462
-    },
-    {
-        "name": "minecraft:wither_rose",
-        "id": -216
-    },
-    {
-        "name": "minecraft:wither_skeleton_spawn_egg",
-        "id": 475
-    },
-    {
-        "name": "minecraft:wither_spawn_egg",
-        "id": 519
-    },
-    {
-        "name": "minecraft:wolf_armor",
-        "id": 723
-    },
-    {
-        "name": "minecraft:wolf_spawn_egg",
-        "id": 449
-    },
-    {
-        "name": "minecraft:wood",
-        "id": 758
-    },
-    {
-        "name": "minecraft:wooden_axe",
-        "id": 318
-    },
-    {
-        "name": "minecraft:wooden_button",
-        "id": 143
-    },
-    {
-        "name": "minecraft:wooden_door",
-        "id": 367
-    },
-    {
-        "name": "minecraft:wooden_hoe",
-        "id": 337
-    },
-    {
-        "name": "minecraft:wooden_pickaxe",
-        "id": 317
-    },
-    {
-        "name": "minecraft:wooden_pressure_plate",
-        "id": 72
-    },
-    {
-        "name": "minecraft:wooden_shovel",
-        "id": 316
-    },
-    {
-        "name": "minecraft:wooden_slab",
-        "id": 745
-    },
-    {
-        "name": "minecraft:wooden_sword",
-        "id": 315
-    },
-    {
-        "name": "minecraft:wool",
-        "id": 726
-    },
-    {
-        "name": "minecraft:writable_book",
-        "id": 527
-    },
-    {
-        "name": "minecraft:written_book",
-        "id": 528
-    },
-    {
-        "name": "minecraft:yellow_candle",
-        "id": -417
-    },
-    {
-        "name": "minecraft:yellow_candle_cake",
-        "id": -434
-    },
-    {
-        "name": "minecraft:yellow_carpet",
-        "id": -600
-    },
-    {
-        "name": "minecraft:yellow_concrete",
-        "id": -631
-    },
-    {
-        "name": "minecraft:yellow_concrete_powder",
-        "id": -712
-    },
-    {
-        "name": "minecraft:yellow_dye",
-        "id": 415
-    },
-    {
-        "name": "minecraft:yellow_glazed_terracotta",
-        "id": 224
-    },
-    {
-        "name": "minecraft:yellow_shulker_box",
-        "id": -616
-    },
-    {
-        "name": "minecraft:yellow_stained_glass",
-        "id": -676
-    },
-    {
-        "name": "minecraft:yellow_stained_glass_pane",
-        "id": -646
-    },
-    {
-        "name": "minecraft:yellow_terracotta",
-        "id": -727
-    },
-    {
-        "name": "minecraft:yellow_wool",
-        "id": -558
-    },
-    {
-        "name": "minecraft:zoglin_spawn_egg",
-        "id": 509
-    },
-    {
-        "name": "minecraft:zombie_horse_spawn_egg",
-        "id": 479
-    },
-    {
-        "name": "minecraft:zombie_pigman_spawn_egg",
-        "id": 458
-    },
-    {
-        "name": "minecraft:zombie_spawn_egg",
-        "id": 457
-    },
-    {
-        "name": "minecraft:zombie_villager_spawn_egg",
-        "id": 488
-    }
-]
\ No newline at end of file
diff --git a/core/src/main/resources/bedrock/runtime_item_states.1_21_30.json b/core/src/main/resources/bedrock/runtime_item_states.1_21_50.json
similarity index 96%
rename from core/src/main/resources/bedrock/runtime_item_states.1_21_30.json
rename to core/src/main/resources/bedrock/runtime_item_states.1_21_50.json
index 55bbe0a00..763286430 100644
--- a/core/src/main/resources/bedrock/runtime_item_states.1_21_30.json
+++ b/core/src/main/resources/bedrock/runtime_item_states.1_21_50.json
@@ -1,7 +1,7 @@
 [
     {
         "name": "minecraft:acacia_boat",
-        "id": 388
+        "id": 405
     },
     {
         "name": "minecraft:acacia_button",
@@ -9,11 +9,11 @@
     },
     {
         "name": "minecraft:acacia_chest_boat",
-        "id": 662
+        "id": 679
     },
     {
         "name": "minecraft:acacia_door",
-        "id": 573
+        "id": 589
     },
     {
         "name": "minecraft:acacia_double_slab",
@@ -53,7 +53,7 @@
     },
     {
         "name": "minecraft:acacia_sign",
-        "id": 596
+        "id": 612
     },
     {
         "name": "minecraft:acacia_slab",
@@ -85,7 +85,7 @@
     },
     {
         "name": "minecraft:agent_spawn_egg",
-        "id": 498
+        "id": 515
     },
     {
         "name": "minecraft:air",
@@ -93,7 +93,7 @@
     },
     {
         "name": "minecraft:allay_spawn_egg",
-        "id": 651
+        "id": 668
     },
     {
         "name": "minecraft:allium",
@@ -113,7 +113,7 @@
     },
     {
         "name": "minecraft:amethyst_shard",
-        "id": 644
+        "id": 661
     },
     {
         "name": "minecraft:ancient_debris",
@@ -141,7 +141,7 @@
     },
     {
         "name": "minecraft:angler_pottery_sherd",
-        "id": 676
+        "id": 693
     },
     {
         "name": "minecraft:anvil",
@@ -149,39 +149,39 @@
     },
     {
         "name": "minecraft:apple",
-        "id": 261
+        "id": 278
     },
     {
         "name": "minecraft:archer_pottery_sherd",
-        "id": 677
+        "id": 694
     },
     {
         "name": "minecraft:armadillo_scute",
-        "id": 722
+        "id": 740
     },
     {
         "name": "minecraft:armadillo_spawn_egg",
-        "id": 721
+        "id": 739
     },
     {
         "name": "minecraft:armor_stand",
-        "id": 569
+        "id": 585
     },
     {
         "name": "minecraft:arms_up_pottery_sherd",
-        "id": 678
+        "id": 695
     },
     {
         "name": "minecraft:arrow",
-        "id": 308
+        "id": 325
     },
     {
         "name": "minecraft:axolotl_bucket",
-        "id": 377
+        "id": 394
     },
     {
         "name": "minecraft:axolotl_spawn_egg",
-        "id": 513
+        "id": 530
     },
     {
         "name": "minecraft:azalea",
@@ -201,11 +201,11 @@
     },
     {
         "name": "minecraft:baked_potato",
-        "id": 286
+        "id": 303
     },
     {
         "name": "minecraft:balloon",
-        "id": 618
+        "id": 635
     },
     {
         "name": "minecraft:bamboo",
@@ -221,7 +221,7 @@
     },
     {
         "name": "minecraft:bamboo_chest_raft",
-        "id": 674
+        "id": 691
     },
     {
         "name": "minecraft:bamboo_door",
@@ -269,7 +269,7 @@
     },
     {
         "name": "minecraft:bamboo_raft",
-        "id": 673
+        "id": 690
     },
     {
         "name": "minecraft:bamboo_sapling",
@@ -277,7 +277,7 @@
     },
     {
         "name": "minecraft:bamboo_sign",
-        "id": 672
+        "id": 689
     },
     {
         "name": "minecraft:bamboo_slab",
@@ -301,11 +301,11 @@
     },
     {
         "name": "minecraft:banner",
-        "id": 584
+        "id": 600
     },
     {
         "name": "minecraft:banner_pattern",
-        "id": 770
+        "id": 793
     },
     {
         "name": "minecraft:barrel",
@@ -321,7 +321,7 @@
     },
     {
         "name": "minecraft:bat_spawn_egg",
-        "id": 463
+        "id": 480
     },
     {
         "name": "minecraft:beacon",
@@ -329,7 +329,7 @@
     },
     {
         "name": "minecraft:bed",
-        "id": 427
+        "id": 444
     },
     {
         "name": "minecraft:bedrock",
@@ -341,11 +341,11 @@
     },
     {
         "name": "minecraft:bee_spawn_egg",
-        "id": 505
+        "id": 522
     },
     {
         "name": "minecraft:beef",
-        "id": 278
+        "id": 295
     },
     {
         "name": "minecraft:beehive",
@@ -353,15 +353,15 @@
     },
     {
         "name": "minecraft:beetroot",
-        "id": 290
+        "id": 307
     },
     {
         "name": "minecraft:beetroot_seeds",
-        "id": 300
+        "id": 317
     },
     {
         "name": "minecraft:beetroot_soup",
-        "id": 291
+        "id": 308
     },
     {
         "name": "minecraft:bell",
@@ -373,7 +373,7 @@
     },
     {
         "name": "minecraft:birch_boat",
-        "id": 385
+        "id": 402
     },
     {
         "name": "minecraft:birch_button",
@@ -381,11 +381,11 @@
     },
     {
         "name": "minecraft:birch_chest_boat",
-        "id": 659
+        "id": 676
     },
     {
         "name": "minecraft:birch_door",
-        "id": 571
+        "id": 587
     },
     {
         "name": "minecraft:birch_double_slab",
@@ -425,7 +425,7 @@
     },
     {
         "name": "minecraft:birch_sign",
-        "id": 594
+        "id": 610
     },
     {
         "name": "minecraft:birch_slab",
@@ -451,6 +451,10 @@
         "name": "minecraft:birch_wood",
         "id": -815
     },
+    {
+        "name": "minecraft:black_bundle",
+        "id": 257
+    },
     {
         "name": "minecraft:black_candle",
         "id": -428
@@ -473,7 +477,7 @@
     },
     {
         "name": "minecraft:black_dye",
-        "id": 404
+        "id": 421
     },
     {
         "name": "minecraft:black_glazed_terracotta",
@@ -521,7 +525,7 @@
     },
     {
         "name": "minecraft:blade_pottery_sherd",
-        "id": 679
+        "id": 696
     },
     {
         "name": "minecraft:blast_furnace",
@@ -529,19 +533,23 @@
     },
     {
         "name": "minecraft:blaze_powder",
-        "id": 439
+        "id": 456
     },
     {
         "name": "minecraft:blaze_rod",
-        "id": 432
+        "id": 449
     },
     {
         "name": "minecraft:blaze_spawn_egg",
-        "id": 466
+        "id": 483
     },
     {
         "name": "minecraft:bleach",
-        "id": 616
+        "id": 633
+    },
+    {
+        "name": "minecraft:blue_bundle",
+        "id": 258
     },
     {
         "name": "minecraft:blue_candle",
@@ -565,7 +573,7 @@
     },
     {
         "name": "minecraft:blue_dye",
-        "id": 408
+        "id": 425
     },
     {
         "name": "minecraft:blue_glazed_terracotta",
@@ -599,21 +607,25 @@
         "name": "minecraft:blue_wool",
         "id": -563
     },
+    {
+        "name": "minecraft:board",
+        "id": 629
+    },
     {
         "name": "minecraft:boat",
-        "id": 768
+        "id": 791
     },
     {
         "name": "minecraft:bogged_spawn_egg",
-        "id": 473
+        "id": 490
     },
     {
         "name": "minecraft:bolt_armor_trim_smithing_template",
-        "id": 718
+        "id": 735
     },
     {
         "name": "minecraft:bone",
-        "id": 424
+        "id": 441
     },
     {
         "name": "minecraft:bone_block",
@@ -621,11 +633,11 @@
     },
     {
         "name": "minecraft:bone_meal",
-        "id": 420
+        "id": 437
     },
     {
         "name": "minecraft:book",
-        "id": 396
+        "id": 413
     },
     {
         "name": "minecraft:bookshelf",
@@ -637,15 +649,15 @@
     },
     {
         "name": "minecraft:bordure_indented_banner_pattern",
-        "id": 603
+        "id": 619
     },
     {
         "name": "minecraft:bow",
-        "id": 307
+        "id": 324
     },
     {
         "name": "minecraft:bowl",
-        "id": 329
+        "id": 346
     },
     {
         "name": "minecraft:brain_coral",
@@ -665,27 +677,27 @@
     },
     {
         "name": "minecraft:bread",
-        "id": 266
+        "id": 283
     },
     {
         "name": "minecraft:breeze_rod",
-        "id": 257
+        "id": 274
     },
     {
         "name": "minecraft:breeze_spawn_egg",
-        "id": 512
+        "id": 529
     },
     {
         "name": "minecraft:brewer_pottery_sherd",
-        "id": 680
+        "id": 697
     },
     {
         "name": "minecraft:brewing_stand",
-        "id": 441
+        "id": 458
     },
     {
         "name": "minecraft:brick",
-        "id": 392
+        "id": 409
     },
     {
         "name": "minecraft:brick_block",
@@ -707,6 +719,10 @@
         "name": "minecraft:brick_wall",
         "id": -976
     },
+    {
+        "name": "minecraft:brown_bundle",
+        "id": 259
+    },
     {
         "name": "minecraft:brown_candle",
         "id": -425
@@ -729,7 +745,7 @@
     },
     {
         "name": "minecraft:brown_dye",
-        "id": 407
+        "id": 424
     },
     {
         "name": "minecraft:brown_glazed_terracotta",
@@ -765,7 +781,7 @@
     },
     {
         "name": "minecraft:brush",
-        "id": 699
+        "id": 716
     },
     {
         "name": "minecraft:bubble_column",
@@ -789,15 +805,19 @@
     },
     {
         "name": "minecraft:bucket",
-        "id": 368
+        "id": 385
     },
     {
         "name": "minecraft:budding_amethyst",
         "id": -328
     },
+    {
+        "name": "minecraft:bundle",
+        "id": 260
+    },
     {
         "name": "minecraft:burn_pottery_sherd",
-        "id": 681
+        "id": 698
     },
     {
         "name": "minecraft:cactus",
@@ -805,7 +825,7 @@
     },
     {
         "name": "minecraft:cake",
-        "id": 426
+        "id": 443
     },
     {
         "name": "minecraft:calcite",
@@ -817,15 +837,15 @@
     },
     {
         "name": "minecraft:camel_spawn_egg",
-        "id": 675
+        "id": 692
     },
     {
         "name": "minecraft:camera",
-        "id": 613
+        "id": 630
     },
     {
         "name": "minecraft:campfire",
-        "id": 608
+        "id": 624
     },
     {
         "name": "minecraft:candle",
@@ -837,15 +857,15 @@
     },
     {
         "name": "minecraft:carpet",
-        "id": 727
+        "id": 750
     },
     {
         "name": "minecraft:carrot",
-        "id": 284
+        "id": 301
     },
     {
         "name": "minecraft:carrot_on_a_stick",
-        "id": 534
+        "id": 550
     },
     {
         "name": "minecraft:carrots",
@@ -861,15 +881,15 @@
     },
     {
         "name": "minecraft:cat_spawn_egg",
-        "id": 499
+        "id": 516
     },
     {
         "name": "minecraft:cauldron",
-        "id": 442
+        "id": 459
     },
     {
         "name": "minecraft:cave_spider_spawn_egg",
-        "id": 467
+        "id": 484
     },
     {
         "name": "minecraft:cave_vines",
@@ -885,7 +905,7 @@
     },
     {
         "name": "minecraft:chain",
-        "id": 639
+        "id": 656
     },
     {
         "name": "minecraft:chain_command_block",
@@ -893,23 +913,27 @@
     },
     {
         "name": "minecraft:chainmail_boots",
-        "id": 350
+        "id": 367
     },
     {
         "name": "minecraft:chainmail_chestplate",
-        "id": 348
+        "id": 365
     },
     {
         "name": "minecraft:chainmail_helmet",
-        "id": 347
+        "id": 364
     },
     {
         "name": "minecraft:chainmail_leggings",
-        "id": 349
+        "id": 366
+    },
+    {
+        "name": "minecraft:chalkboard",
+        "id": 230
     },
     {
         "name": "minecraft:charcoal",
-        "id": 310
+        "id": 327
     },
     {
         "name": "minecraft:chemical_heat",
@@ -917,11 +941,11 @@
     },
     {
         "name": "minecraft:chemistry_table",
-        "id": 762
+        "id": 785
     },
     {
         "name": "minecraft:cherry_boat",
-        "id": 669
+        "id": 686
     },
     {
         "name": "minecraft:cherry_button",
@@ -929,7 +953,7 @@
     },
     {
         "name": "minecraft:cherry_chest_boat",
-        "id": 670
+        "id": 687
     },
     {
         "name": "minecraft:cherry_door",
@@ -973,7 +997,7 @@
     },
     {
         "name": "minecraft:cherry_sign",
-        "id": 671
+        "id": 688
     },
     {
         "name": "minecraft:cherry_slab",
@@ -1005,19 +1029,19 @@
     },
     {
         "name": "minecraft:chest_boat",
-        "id": 665
+        "id": 682
     },
     {
         "name": "minecraft:chest_minecart",
-        "id": 398
+        "id": 415
     },
     {
         "name": "minecraft:chicken",
-        "id": 280
+        "id": 297
     },
     {
         "name": "minecraft:chicken_spawn_egg",
-        "id": 445
+        "id": 462
     },
     {
         "name": "minecraft:chipped_anvil",
@@ -1051,6 +1075,10 @@
         "name": "minecraft:chiseled_red_sandstone",
         "id": -956
     },
+    {
+        "name": "minecraft:chiseled_resin_bricks",
+        "id": -1020
+    },
     {
         "name": "minecraft:chiseled_sandstone",
         "id": -944
@@ -1073,7 +1101,7 @@
     },
     {
         "name": "minecraft:chorus_fruit",
-        "id": 575
+        "id": 591
     },
     {
         "name": "minecraft:chorus_plant",
@@ -1085,7 +1113,7 @@
     },
     {
         "name": "minecraft:clay_ball",
-        "id": 393
+        "id": 410
     },
     {
         "name": "minecraft:client_request_placeholder_block",
@@ -1093,11 +1121,15 @@
     },
     {
         "name": "minecraft:clock",
-        "id": 402
+        "id": 419
+    },
+    {
+        "name": "minecraft:closed_eyeblossom",
+        "id": -1019
     },
     {
         "name": "minecraft:coal",
-        "id": 309
+        "id": 326
     },
     {
         "name": "minecraft:coal_block",
@@ -1113,7 +1145,7 @@
     },
     {
         "name": "minecraft:coast_armor_trim_smithing_template",
-        "id": 703
+        "id": 720
     },
     {
         "name": "minecraft:cobbled_deepslate",
@@ -1157,19 +1189,19 @@
     },
     {
         "name": "minecraft:cocoa_beans",
-        "id": 421
+        "id": 438
     },
     {
         "name": "minecraft:cod",
-        "id": 269
+        "id": 286
     },
     {
         "name": "minecraft:cod_bucket",
-        "id": 372
+        "id": 389
     },
     {
         "name": "minecraft:cod_spawn_egg",
-        "id": 491
+        "id": 508
     },
     {
         "name": "minecraft:colored_torch_blue",
@@ -1177,7 +1209,7 @@
     },
     {
         "name": "minecraft:colored_torch_bp",
-        "id": 766
+        "id": 789
     },
     {
         "name": "minecraft:colored_torch_green",
@@ -1193,7 +1225,7 @@
     },
     {
         "name": "minecraft:colored_torch_rg",
-        "id": 765
+        "id": 788
     },
     {
         "name": "minecraft:command_block",
@@ -1201,15 +1233,15 @@
     },
     {
         "name": "minecraft:command_block_minecart",
-        "id": 580
+        "id": 596
     },
     {
         "name": "minecraft:comparator",
-        "id": 539
+        "id": 555
     },
     {
         "name": "minecraft:compass",
-        "id": 400
+        "id": 417
     },
     {
         "name": "minecraft:composter",
@@ -1217,7 +1249,7 @@
     },
     {
         "name": "minecraft:compound",
-        "id": 614
+        "id": 631
     },
     {
         "name": "minecraft:compound_creator",
@@ -1225,11 +1257,11 @@
     },
     {
         "name": "minecraft:concrete",
-        "id": 753
+        "id": 776
     },
     {
         "name": "minecraft:concrete_powder",
-        "id": 754
+        "id": 777
     },
     {
         "name": "minecraft:conduit",
@@ -1237,35 +1269,35 @@
     },
     {
         "name": "minecraft:cooked_beef",
-        "id": 279
+        "id": 296
     },
     {
         "name": "minecraft:cooked_chicken",
-        "id": 281
+        "id": 298
     },
     {
         "name": "minecraft:cooked_cod",
-        "id": 273
+        "id": 290
     },
     {
         "name": "minecraft:cooked_mutton",
-        "id": 568
+        "id": 584
     },
     {
         "name": "minecraft:cooked_porkchop",
-        "id": 268
+        "id": 285
     },
     {
         "name": "minecraft:cooked_rabbit",
-        "id": 294
+        "id": 311
     },
     {
         "name": "minecraft:cooked_salmon",
-        "id": 274
+        "id": 291
     },
     {
         "name": "minecraft:cookie",
-        "id": 276
+        "id": 293
     },
     {
         "name": "minecraft:copper_block",
@@ -1285,7 +1317,7 @@
     },
     {
         "name": "minecraft:copper_ingot",
-        "id": 521
+        "id": 538
     },
     {
         "name": "minecraft:copper_ore",
@@ -1297,19 +1329,19 @@
     },
     {
         "name": "minecraft:coral",
-        "id": 749
+        "id": 772
     },
     {
         "name": "minecraft:coral_block",
-        "id": 731
+        "id": 754
     },
     {
         "name": "minecraft:coral_fan",
-        "id": 740
+        "id": 763
     },
     {
         "name": "minecraft:coral_fan_dead",
-        "id": 741
+        "id": 764
     },
     {
         "name": "minecraft:cornflower",
@@ -1317,7 +1349,7 @@
     },
     {
         "name": "minecraft:cow_spawn_egg",
-        "id": 446
+        "id": 463
     },
     {
         "name": "minecraft:cracked_deepslate_bricks",
@@ -1347,13 +1379,25 @@
         "name": "minecraft:crafting_table",
         "id": 58
     },
+    {
+        "name": "minecraft:creaking_heart",
+        "id": -1012
+    },
+    {
+        "name": "minecraft:creaking_spawn_egg",
+        "id": 747
+    },
     {
         "name": "minecraft:creeper_banner_pattern",
-        "id": 599
+        "id": 615
+    },
+    {
+        "name": "minecraft:creeper_head",
+        "id": -968
     },
     {
         "name": "minecraft:creeper_spawn_egg",
-        "id": 451
+        "id": 468
     },
     {
         "name": "minecraft:crimson_button",
@@ -1361,7 +1405,7 @@
     },
     {
         "name": "minecraft:crimson_door",
-        "id": 636
+        "id": 653
     },
     {
         "name": "minecraft:crimson_double_slab",
@@ -1405,7 +1449,7 @@
     },
     {
         "name": "minecraft:crimson_sign",
-        "id": 634
+        "id": 651
     },
     {
         "name": "minecraft:crimson_slab",
@@ -1433,7 +1477,7 @@
     },
     {
         "name": "minecraft:crossbow",
-        "id": 592
+        "id": 608
     },
     {
         "name": "minecraft:crying_obsidian",
@@ -1475,6 +1519,10 @@
         "name": "minecraft:cut_sandstone_slab",
         "id": -900
     },
+    {
+        "name": "minecraft:cyan_bundle",
+        "id": 261
+    },
     {
         "name": "minecraft:cyan_candle",
         "id": -422
@@ -1497,7 +1545,7 @@
     },
     {
         "name": "minecraft:cyan_dye",
-        "id": 410
+        "id": 427
     },
     {
         "name": "minecraft:cyan_glazed_terracotta",
@@ -1533,11 +1581,11 @@
     },
     {
         "name": "minecraft:danger_pottery_sherd",
-        "id": 682
+        "id": 699
     },
     {
         "name": "minecraft:dark_oak_boat",
-        "id": 389
+        "id": 406
     },
     {
         "name": "minecraft:dark_oak_button",
@@ -1545,11 +1593,11 @@
     },
     {
         "name": "minecraft:dark_oak_chest_boat",
-        "id": 663
+        "id": 680
     },
     {
         "name": "minecraft:dark_oak_door",
-        "id": 574
+        "id": 590
     },
     {
         "name": "minecraft:dark_oak_double_slab",
@@ -1589,7 +1637,7 @@
     },
     {
         "name": "minecraft:dark_oak_sign",
-        "id": 597
+        "id": 613
     },
     {
         "name": "minecraft:dark_oak_slab",
@@ -1825,11 +1873,11 @@
     },
     {
         "name": "minecraft:diamond",
-        "id": 311
+        "id": 328
     },
     {
         "name": "minecraft:diamond_axe",
-        "id": 326
+        "id": 343
     },
     {
         "name": "minecraft:diamond_block",
@@ -1837,27 +1885,27 @@
     },
     {
         "name": "minecraft:diamond_boots",
-        "id": 358
+        "id": 375
     },
     {
         "name": "minecraft:diamond_chestplate",
-        "id": 356
+        "id": 373
     },
     {
         "name": "minecraft:diamond_helmet",
-        "id": 355
+        "id": 372
     },
     {
         "name": "minecraft:diamond_hoe",
-        "id": 340
+        "id": 357
     },
     {
         "name": "minecraft:diamond_horse_armor",
-        "id": 550
+        "id": 566
     },
     {
         "name": "minecraft:diamond_leggings",
-        "id": 357
+        "id": 374
     },
     {
         "name": "minecraft:diamond_ore",
@@ -1865,15 +1913,15 @@
     },
     {
         "name": "minecraft:diamond_pickaxe",
-        "id": 325
+        "id": 342
     },
     {
         "name": "minecraft:diamond_shovel",
-        "id": 324
+        "id": 341
     },
     {
         "name": "minecraft:diamond_sword",
-        "id": 323
+        "id": 340
     },
     {
         "name": "minecraft:diorite",
@@ -1905,7 +1953,7 @@
     },
     {
         "name": "minecraft:disc_fragment_5",
-        "id": 657
+        "id": 674
     },
     {
         "name": "minecraft:dispenser",
@@ -1913,11 +1961,11 @@
     },
     {
         "name": "minecraft:dolphin_spawn_egg",
-        "id": 495
+        "id": 512
     },
     {
         "name": "minecraft:donkey_spawn_egg",
-        "id": 476
+        "id": 493
     },
     {
         "name": "minecraft:double_cut_copper_slab",
@@ -1925,35 +1973,39 @@
     },
     {
         "name": "minecraft:double_plant",
-        "id": 747
+        "id": 770
     },
     {
         "name": "minecraft:double_stone_block_slab",
-        "id": 736
+        "id": 759
     },
     {
         "name": "minecraft:double_stone_block_slab2",
-        "id": 737
+        "id": 760
     },
     {
         "name": "minecraft:double_stone_block_slab3",
-        "id": 738
+        "id": 761
     },
     {
         "name": "minecraft:double_stone_block_slab4",
-        "id": 739
+        "id": 762
     },
     {
         "name": "minecraft:dragon_breath",
-        "id": 577
+        "id": 593
     },
     {
         "name": "minecraft:dragon_egg",
         "id": 122
     },
+    {
+        "name": "minecraft:dragon_head",
+        "id": -969
+    },
     {
         "name": "minecraft:dried_kelp",
-        "id": 275
+        "id": 292
     },
     {
         "name": "minecraft:dried_kelp_block",
@@ -1969,27 +2021,27 @@
     },
     {
         "name": "minecraft:drowned_spawn_egg",
-        "id": 494
+        "id": 511
     },
     {
         "name": "minecraft:dune_armor_trim_smithing_template",
-        "id": 702
+        "id": 719
     },
     {
         "name": "minecraft:dye",
-        "id": 769
+        "id": 792
     },
     {
         "name": "minecraft:echo_shard",
-        "id": 667
+        "id": 684
     },
     {
         "name": "minecraft:egg",
-        "id": 399
+        "id": 416
     },
     {
         "name": "minecraft:elder_guardian_spawn_egg",
-        "id": 482
+        "id": 499
     },
     {
         "name": "minecraft:element_0",
@@ -2473,11 +2525,11 @@
     },
     {
         "name": "minecraft:elytra",
-        "id": 581
+        "id": 597
     },
     {
         "name": "minecraft:emerald",
-        "id": 529
+        "id": 546
     },
     {
         "name": "minecraft:emerald_block",
@@ -2489,15 +2541,15 @@
     },
     {
         "name": "minecraft:empty_map",
-        "id": 532
+        "id": 549
     },
     {
         "name": "minecraft:enchanted_book",
-        "id": 538
+        "id": 554
     },
     {
         "name": "minecraft:enchanted_golden_apple",
-        "id": 264
+        "id": 281
     },
     {
         "name": "minecraft:enchanting_table",
@@ -2513,7 +2565,7 @@
     },
     {
         "name": "minecraft:end_crystal",
-        "id": 772
+        "id": 795
     },
     {
         "name": "minecraft:end_gateway",
@@ -2553,35 +2605,35 @@
     },
     {
         "name": "minecraft:ender_dragon_spawn_egg",
-        "id": 518
+        "id": 535
     },
     {
         "name": "minecraft:ender_eye",
-        "id": 443
+        "id": 460
     },
     {
         "name": "minecraft:ender_pearl",
-        "id": 431
+        "id": 448
     },
     {
         "name": "minecraft:enderman_spawn_egg",
-        "id": 452
+        "id": 469
     },
     {
         "name": "minecraft:endermite_spawn_egg",
-        "id": 470
+        "id": 487
     },
     {
         "name": "minecraft:evoker_spawn_egg",
-        "id": 486
+        "id": 503
     },
     {
         "name": "minecraft:experience_bottle",
-        "id": 525
+        "id": 542
     },
     {
         "name": "minecraft:explorer_pottery_sherd",
-        "id": 683
+        "id": 700
     },
     {
         "name": "minecraft:exposed_chiseled_copper",
@@ -2625,7 +2677,7 @@
     },
     {
         "name": "minecraft:eye_armor_trim_smithing_template",
-        "id": 706
+        "id": 723
     },
     {
         "name": "minecraft:farmland",
@@ -2633,11 +2685,11 @@
     },
     {
         "name": "minecraft:feather",
-        "id": 335
+        "id": 352
     },
     {
         "name": "minecraft:fence",
-        "id": 729
+        "id": 752
     },
     {
         "name": "minecraft:fence_gate",
@@ -2645,7 +2697,7 @@
     },
     {
         "name": "minecraft:fermented_spider_eye",
-        "id": 438
+        "id": 455
     },
     {
         "name": "minecraft:fern",
@@ -2653,11 +2705,11 @@
     },
     {
         "name": "minecraft:field_masoned_banner_pattern",
-        "id": 602
+        "id": 618
     },
     {
         "name": "minecraft:filled_map",
-        "id": 429
+        "id": 446
     },
     {
         "name": "minecraft:fire",
@@ -2665,7 +2717,7 @@
     },
     {
         "name": "minecraft:fire_charge",
-        "id": 526
+        "id": 543
     },
     {
         "name": "minecraft:fire_coral",
@@ -2685,15 +2737,15 @@
     },
     {
         "name": "minecraft:firework_rocket",
-        "id": 536
+        "id": 552
     },
     {
         "name": "minecraft:firework_star",
-        "id": 537
+        "id": 553
     },
     {
         "name": "minecraft:fishing_rod",
-        "id": 401
+        "id": 418
     },
     {
         "name": "minecraft:fletching_table",
@@ -2701,31 +2753,31 @@
     },
     {
         "name": "minecraft:flint",
-        "id": 364
+        "id": 381
     },
     {
         "name": "minecraft:flint_and_steel",
-        "id": 306
+        "id": 323
     },
     {
         "name": "minecraft:flow_armor_trim_smithing_template",
-        "id": 717
+        "id": 734
     },
     {
         "name": "minecraft:flow_banner_pattern",
-        "id": 606
+        "id": 622
     },
     {
         "name": "minecraft:flow_pottery_sherd",
-        "id": 684
+        "id": 701
     },
     {
         "name": "minecraft:flower_banner_pattern",
-        "id": 598
+        "id": 614
     },
     {
         "name": "minecraft:flower_pot",
-        "id": 531
+        "id": 548
     },
     {
         "name": "minecraft:flowering_azalea",
@@ -2741,15 +2793,15 @@
     },
     {
         "name": "minecraft:fox_spawn_egg",
-        "id": 501
+        "id": 518
     },
     {
         "name": "minecraft:frame",
-        "id": 530
+        "id": 547
     },
     {
         "name": "minecraft:friend_pottery_sherd",
-        "id": 685
+        "id": 702
     },
     {
         "name": "minecraft:frog_spawn",
@@ -2757,7 +2809,7 @@
     },
     {
         "name": "minecraft:frog_spawn_egg",
-        "id": 648
+        "id": 665
     },
     {
         "name": "minecraft:frosted_ice",
@@ -2769,11 +2821,11 @@
     },
     {
         "name": "minecraft:ghast_spawn_egg",
-        "id": 464
+        "id": 481
     },
     {
         "name": "minecraft:ghast_tear",
-        "id": 434
+        "id": 451
     },
     {
         "name": "minecraft:gilded_blackstone",
@@ -2785,7 +2837,7 @@
     },
     {
         "name": "minecraft:glass_bottle",
-        "id": 437
+        "id": 454
     },
     {
         "name": "minecraft:glass_pane",
@@ -2793,23 +2845,23 @@
     },
     {
         "name": "minecraft:glistering_melon_slice",
-        "id": 444
+        "id": 461
     },
     {
         "name": "minecraft:globe_banner_pattern",
-        "id": 605
+        "id": 621
     },
     {
         "name": "minecraft:glow_berries",
-        "id": 773
+        "id": 796
     },
     {
         "name": "minecraft:glow_frame",
-        "id": 643
+        "id": 660
     },
     {
         "name": "minecraft:glow_ink_sac",
-        "id": 520
+        "id": 537
     },
     {
         "name": "minecraft:glow_lichen",
@@ -2817,11 +2869,11 @@
     },
     {
         "name": "minecraft:glow_squid_spawn_egg",
-        "id": 515
+        "id": 532
     },
     {
         "name": "minecraft:glow_stick",
-        "id": 621
+        "id": 638
     },
     {
         "name": "minecraft:glowingobsidian",
@@ -2833,15 +2885,15 @@
     },
     {
         "name": "minecraft:glowstone_dust",
-        "id": 403
+        "id": 420
     },
     {
         "name": "minecraft:goat_horn",
-        "id": 647
+        "id": 664
     },
     {
         "name": "minecraft:goat_spawn_egg",
-        "id": 514
+        "id": 531
     },
     {
         "name": "minecraft:gold_block",
@@ -2849,11 +2901,11 @@
     },
     {
         "name": "minecraft:gold_ingot",
-        "id": 313
+        "id": 330
     },
     {
         "name": "minecraft:gold_nugget",
-        "id": 435
+        "id": 452
     },
     {
         "name": "minecraft:gold_ore",
@@ -2861,43 +2913,43 @@
     },
     {
         "name": "minecraft:golden_apple",
-        "id": 263
+        "id": 280
     },
     {
         "name": "minecraft:golden_axe",
-        "id": 333
+        "id": 350
     },
     {
         "name": "minecraft:golden_boots",
-        "id": 362
+        "id": 379
     },
     {
         "name": "minecraft:golden_carrot",
-        "id": 288
+        "id": 305
     },
     {
         "name": "minecraft:golden_chestplate",
-        "id": 360
+        "id": 377
     },
     {
         "name": "minecraft:golden_helmet",
-        "id": 359
+        "id": 376
     },
     {
         "name": "minecraft:golden_hoe",
-        "id": 341
+        "id": 358
     },
     {
         "name": "minecraft:golden_horse_armor",
-        "id": 549
+        "id": 565
     },
     {
         "name": "minecraft:golden_leggings",
-        "id": 361
+        "id": 378
     },
     {
         "name": "minecraft:golden_pickaxe",
-        "id": 332
+        "id": 349
     },
     {
         "name": "minecraft:golden_rail",
@@ -2905,11 +2957,11 @@
     },
     {
         "name": "minecraft:golden_shovel",
-        "id": 331
+        "id": 348
     },
     {
         "name": "minecraft:golden_sword",
-        "id": 330
+        "id": 347
     },
     {
         "name": "minecraft:granite",
@@ -2943,6 +2995,10 @@
         "name": "minecraft:gravel",
         "id": 13
     },
+    {
+        "name": "minecraft:gray_bundle",
+        "id": 262
+    },
     {
         "name": "minecraft:gray_candle",
         "id": -420
@@ -2965,7 +3021,7 @@
     },
     {
         "name": "minecraft:gray_dye",
-        "id": 412
+        "id": 429
     },
     {
         "name": "minecraft:gray_glazed_terracotta",
@@ -2991,6 +3047,10 @@
         "name": "minecraft:gray_wool",
         "id": -553
     },
+    {
+        "name": "minecraft:green_bundle",
+        "id": 263
+    },
     {
         "name": "minecraft:green_candle",
         "id": -426
@@ -3013,7 +3073,7 @@
     },
     {
         "name": "minecraft:green_dye",
-        "id": 406
+        "id": 423
     },
     {
         "name": "minecraft:green_glazed_terracotta",
@@ -3045,19 +3105,19 @@
     },
     {
         "name": "minecraft:guardian_spawn_egg",
-        "id": 471
+        "id": 488
     },
     {
         "name": "minecraft:gunpowder",
-        "id": 336
+        "id": 353
     },
     {
         "name": "minecraft:guster_banner_pattern",
-        "id": 607
+        "id": 623
     },
     {
         "name": "minecraft:guster_pottery_sherd",
-        "id": 686
+        "id": 703
     },
     {
         "name": "minecraft:hanging_roots",
@@ -3185,11 +3245,11 @@
     },
     {
         "name": "minecraft:hard_stained_glass",
-        "id": 763
+        "id": 786
     },
     {
         "name": "minecraft:hard_stained_glass_pane",
-        "id": 764
+        "id": 787
     },
     {
         "name": "minecraft:hard_white_stained_glass",
@@ -3217,15 +3277,15 @@
     },
     {
         "name": "minecraft:heart_of_the_sea",
-        "id": 588
+        "id": 604
     },
     {
         "name": "minecraft:heart_pottery_sherd",
-        "id": 687
+        "id": 704
     },
     {
         "name": "minecraft:heartbreak_pottery_sherd",
-        "id": 688
+        "id": 705
     },
     {
         "name": "minecraft:heavy_core",
@@ -3237,7 +3297,7 @@
     },
     {
         "name": "minecraft:hoglin_spawn_egg",
-        "id": 507
+        "id": 524
     },
     {
         "name": "minecraft:honey_block",
@@ -3245,11 +3305,11 @@
     },
     {
         "name": "minecraft:honey_bottle",
-        "id": 611
+        "id": 627
     },
     {
         "name": "minecraft:honeycomb",
-        "id": 610
+        "id": 626
     },
     {
         "name": "minecraft:honeycomb_block",
@@ -3257,11 +3317,11 @@
     },
     {
         "name": "minecraft:hopper",
-        "id": 544
+        "id": 560
     },
     {
         "name": "minecraft:hopper_minecart",
-        "id": 543
+        "id": 559
     },
     {
         "name": "minecraft:horn_coral",
@@ -3281,19 +3341,19 @@
     },
     {
         "name": "minecraft:horse_spawn_egg",
-        "id": 468
+        "id": 485
     },
     {
         "name": "minecraft:host_armor_trim_smithing_template",
-        "id": 716
+        "id": 733
     },
     {
         "name": "minecraft:howl_pottery_sherd",
-        "id": 689
+        "id": 706
     },
     {
         "name": "minecraft:husk_spawn_egg",
-        "id": 474
+        "id": 491
     },
     {
         "name": "minecraft:ice",
@@ -3301,7 +3361,7 @@
     },
     {
         "name": "minecraft:ice_bomb",
-        "id": 615
+        "id": 632
     },
     {
         "name": "minecraft:infested_chiseled_stone_bricks",
@@ -3341,7 +3401,7 @@
     },
     {
         "name": "minecraft:ink_sac",
-        "id": 422
+        "id": 439
     },
     {
         "name": "minecraft:invisible_bedrock",
@@ -3349,7 +3409,7 @@
     },
     {
         "name": "minecraft:iron_axe",
-        "id": 305
+        "id": 322
     },
     {
         "name": "minecraft:iron_bars",
@@ -3361,43 +3421,43 @@
     },
     {
         "name": "minecraft:iron_boots",
-        "id": 354
+        "id": 371
     },
     {
         "name": "minecraft:iron_chestplate",
-        "id": 352
+        "id": 369
     },
     {
         "name": "minecraft:iron_door",
-        "id": 380
+        "id": 397
     },
     {
         "name": "minecraft:iron_golem_spawn_egg",
-        "id": 516
+        "id": 533
     },
     {
         "name": "minecraft:iron_helmet",
-        "id": 351
+        "id": 368
     },
     {
         "name": "minecraft:iron_hoe",
-        "id": 339
+        "id": 356
     },
     {
         "name": "minecraft:iron_horse_armor",
-        "id": 548
+        "id": 564
     },
     {
         "name": "minecraft:iron_ingot",
-        "id": 312
+        "id": 329
     },
     {
         "name": "minecraft:iron_leggings",
-        "id": 353
+        "id": 370
     },
     {
         "name": "minecraft:iron_nugget",
-        "id": 586
+        "id": 602
     },
     {
         "name": "minecraft:iron_ore",
@@ -3405,15 +3465,15 @@
     },
     {
         "name": "minecraft:iron_pickaxe",
-        "id": 304
+        "id": 321
     },
     {
         "name": "minecraft:iron_shovel",
-        "id": 303
+        "id": 320
     },
     {
         "name": "minecraft:iron_sword",
-        "id": 314
+        "id": 331
     },
     {
         "name": "minecraft:iron_trapdoor",
@@ -3511,10 +3571,6 @@
         "name": "minecraft:item.reeds",
         "id": 83
     },
-    {
-        "name": "minecraft:item.skull",
-        "id": 144
-    },
     {
         "name": "minecraft:item.soul_campfire",
         "id": -290
@@ -3545,7 +3601,7 @@
     },
     {
         "name": "minecraft:jungle_boat",
-        "id": 386
+        "id": 403
     },
     {
         "name": "minecraft:jungle_button",
@@ -3553,11 +3609,11 @@
     },
     {
         "name": "minecraft:jungle_chest_boat",
-        "id": 660
+        "id": 677
     },
     {
         "name": "minecraft:jungle_door",
-        "id": 572
+        "id": 588
     },
     {
         "name": "minecraft:jungle_double_slab",
@@ -3597,7 +3653,7 @@
     },
     {
         "name": "minecraft:jungle_sign",
-        "id": 595
+        "id": 611
     },
     {
         "name": "minecraft:jungle_slab",
@@ -3625,7 +3681,7 @@
     },
     {
         "name": "minecraft:kelp",
-        "id": 391
+        "id": 408
     },
     {
         "name": "minecraft:lab_table",
@@ -3645,7 +3701,7 @@
     },
     {
         "name": "minecraft:lapis_lazuli",
-        "id": 423
+        "id": 440
     },
     {
         "name": "minecraft:lapis_ore",
@@ -3665,43 +3721,43 @@
     },
     {
         "name": "minecraft:lava_bucket",
-        "id": 371
+        "id": 388
     },
     {
         "name": "minecraft:lead",
-        "id": 564
+        "id": 580
     },
     {
         "name": "minecraft:leather",
-        "id": 390
+        "id": 407
     },
     {
         "name": "minecraft:leather_boots",
-        "id": 346
+        "id": 363
     },
     {
         "name": "minecraft:leather_chestplate",
-        "id": 344
+        "id": 361
     },
     {
         "name": "minecraft:leather_helmet",
-        "id": 343
+        "id": 360
     },
     {
         "name": "minecraft:leather_horse_armor",
-        "id": 547
+        "id": 563
     },
     {
         "name": "minecraft:leather_leggings",
-        "id": 345
+        "id": 362
     },
     {
         "name": "minecraft:leaves",
-        "id": 743
+        "id": 766
     },
     {
         "name": "minecraft:leaves2",
-        "id": 744
+        "id": 767
     },
     {
         "name": "minecraft:lectern",
@@ -3713,7 +3769,7 @@
     },
     {
         "name": "minecraft:light_block",
-        "id": 767
+        "id": 790
     },
     {
         "name": "minecraft:light_block_0",
@@ -3779,6 +3835,10 @@
         "name": "minecraft:light_block_9",
         "id": -937
     },
+    {
+        "name": "minecraft:light_blue_bundle",
+        "id": 264
+    },
     {
         "name": "minecraft:light_blue_candle",
         "id": -416
@@ -3801,7 +3861,7 @@
     },
     {
         "name": "minecraft:light_blue_dye",
-        "id": 416
+        "id": 433
     },
     {
         "name": "minecraft:light_blue_glazed_terracotta",
@@ -3827,6 +3887,10 @@
         "name": "minecraft:light_blue_wool",
         "id": -562
     },
+    {
+        "name": "minecraft:light_gray_bundle",
+        "id": 265
+    },
     {
         "name": "minecraft:light_gray_candle",
         "id": -421
@@ -3849,7 +3913,7 @@
     },
     {
         "name": "minecraft:light_gray_dye",
-        "id": 411
+        "id": 428
     },
     {
         "name": "minecraft:light_gray_shulker_box",
@@ -3887,6 +3951,10 @@
         "name": "minecraft:lily_of_the_valley",
         "id": -839
     },
+    {
+        "name": "minecraft:lime_bundle",
+        "id": 266
+    },
     {
         "name": "minecraft:lime_candle",
         "id": -418
@@ -3909,7 +3977,7 @@
     },
     {
         "name": "minecraft:lime_dye",
-        "id": 414
+        "id": 431
     },
     {
         "name": "minecraft:lime_glazed_terracotta",
@@ -3937,7 +4005,7 @@
     },
     {
         "name": "minecraft:lingering_potion",
-        "id": 579
+        "id": 595
     },
     {
         "name": "minecraft:lit_blast_furnace",
@@ -3969,7 +4037,7 @@
     },
     {
         "name": "minecraft:llama_spawn_egg",
-        "id": 484
+        "id": 501
     },
     {
         "name": "minecraft:lodestone",
@@ -3977,15 +4045,15 @@
     },
     {
         "name": "minecraft:lodestone_compass",
-        "id": 622
+        "id": 639
     },
     {
         "name": "minecraft:log",
-        "id": 728
+        "id": 751
     },
     {
         "name": "minecraft:log2",
-        "id": 751
+        "id": 774
     },
     {
         "name": "minecraft:loom",
@@ -3993,7 +4061,11 @@
     },
     {
         "name": "minecraft:mace",
-        "id": 327
+        "id": 344
+    },
+    {
+        "name": "minecraft:magenta_bundle",
+        "id": 267
     },
     {
         "name": "minecraft:magenta_candle",
@@ -4017,7 +4089,7 @@
     },
     {
         "name": "minecraft:magenta_dye",
-        "id": 417
+        "id": 434
     },
     {
         "name": "minecraft:magenta_glazed_terracotta",
@@ -4049,15 +4121,15 @@
     },
     {
         "name": "minecraft:magma_cream",
-        "id": 440
+        "id": 457
     },
     {
         "name": "minecraft:magma_cube_spawn_egg",
-        "id": 465
+        "id": 482
     },
     {
         "name": "minecraft:mangrove_boat",
-        "id": 655
+        "id": 672
     },
     {
         "name": "minecraft:mangrove_button",
@@ -4065,11 +4137,11 @@
     },
     {
         "name": "minecraft:mangrove_chest_boat",
-        "id": 664
+        "id": 681
     },
     {
         "name": "minecraft:mangrove_door",
-        "id": 653
+        "id": 670
     },
     {
         "name": "minecraft:mangrove_double_slab",
@@ -4113,7 +4185,7 @@
     },
     {
         "name": "minecraft:mangrove_sign",
-        "id": 654
+        "id": 671
     },
     {
         "name": "minecraft:mangrove_slab",
@@ -4145,7 +4217,7 @@
     },
     {
         "name": "minecraft:medicine",
-        "id": 619
+        "id": 636
     },
     {
         "name": "minecraft:medium_amethyst_bud",
@@ -4157,11 +4229,11 @@
     },
     {
         "name": "minecraft:melon_seeds",
-        "id": 298
+        "id": 315
     },
     {
         "name": "minecraft:melon_slice",
-        "id": 277
+        "id": 294
     },
     {
         "name": "minecraft:melon_stem",
@@ -4169,15 +4241,15 @@
     },
     {
         "name": "minecraft:milk_bucket",
-        "id": 369
+        "id": 386
     },
     {
         "name": "minecraft:minecart",
-        "id": 378
+        "id": 395
     },
     {
         "name": "minecraft:miner_pottery_sherd",
-        "id": 690
+        "id": 707
     },
     {
         "name": "minecraft:mob_spawner",
@@ -4185,15 +4257,15 @@
     },
     {
         "name": "minecraft:mojang_banner_pattern",
-        "id": 601
+        "id": 617
     },
     {
         "name": "minecraft:monster_egg",
-        "id": 752
+        "id": 775
     },
     {
         "name": "minecraft:mooshroom_spawn_egg",
-        "id": 450
+        "id": 467
     },
     {
         "name": "minecraft:moss_block",
@@ -4245,7 +4317,7 @@
     },
     {
         "name": "minecraft:mourner_pottery_sherd",
-        "id": 691
+        "id": 708
     },
     {
         "name": "minecraft:moving_block",
@@ -4281,91 +4353,95 @@
     },
     {
         "name": "minecraft:mule_spawn_egg",
-        "id": 477
+        "id": 494
+    },
+    {
+        "name": "minecraft:mushroom_stem",
+        "id": -1008
     },
     {
         "name": "minecraft:mushroom_stew",
-        "id": 265
+        "id": 282
     },
     {
         "name": "minecraft:music_disc_11",
-        "id": 561
+        "id": 577
     },
     {
         "name": "minecraft:music_disc_13",
-        "id": 551
+        "id": 567
     },
     {
         "name": "minecraft:music_disc_5",
-        "id": 656
+        "id": 673
     },
     {
         "name": "minecraft:music_disc_blocks",
-        "id": 553
+        "id": 569
     },
     {
         "name": "minecraft:music_disc_cat",
-        "id": 552
+        "id": 568
     },
     {
         "name": "minecraft:music_disc_chirp",
-        "id": 554
+        "id": 570
     },
     {
         "name": "minecraft:music_disc_creator",
-        "id": 759
+        "id": 782
     },
     {
         "name": "minecraft:music_disc_creator_music_box",
-        "id": 760
+        "id": 783
     },
     {
         "name": "minecraft:music_disc_far",
-        "id": 555
+        "id": 571
     },
     {
         "name": "minecraft:music_disc_mall",
-        "id": 556
+        "id": 572
     },
     {
         "name": "minecraft:music_disc_mellohi",
-        "id": 557
+        "id": 573
     },
     {
         "name": "minecraft:music_disc_otherside",
-        "id": 646
+        "id": 663
     },
     {
         "name": "minecraft:music_disc_pigstep",
-        "id": 640
+        "id": 657
     },
     {
         "name": "minecraft:music_disc_precipice",
-        "id": 761
+        "id": 784
     },
     {
         "name": "minecraft:music_disc_relic",
-        "id": 719
+        "id": 736
     },
     {
         "name": "minecraft:music_disc_stal",
-        "id": 558
+        "id": 574
     },
     {
         "name": "minecraft:music_disc_strad",
-        "id": 559
+        "id": 575
     },
     {
         "name": "minecraft:music_disc_wait",
-        "id": 562
+        "id": 578
     },
     {
         "name": "minecraft:music_disc_ward",
-        "id": 560
+        "id": 576
     },
     {
         "name": "minecraft:mutton",
-        "id": 567
+        "id": 583
     },
     {
         "name": "minecraft:mycelium",
@@ -4373,11 +4449,11 @@
     },
     {
         "name": "minecraft:name_tag",
-        "id": 565
+        "id": 581
     },
     {
         "name": "minecraft:nautilus_shell",
-        "id": 587
+        "id": 603
     },
     {
         "name": "minecraft:nether_brick",
@@ -4409,15 +4485,15 @@
     },
     {
         "name": "minecraft:nether_sprouts",
-        "id": 641
+        "id": 658
     },
     {
         "name": "minecraft:nether_star",
-        "id": 535
+        "id": 551
     },
     {
         "name": "minecraft:nether_wart",
-        "id": 299
+        "id": 316
     },
     {
         "name": "minecraft:nether_wart_block",
@@ -4425,11 +4501,11 @@
     },
     {
         "name": "minecraft:netherbrick",
-        "id": 540
+        "id": 556
     },
     {
         "name": "minecraft:netherite_axe",
-        "id": 626
+        "id": 643
     },
     {
         "name": "minecraft:netherite_block",
@@ -4437,47 +4513,47 @@
     },
     {
         "name": "minecraft:netherite_boots",
-        "id": 632
+        "id": 649
     },
     {
         "name": "minecraft:netherite_chestplate",
-        "id": 630
+        "id": 647
     },
     {
         "name": "minecraft:netherite_helmet",
-        "id": 629
+        "id": 646
     },
     {
         "name": "minecraft:netherite_hoe",
-        "id": 627
+        "id": 644
     },
     {
         "name": "minecraft:netherite_ingot",
-        "id": 628
+        "id": 645
     },
     {
         "name": "minecraft:netherite_leggings",
-        "id": 631
+        "id": 648
     },
     {
         "name": "minecraft:netherite_pickaxe",
-        "id": 625
+        "id": 642
     },
     {
         "name": "minecraft:netherite_scrap",
-        "id": 633
+        "id": 650
     },
     {
         "name": "minecraft:netherite_shovel",
-        "id": 624
+        "id": 641
     },
     {
         "name": "minecraft:netherite_sword",
-        "id": 623
+        "id": 640
     },
     {
         "name": "minecraft:netherite_upgrade_smithing_template",
-        "id": 700
+        "id": 717
     },
     {
         "name": "minecraft:netherrack",
@@ -4505,15 +4581,15 @@
     },
     {
         "name": "minecraft:npc_spawn_egg",
-        "id": 481
+        "id": 498
     },
     {
         "name": "minecraft:oak_boat",
-        "id": 384
+        "id": 401
     },
     {
         "name": "minecraft:oak_chest_boat",
-        "id": 658
+        "id": 675
     },
     {
         "name": "minecraft:oak_double_slab",
@@ -4545,7 +4621,7 @@
     },
     {
         "name": "minecraft:oak_sign",
-        "id": 366
+        "id": 383
     },
     {
         "name": "minecraft:oak_slab",
@@ -4569,7 +4645,7 @@
     },
     {
         "name": "minecraft:ocelot_spawn_egg",
-        "id": 461
+        "id": 478
     },
     {
         "name": "minecraft:ochre_froglight",
@@ -4577,11 +4653,19 @@
     },
     {
         "name": "minecraft:ominous_bottle",
-        "id": 612
+        "id": 628
     },
     {
         "name": "minecraft:ominous_trial_key",
-        "id": 258
+        "id": 275
+    },
+    {
+        "name": "minecraft:open_eyeblossom",
+        "id": -1018
+    },
+    {
+        "name": "minecraft:orange_bundle",
+        "id": 268
     },
     {
         "name": "minecraft:orange_candle",
@@ -4605,7 +4689,7 @@
     },
     {
         "name": "minecraft:orange_dye",
-        "id": 418
+        "id": 435
     },
     {
         "name": "minecraft:orange_glazed_terracotta",
@@ -4689,19 +4773,111 @@
     },
     {
         "name": "minecraft:painting",
-        "id": 365
+        "id": 382
+    },
+    {
+        "name": "minecraft:pale_hanging_moss",
+        "id": -1011
+    },
+    {
+        "name": "minecraft:pale_moss_block",
+        "id": -1009
+    },
+    {
+        "name": "minecraft:pale_moss_carpet",
+        "id": -1010
+    },
+    {
+        "name": "minecraft:pale_oak_boat",
+        "id": 744
+    },
+    {
+        "name": "minecraft:pale_oak_button",
+        "id": -989
+    },
+    {
+        "name": "minecraft:pale_oak_chest_boat",
+        "id": 745
+    },
+    {
+        "name": "minecraft:pale_oak_door",
+        "id": -990
+    },
+    {
+        "name": "minecraft:pale_oak_double_slab",
+        "id": -999
+    },
+    {
+        "name": "minecraft:pale_oak_fence",
+        "id": -991
+    },
+    {
+        "name": "minecraft:pale_oak_fence_gate",
+        "id": -992
+    },
+    {
+        "name": "minecraft:pale_oak_hanging_sign",
+        "id": -993
+    },
+    {
+        "name": "minecraft:pale_oak_leaves",
+        "id": -1007
+    },
+    {
+        "name": "minecraft:pale_oak_log",
+        "id": -995
+    },
+    {
+        "name": "minecraft:pale_oak_planks",
+        "id": -996
+    },
+    {
+        "name": "minecraft:pale_oak_pressure_plate",
+        "id": -997
+    },
+    {
+        "name": "minecraft:pale_oak_sapling",
+        "id": -1006
+    },
+    {
+        "name": "minecraft:pale_oak_sign",
+        "id": 746
+    },
+    {
+        "name": "minecraft:pale_oak_slab",
+        "id": -998
+    },
+    {
+        "name": "minecraft:pale_oak_stairs",
+        "id": -1000
+    },
+    {
+        "name": "minecraft:pale_oak_standing_sign",
+        "id": -1001
+    },
+    {
+        "name": "minecraft:pale_oak_trapdoor",
+        "id": -1002
+    },
+    {
+        "name": "minecraft:pale_oak_wall_sign",
+        "id": -1003
+    },
+    {
+        "name": "minecraft:pale_oak_wood",
+        "id": -1005
     },
     {
         "name": "minecraft:panda_spawn_egg",
-        "id": 500
+        "id": 517
     },
     {
         "name": "minecraft:paper",
-        "id": 395
+        "id": 412
     },
     {
         "name": "minecraft:parrot_spawn_egg",
-        "id": 489
+        "id": 506
     },
     {
         "name": "minecraft:pearlescent_froglight",
@@ -4721,31 +4897,39 @@
     },
     {
         "name": "minecraft:phantom_membrane",
-        "id": 591
+        "id": 607
     },
     {
         "name": "minecraft:phantom_spawn_egg",
-        "id": 497
+        "id": 514
     },
     {
         "name": "minecraft:pig_spawn_egg",
-        "id": 447
+        "id": 464
     },
     {
         "name": "minecraft:piglin_banner_pattern",
-        "id": 604
+        "id": 620
     },
     {
         "name": "minecraft:piglin_brute_spawn_egg",
-        "id": 510
+        "id": 527
+    },
+    {
+        "name": "minecraft:piglin_head",
+        "id": -970
     },
     {
         "name": "minecraft:piglin_spawn_egg",
-        "id": 508
+        "id": 525
     },
     {
         "name": "minecraft:pillager_spawn_egg",
-        "id": 502
+        "id": 519
+    },
+    {
+        "name": "minecraft:pink_bundle",
+        "id": 269
     },
     {
         "name": "minecraft:pink_candle",
@@ -4769,7 +4953,7 @@
     },
     {
         "name": "minecraft:pink_dye",
-        "id": 413
+        "id": 430
     },
     {
         "name": "minecraft:pink_glazed_terracotta",
@@ -4821,15 +5005,19 @@
     },
     {
         "name": "minecraft:pitcher_pod",
-        "id": 302
+        "id": 319
     },
     {
         "name": "minecraft:planks",
-        "id": 748
+        "id": 771
+    },
+    {
+        "name": "minecraft:player_head",
+        "id": -967
     },
     {
         "name": "minecraft:plenty_pottery_sherd",
-        "id": 692
+        "id": 709
     },
     {
         "name": "minecraft:podzol",
@@ -4841,11 +5029,11 @@
     },
     {
         "name": "minecraft:poisonous_potato",
-        "id": 287
+        "id": 304
     },
     {
         "name": "minecraft:polar_bear_spawn_egg",
-        "id": 483
+        "id": 500
     },
     {
         "name": "minecraft:polished_andesite",
@@ -4989,7 +5177,7 @@
     },
     {
         "name": "minecraft:popped_chorus_fruit",
-        "id": 576
+        "id": 592
     },
     {
         "name": "minecraft:poppy",
@@ -4997,7 +5185,7 @@
     },
     {
         "name": "minecraft:porkchop",
-        "id": 267
+        "id": 284
     },
     {
         "name": "minecraft:portal",
@@ -5005,7 +5193,7 @@
     },
     {
         "name": "minecraft:potato",
-        "id": 285
+        "id": 302
     },
     {
         "name": "minecraft:potatoes",
@@ -5013,7 +5201,7 @@
     },
     {
         "name": "minecraft:potion",
-        "id": 436
+        "id": 453
     },
     {
         "name": "minecraft:powder_snow",
@@ -5021,7 +5209,7 @@
     },
     {
         "name": "minecraft:powder_snow_bucket",
-        "id": 376
+        "id": 393
     },
     {
         "name": "minecraft:powered_comparator",
@@ -5053,7 +5241,7 @@
     },
     {
         "name": "minecraft:prismarine_crystals",
-        "id": 566
+        "id": 582
     },
     {
         "name": "minecraft:prismarine_double_slab",
@@ -5061,7 +5249,7 @@
     },
     {
         "name": "minecraft:prismarine_shard",
-        "id": 582
+        "id": 598
     },
     {
         "name": "minecraft:prismarine_slab",
@@ -5077,19 +5265,19 @@
     },
     {
         "name": "minecraft:prize_pottery_sherd",
-        "id": 693
+        "id": 710
     },
     {
         "name": "minecraft:pufferfish",
-        "id": 272
+        "id": 289
     },
     {
         "name": "minecraft:pufferfish_bucket",
-        "id": 375
+        "id": 392
     },
     {
         "name": "minecraft:pufferfish_spawn_egg",
-        "id": 492
+        "id": 509
     },
     {
         "name": "minecraft:pumpkin",
@@ -5097,16 +5285,20 @@
     },
     {
         "name": "minecraft:pumpkin_pie",
-        "id": 289
+        "id": 306
     },
     {
         "name": "minecraft:pumpkin_seeds",
-        "id": 297
+        "id": 314
     },
     {
         "name": "minecraft:pumpkin_stem",
         "id": 104
     },
+    {
+        "name": "minecraft:purple_bundle",
+        "id": 270
+    },
     {
         "name": "minecraft:purple_candle",
         "id": -423
@@ -5129,7 +5321,7 @@
     },
     {
         "name": "minecraft:purple_dye",
-        "id": 409
+        "id": 426
     },
     {
         "name": "minecraft:purple_glazed_terracotta",
@@ -5177,7 +5369,7 @@
     },
     {
         "name": "minecraft:quartz",
-        "id": 541
+        "id": 557
     },
     {
         "name": "minecraft:quartz_block",
@@ -5209,23 +5401,23 @@
     },
     {
         "name": "minecraft:rabbit",
-        "id": 293
+        "id": 310
     },
     {
         "name": "minecraft:rabbit_foot",
-        "id": 545
+        "id": 561
     },
     {
         "name": "minecraft:rabbit_hide",
-        "id": 546
+        "id": 562
     },
     {
         "name": "minecraft:rabbit_spawn_egg",
-        "id": 469
+        "id": 486
     },
     {
         "name": "minecraft:rabbit_stew",
-        "id": 295
+        "id": 312
     },
     {
         "name": "minecraft:rail",
@@ -5233,19 +5425,19 @@
     },
     {
         "name": "minecraft:raiser_armor_trim_smithing_template",
-        "id": 714
+        "id": 731
     },
     {
         "name": "minecraft:rapid_fertilizer",
-        "id": 617
+        "id": 634
     },
     {
         "name": "minecraft:ravager_spawn_egg",
-        "id": 504
+        "id": 521
     },
     {
         "name": "minecraft:raw_copper",
-        "id": 524
+        "id": 541
     },
     {
         "name": "minecraft:raw_copper_block",
@@ -5253,7 +5445,7 @@
     },
     {
         "name": "minecraft:raw_gold",
-        "id": 523
+        "id": 540
     },
     {
         "name": "minecraft:raw_gold_block",
@@ -5261,7 +5453,7 @@
     },
     {
         "name": "minecraft:raw_iron",
-        "id": 522
+        "id": 539
     },
     {
         "name": "minecraft:raw_iron_block",
@@ -5269,7 +5461,11 @@
     },
     {
         "name": "minecraft:recovery_compass",
-        "id": 666
+        "id": 683
+    },
+    {
+        "name": "minecraft:red_bundle",
+        "id": 271
     },
     {
         "name": "minecraft:red_candle",
@@ -5293,11 +5489,11 @@
     },
     {
         "name": "minecraft:red_dye",
-        "id": 405
+        "id": 422
     },
     {
         "name": "minecraft:red_flower",
-        "id": 746
+        "id": 769
     },
     {
         "name": "minecraft:red_glazed_terracotta",
@@ -5381,7 +5577,7 @@
     },
     {
         "name": "minecraft:redstone",
-        "id": 381
+        "id": 398
     },
     {
         "name": "minecraft:redstone_block",
@@ -5409,7 +5605,7 @@
     },
     {
         "name": "minecraft:repeater",
-        "id": 428
+        "id": 445
     },
     {
         "name": "minecraft:repeating_command_block",
@@ -5419,13 +5615,45 @@
         "name": "minecraft:reserved6",
         "id": 255
     },
+    {
+        "name": "minecraft:resin_block",
+        "id": -1021
+    },
+    {
+        "name": "minecraft:resin_brick",
+        "id": 748
+    },
+    {
+        "name": "minecraft:resin_brick_double_slab",
+        "id": -1015
+    },
+    {
+        "name": "minecraft:resin_brick_slab",
+        "id": -1014
+    },
+    {
+        "name": "minecraft:resin_brick_stairs",
+        "id": -1016
+    },
+    {
+        "name": "minecraft:resin_brick_wall",
+        "id": -1017
+    },
+    {
+        "name": "minecraft:resin_bricks",
+        "id": -1013
+    },
+    {
+        "name": "minecraft:resin_clump",
+        "id": -1022
+    },
     {
         "name": "minecraft:respawn_anchor",
         "id": -272
     },
     {
         "name": "minecraft:rib_armor_trim_smithing_template",
-        "id": 710
+        "id": 727
     },
     {
         "name": "minecraft:rose_bush",
@@ -5433,23 +5661,23 @@
     },
     {
         "name": "minecraft:rotten_flesh",
-        "id": 282
+        "id": 299
     },
     {
         "name": "minecraft:saddle",
-        "id": 379
+        "id": 396
     },
     {
         "name": "minecraft:salmon",
-        "id": 270
+        "id": 287
     },
     {
         "name": "minecraft:salmon_bucket",
-        "id": 373
+        "id": 390
     },
     {
         "name": "minecraft:salmon_spawn_egg",
-        "id": 493
+        "id": 510
     },
     {
         "name": "minecraft:sand",
@@ -5477,7 +5705,7 @@
     },
     {
         "name": "minecraft:sapling",
-        "id": 742
+        "id": 765
     },
     {
         "name": "minecraft:scaffolding",
@@ -5485,7 +5713,7 @@
     },
     {
         "name": "minecraft:scrape_pottery_sherd",
-        "id": 694
+        "id": 711
     },
     {
         "name": "minecraft:sculk",
@@ -5521,31 +5749,31 @@
     },
     {
         "name": "minecraft:sentry_armor_trim_smithing_template",
-        "id": 701
+        "id": 718
     },
     {
         "name": "minecraft:shaper_armor_trim_smithing_template",
-        "id": 715
+        "id": 732
     },
     {
         "name": "minecraft:sheaf_pottery_sherd",
-        "id": 695
+        "id": 712
     },
     {
         "name": "minecraft:shears",
-        "id": 430
+        "id": 447
     },
     {
         "name": "minecraft:sheep_spawn_egg",
-        "id": 448
+        "id": 465
     },
     {
         "name": "minecraft:shelter_pottery_sherd",
-        "id": 696
+        "id": 713
     },
     {
         "name": "minecraft:shield",
-        "id": 363
+        "id": 380
     },
     {
         "name": "minecraft:short_grass",
@@ -5557,19 +5785,19 @@
     },
     {
         "name": "minecraft:shulker_box",
-        "id": 757
+        "id": 780
     },
     {
         "name": "minecraft:shulker_shell",
-        "id": 583
+        "id": 599
     },
     {
         "name": "minecraft:shulker_spawn_egg",
-        "id": 480
+        "id": 497
     },
     {
         "name": "minecraft:silence_armor_trim_smithing_template",
-        "id": 712
+        "id": 729
     },
     {
         "name": "minecraft:silver_glazed_terracotta",
@@ -5577,27 +5805,31 @@
     },
     {
         "name": "minecraft:silverfish_spawn_egg",
-        "id": 453
+        "id": 470
     },
     {
         "name": "minecraft:skeleton_horse_spawn_egg",
-        "id": 478
+        "id": 495
+    },
+    {
+        "name": "minecraft:skeleton_skull",
+        "id": 144
     },
     {
         "name": "minecraft:skeleton_spawn_egg",
-        "id": 454
+        "id": 471
     },
     {
         "name": "minecraft:skull",
-        "id": 533
+        "id": 737
     },
     {
         "name": "minecraft:skull_banner_pattern",
-        "id": 600
+        "id": 616
     },
     {
         "name": "minecraft:skull_pottery_sherd",
-        "id": 697
+        "id": 714
     },
     {
         "name": "minecraft:slime",
@@ -5605,11 +5837,11 @@
     },
     {
         "name": "minecraft:slime_ball",
-        "id": 397
+        "id": 414
     },
     {
         "name": "minecraft:slime_spawn_egg",
-        "id": 455
+        "id": 472
     },
     {
         "name": "minecraft:small_amethyst_bud",
@@ -5697,15 +5929,15 @@
     },
     {
         "name": "minecraft:sniffer_spawn_egg",
-        "id": 511
+        "id": 528
     },
     {
         "name": "minecraft:snort_pottery_sherd",
-        "id": 698
+        "id": 715
     },
     {
         "name": "minecraft:snout_armor_trim_smithing_template",
-        "id": 709
+        "id": 726
     },
     {
         "name": "minecraft:snow",
@@ -5713,7 +5945,7 @@
     },
     {
         "name": "minecraft:snow_golem_spawn_egg",
-        "id": 517
+        "id": 534
     },
     {
         "name": "minecraft:snow_layer",
@@ -5721,11 +5953,11 @@
     },
     {
         "name": "minecraft:snowball",
-        "id": 382
+        "id": 399
     },
     {
         "name": "minecraft:soul_campfire",
-        "id": 642
+        "id": 659
     },
     {
         "name": "minecraft:soul_fire",
@@ -5749,27 +5981,27 @@
     },
     {
         "name": "minecraft:sparkler",
-        "id": 620
+        "id": 637
     },
     {
         "name": "minecraft:spawn_egg",
-        "id": 771
+        "id": 794
     },
     {
         "name": "minecraft:spider_eye",
-        "id": 283
+        "id": 300
     },
     {
         "name": "minecraft:spider_spawn_egg",
-        "id": 456
+        "id": 473
     },
     {
         "name": "minecraft:spire_armor_trim_smithing_template",
-        "id": 711
+        "id": 728
     },
     {
         "name": "minecraft:splash_potion",
-        "id": 578
+        "id": 594
     },
     {
         "name": "minecraft:sponge",
@@ -5781,7 +6013,7 @@
     },
     {
         "name": "minecraft:spruce_boat",
-        "id": 387
+        "id": 404
     },
     {
         "name": "minecraft:spruce_button",
@@ -5789,11 +6021,11 @@
     },
     {
         "name": "minecraft:spruce_chest_boat",
-        "id": 661
+        "id": 678
     },
     {
         "name": "minecraft:spruce_door",
-        "id": 570
+        "id": 586
     },
     {
         "name": "minecraft:spruce_double_slab",
@@ -5833,7 +6065,7 @@
     },
     {
         "name": "minecraft:spruce_sign",
-        "id": 593
+        "id": 609
     },
     {
         "name": "minecraft:spruce_slab",
@@ -5861,23 +6093,23 @@
     },
     {
         "name": "minecraft:spyglass",
-        "id": 645
+        "id": 662
     },
     {
         "name": "minecraft:squid_spawn_egg",
-        "id": 460
+        "id": 477
     },
     {
         "name": "minecraft:stained_glass",
-        "id": 755
+        "id": 778
     },
     {
         "name": "minecraft:stained_glass_pane",
-        "id": 756
+        "id": 779
     },
     {
         "name": "minecraft:stained_hardened_clay",
-        "id": 720
+        "id": 738
     },
     {
         "name": "minecraft:standing_banner",
@@ -5889,7 +6121,7 @@
     },
     {
         "name": "minecraft:stick",
-        "id": 328
+        "id": 345
     },
     {
         "name": "minecraft:sticky_piston",
@@ -5905,23 +6137,23 @@
     },
     {
         "name": "minecraft:stone_axe",
-        "id": 322
+        "id": 339
     },
     {
         "name": "minecraft:stone_block_slab",
-        "id": 732
+        "id": 755
     },
     {
         "name": "minecraft:stone_block_slab2",
-        "id": 733
+        "id": 756
     },
     {
         "name": "minecraft:stone_block_slab3",
-        "id": 734
+        "id": 757
     },
     {
         "name": "minecraft:stone_block_slab4",
-        "id": 735
+        "id": 758
     },
     {
         "name": "minecraft:stone_brick_double_slab",
@@ -5949,11 +6181,11 @@
     },
     {
         "name": "minecraft:stone_hoe",
-        "id": 338
+        "id": 355
     },
     {
         "name": "minecraft:stone_pickaxe",
-        "id": 321
+        "id": 338
     },
     {
         "name": "minecraft:stone_pressure_plate",
@@ -5961,7 +6193,7 @@
     },
     {
         "name": "minecraft:stone_shovel",
-        "id": 320
+        "id": 337
     },
     {
         "name": "minecraft:stone_stairs",
@@ -5969,11 +6201,11 @@
     },
     {
         "name": "minecraft:stone_sword",
-        "id": 319
+        "id": 336
     },
     {
         "name": "minecraft:stonebrick",
-        "id": 730
+        "id": 753
     },
     {
         "name": "minecraft:stonecutter",
@@ -5985,15 +6217,15 @@
     },
     {
         "name": "minecraft:stray_spawn_egg",
-        "id": 472
+        "id": 489
     },
     {
         "name": "minecraft:strider_spawn_egg",
-        "id": 506
+        "id": 523
     },
     {
         "name": "minecraft:string",
-        "id": 334
+        "id": 351
     },
     {
         "name": "minecraft:stripped_acacia_log",
@@ -6063,6 +6295,14 @@
         "name": "minecraft:stripped_oak_wood",
         "id": -819
     },
+    {
+        "name": "minecraft:stripped_pale_oak_log",
+        "id": -994
+    },
+    {
+        "name": "minecraft:stripped_pale_oak_wood",
+        "id": -1004
+    },
     {
         "name": "minecraft:stripped_spruce_log",
         "id": -5
@@ -6089,11 +6329,11 @@
     },
     {
         "name": "minecraft:sugar",
-        "id": 425
+        "id": 442
     },
     {
         "name": "minecraft:sugar_cane",
-        "id": 394
+        "id": 411
     },
     {
         "name": "minecraft:sunflower",
@@ -6109,11 +6349,11 @@
     },
     {
         "name": "minecraft:suspicious_stew",
-        "id": 609
+        "id": 625
     },
     {
         "name": "minecraft:sweet_berries",
-        "id": 292
+        "id": 309
     },
     {
         "name": "minecraft:sweet_berry_bush",
@@ -6121,11 +6361,11 @@
     },
     {
         "name": "minecraft:tadpole_bucket",
-        "id": 650
+        "id": 667
     },
     {
         "name": "minecraft:tadpole_spawn_egg",
-        "id": 649
+        "id": 666
     },
     {
         "name": "minecraft:tall_grass",
@@ -6133,7 +6373,7 @@
     },
     {
         "name": "minecraft:tallgrass",
-        "id": 750
+        "id": 773
     },
     {
         "name": "minecraft:target",
@@ -6141,7 +6381,7 @@
     },
     {
         "name": "minecraft:tide_armor_trim_smithing_template",
-        "id": 708
+        "id": 725
     },
     {
         "name": "minecraft:tinted_glass",
@@ -6153,7 +6393,7 @@
     },
     {
         "name": "minecraft:tnt_minecart",
-        "id": 542
+        "id": 558
     },
     {
         "name": "minecraft:torch",
@@ -6169,15 +6409,15 @@
     },
     {
         "name": "minecraft:torchflower_seeds",
-        "id": 301
+        "id": 318
     },
     {
         "name": "minecraft:totem_of_undying",
-        "id": 585
+        "id": 601
     },
     {
         "name": "minecraft:trader_llama_spawn_egg",
-        "id": 668
+        "id": 685
     },
     {
         "name": "minecraft:trapdoor",
@@ -6189,7 +6429,7 @@
     },
     {
         "name": "minecraft:trial_key",
-        "id": 259
+        "id": 276
     },
     {
         "name": "minecraft:trial_spawner",
@@ -6197,7 +6437,7 @@
     },
     {
         "name": "minecraft:trident",
-        "id": 563
+        "id": 579
     },
     {
         "name": "minecraft:trip_wire",
@@ -6209,15 +6449,15 @@
     },
     {
         "name": "minecraft:tropical_fish",
-        "id": 271
+        "id": 288
     },
     {
         "name": "minecraft:tropical_fish_bucket",
-        "id": 374
+        "id": 391
     },
     {
         "name": "minecraft:tropical_fish_spawn_egg",
-        "id": 490
+        "id": 507
     },
     {
         "name": "minecraft:tube_coral",
@@ -6281,15 +6521,15 @@
     },
     {
         "name": "minecraft:turtle_helmet",
-        "id": 590
+        "id": 606
     },
     {
         "name": "minecraft:turtle_scute",
-        "id": 589
+        "id": 605
     },
     {
         "name": "minecraft:turtle_spawn_egg",
-        "id": 496
+        "id": 513
     },
     {
         "name": "minecraft:twisting_vines",
@@ -6333,19 +6573,19 @@
     },
     {
         "name": "minecraft:vex_armor_trim_smithing_template",
-        "id": 707
+        "id": 724
     },
     {
         "name": "minecraft:vex_spawn_egg",
-        "id": 487
+        "id": 504
     },
     {
         "name": "minecraft:villager_spawn_egg",
-        "id": 459
+        "id": 476
     },
     {
         "name": "minecraft:vindicator_spawn_egg",
-        "id": 485
+        "id": 502
     },
     {
         "name": "minecraft:vine",
@@ -6361,15 +6601,15 @@
     },
     {
         "name": "minecraft:wandering_trader_spawn_egg",
-        "id": 503
+        "id": 520
     },
     {
         "name": "minecraft:ward_armor_trim_smithing_template",
-        "id": 705
+        "id": 722
     },
     {
         "name": "minecraft:warden_spawn_egg",
-        "id": 652
+        "id": 669
     },
     {
         "name": "minecraft:warped_button",
@@ -6377,7 +6617,7 @@
     },
     {
         "name": "minecraft:warped_door",
-        "id": 637
+        "id": 654
     },
     {
         "name": "minecraft:warped_double_slab",
@@ -6397,7 +6637,7 @@
     },
     {
         "name": "minecraft:warped_fungus_on_a_stick",
-        "id": 638
+        "id": 655
     },
     {
         "name": "minecraft:warped_hanging_sign",
@@ -6425,7 +6665,7 @@
     },
     {
         "name": "minecraft:warped_sign",
-        "id": 635
+        "id": 652
     },
     {
         "name": "minecraft:warped_slab",
@@ -6461,7 +6701,7 @@
     },
     {
         "name": "minecraft:water_bucket",
-        "id": 370
+        "id": 387
     },
     {
         "name": "minecraft:waterlily",
@@ -6629,7 +6869,7 @@
     },
     {
         "name": "minecraft:wayfinder_armor_trim_smithing_template",
-        "id": 713
+        "id": 730
     },
     {
         "name": "minecraft:weathered_chiseled_copper",
@@ -6685,11 +6925,15 @@
     },
     {
         "name": "minecraft:wheat",
-        "id": 342
+        "id": 359
     },
     {
         "name": "minecraft:wheat_seeds",
-        "id": 296
+        "id": 313
+    },
+    {
+        "name": "minecraft:white_bundle",
+        "id": 272
     },
     {
         "name": "minecraft:white_candle",
@@ -6713,7 +6957,7 @@
     },
     {
         "name": "minecraft:white_dye",
-        "id": 419
+        "id": 436
     },
     {
         "name": "minecraft:white_glazed_terracotta",
@@ -6745,43 +6989,47 @@
     },
     {
         "name": "minecraft:wild_armor_trim_smithing_template",
-        "id": 704
+        "id": 721
     },
     {
         "name": "minecraft:wind_charge",
-        "id": 260
+        "id": 277
     },
     {
         "name": "minecraft:witch_spawn_egg",
-        "id": 462
+        "id": 479
     },
     {
         "name": "minecraft:wither_rose",
         "id": -216
     },
+    {
+        "name": "minecraft:wither_skeleton_skull",
+        "id": -965
+    },
     {
         "name": "minecraft:wither_skeleton_spawn_egg",
-        "id": 475
+        "id": 492
     },
     {
         "name": "minecraft:wither_spawn_egg",
-        "id": 519
+        "id": 536
     },
     {
         "name": "minecraft:wolf_armor",
-        "id": 723
+        "id": 741
     },
     {
         "name": "minecraft:wolf_spawn_egg",
-        "id": 449
+        "id": 466
     },
     {
         "name": "minecraft:wood",
-        "id": 758
+        "id": 781
     },
     {
         "name": "minecraft:wooden_axe",
-        "id": 318
+        "id": 335
     },
     {
         "name": "minecraft:wooden_button",
@@ -6789,15 +7037,15 @@
     },
     {
         "name": "minecraft:wooden_door",
-        "id": 367
+        "id": 384
     },
     {
         "name": "minecraft:wooden_hoe",
-        "id": 337
+        "id": 354
     },
     {
         "name": "minecraft:wooden_pickaxe",
-        "id": 317
+        "id": 334
     },
     {
         "name": "minecraft:wooden_pressure_plate",
@@ -6805,27 +7053,31 @@
     },
     {
         "name": "minecraft:wooden_shovel",
-        "id": 316
+        "id": 333
     },
     {
         "name": "minecraft:wooden_slab",
-        "id": 745
+        "id": 768
     },
     {
         "name": "minecraft:wooden_sword",
-        "id": 315
+        "id": 332
     },
     {
         "name": "minecraft:wool",
-        "id": 726
+        "id": 749
     },
     {
         "name": "minecraft:writable_book",
-        "id": 527
+        "id": 544
     },
     {
         "name": "minecraft:written_book",
-        "id": 528
+        "id": 545
+    },
+    {
+        "name": "minecraft:yellow_bundle",
+        "id": 273
     },
     {
         "name": "minecraft:yellow_candle",
@@ -6849,7 +7101,7 @@
     },
     {
         "name": "minecraft:yellow_dye",
-        "id": 415
+        "id": 432
     },
     {
         "name": "minecraft:yellow_glazed_terracotta",
@@ -6877,22 +7129,26 @@
     },
     {
         "name": "minecraft:zoglin_spawn_egg",
-        "id": 509
+        "id": 526
+    },
+    {
+        "name": "minecraft:zombie_head",
+        "id": -966
     },
     {
         "name": "minecraft:zombie_horse_spawn_egg",
-        "id": 479
+        "id": 496
     },
     {
         "name": "minecraft:zombie_pigman_spawn_egg",
-        "id": 458
+        "id": 475
     },
     {
         "name": "minecraft:zombie_spawn_egg",
-        "id": 457
+        "id": 474
     },
     {
         "name": "minecraft:zombie_villager_spawn_egg",
-        "id": 488
+        "id": 505
     }
 ]
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 09943725b..0a099d23d 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -11,5 +11,5 @@ loom.ignoreDependencyLoomVersionValidation=true
 
 group=org.geysermc
 id=geyser
-version=2.5.0-SNAPSHOT
+version=2.5.1-SNAPSHOT
 description=Allows for players from Minecraft: Bedrock Edition to join Minecraft: Java Edition servers.
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 01fffb29f..994c9a811 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta5-20241022.154658-14"
-protocol-common = "3.0.0.Beta5-20241022.154658-14"
-protocol-codec = "3.0.0.Beta5-20241022.154658-14"
+protocol-connection = "3.0.0.Beta5-20241121.192504-18"
+protocol-common = "3.0.0.Beta5-20241121.192504-18"
+protocol-codec = "3.0.0.Beta5-20241121.192504-18"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.2-20241107.110329-3"

From 84faeba4b28f877707d56b662b8717ea37e3ffd6 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 3 Dec 2024 23:17:00 +0800
Subject: [PATCH 090/165] More item changes, remove/deprecate more tooltier
 usages, change stored map colors

---
 .../item/GeyserNonVanillaCustomItemData.java  |   2 +
 .../java/org/geysermc/geyser/item/Items.java  |  78 +--
 .../geyser/item/type/WolfArmorItem.java       |   2 +-
 .../org/geysermc/geyser/level/MapColor.java   | 509 +++++++++---------
 .../populator/ItemRegistryPopulator.java      |   8 +-
 .../registry/type/GeyserMappingItem.java      |   1 -
 6 files changed, 295 insertions(+), 305 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/item/GeyserNonVanillaCustomItemData.java b/core/src/main/java/org/geysermc/geyser/item/GeyserNonVanillaCustomItemData.java
index 9c9269df3..063a86a03 100644
--- a/core/src/main/java/org/geysermc/geyser/item/GeyserNonVanillaCustomItemData.java
+++ b/core/src/main/java/org/geysermc/geyser/item/GeyserNonVanillaCustomItemData.java
@@ -112,6 +112,7 @@ public final class GeyserNonVanillaCustomItemData extends GeyserCustomItemData i
         return toolType;
     }
 
+    @SuppressWarnings("removal")
     @Override
     public String toolTier() {
         return toolTier;
@@ -132,6 +133,7 @@ public final class GeyserNonVanillaCustomItemData extends GeyserCustomItemData i
         return translationString;
     }
 
+    @SuppressWarnings("removal")
     @Override
     public Set<String> repairMaterials() {
         return repairMaterials;
diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index 5cdb6c4ce..98450f476 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -43,7 +43,9 @@ import org.geysermc.geyser.item.type.FireworkStarItem;
 import org.geysermc.geyser.item.type.FishingRodItem;
 import org.geysermc.geyser.item.type.GoatHornItem;
 import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.item.type.LightItem;
 import org.geysermc.geyser.item.type.MapItem;
+import org.geysermc.geyser.item.type.OminousBottleItem;
 import org.geysermc.geyser.item.type.PlayerHeadItem;
 import org.geysermc.geyser.item.type.PotionItem;
 import org.geysermc.geyser.item.type.ShieldItem;
@@ -295,8 +297,8 @@ public final class Items {
     public static final Item RED_WOOL = register(new BlockItem(builder(), Blocks.RED_WOOL));
     public static final Item BLACK_WOOL = register(new BlockItem(builder(), Blocks.BLACK_WOOL));
     public static final Item DANDELION = register(new BlockItem(builder(), Blocks.DANDELION));
-//   TODO public static final Item OPEN_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.OPEN_EYEBLOSSOM));
-//   TODO public static final Item CLOSED_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.CLOSED_EYEBLOSSOM));
+    public static final Item OPEN_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.OPEN_EYEBLOSSOM));
+    public static final Item CLOSED_EYEBLOSSOM = register(new BlockItem(builder(), Blocks.CLOSED_EYEBLOSSOM));
     public static final Item POPPY = register(new BlockItem(builder(), Blocks.POPPY));
     public static final Item BLUE_ORCHID = register(new BlockItem(builder(), Blocks.BLUE_ORCHID));
     public static final Item ALLIUM = register(new BlockItem(builder(), Blocks.ALLIUM));
@@ -445,13 +447,13 @@ public final class Items {
     public static final Item MELON = register(new BlockItem(builder(), Blocks.MELON));
     public static final Item VINE = register(new BlockItem(builder(), Blocks.VINE));
     public static final Item GLOW_LICHEN = register(new BlockItem(builder(), Blocks.GLOW_LICHEN));
-    //TODO public static final Item RESIN_CLUMP = register(new BlockItem(builder(), Blocks.RESIN_CLUMP));
-    //TODO public static final Item RESIN_BLOCK = register(new BlockItem(builder(), Blocks.RESIN_BLOCK));
-    //TODO public static final Item RESIN_BRICKS = register(new BlockItem(builder(), Blocks.RESIN_BRICKS));
-    //TODO public static final Item RESIN_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.RESIN_BRICK_STAIRS));
-    //TODO public static final Item RESIN_BRICK_SLAB = register(new BlockItem(builder(), Blocks.RESIN_BRICK_SLAB));
-    //TODO public static final Item RESIN_BRICK_WALL = register(new BlockItem(builder(), Blocks.RESIN_BRICK_WALL));
-    //TODO public static final Item CHISELED_RESIN_BRICKS = register(new BlockItem(builder(), Blocks.CHISELED_RESIN_BRICKS));
+    public static final Item RESIN_CLUMP = register(new BlockItem(builder(), Blocks.RESIN_CLUMP));
+    public static final Item RESIN_BLOCK = register(new BlockItem(builder(), Blocks.RESIN_BLOCK));
+    public static final Item RESIN_BRICKS = register(new BlockItem(builder(), Blocks.RESIN_BRICKS));
+    public static final Item RESIN_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.RESIN_BRICK_STAIRS));
+    public static final Item RESIN_BRICK_SLAB = register(new BlockItem(builder(), Blocks.RESIN_BRICK_SLAB));
+    public static final Item RESIN_BRICK_WALL = register(new BlockItem(builder(), Blocks.RESIN_BRICK_WALL));
+    public static final Item CHISELED_RESIN_BRICKS = register(new BlockItem(builder(), Blocks.CHISELED_RESIN_BRICKS));
     public static final Item BRICK_STAIRS = register(new BlockItem(builder(), Blocks.BRICK_STAIRS));
     public static final Item STONE_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.STONE_BRICK_STAIRS));
     public static final Item MUD_BRICK_STAIRS = register(new BlockItem(builder(), Blocks.MUD_BRICK_STAIRS));
@@ -536,7 +538,7 @@ public final class Items {
     public static final Item RED_TERRACOTTA = register(new BlockItem(builder(), Blocks.RED_TERRACOTTA));
     public static final Item BLACK_TERRACOTTA = register(new BlockItem(builder(), Blocks.BLACK_TERRACOTTA));
     public static final Item BARRIER = register(new BlockItem(builder(), Blocks.BARRIER));
-    public static final Item LIGHT = register(new BlockItem(builder(), Blocks.LIGHT));
+    public static final Item LIGHT = register(new LightItem(builder(), Blocks.LIGHT));
     public static final Item HAY_BLOCK = register(new BlockItem(builder(), Blocks.HAY_BLOCK));
     public static final Item WHITE_CARPET = register(new BlockItem(builder(), Blocks.WHITE_CARPET));
     public static final Item ORANGE_CARPET = register(new BlockItem(builder(), Blocks.ORANGE_CARPET));
@@ -894,10 +896,10 @@ public final class Items {
     public static final Item BAMBOO_CHEST_RAFT = register(new BoatItem("bamboo_chest_raft", builder()));
     public static final Item STRUCTURE_BLOCK = register(new BlockItem(builder(), Blocks.STRUCTURE_BLOCK));
     public static final Item JIGSAW = register(new BlockItem(builder(), Blocks.JIGSAW));
-    public static final Item TURTLE_HELMET = register(new ArmorItem("turtle_helmet", ArmorMaterial.TURTLE, builder()));
+    public static final Item TURTLE_HELMET = register(new ArmorItem("turtle_helmet", builder()));
     public static final Item TURTLE_SCUTE = register(new Item("turtle_scute", builder()));
     public static final Item ARMADILLO_SCUTE = register(new Item("armadillo_scute", builder()));
-    public static final Item WOLF_ARMOR = register(new WolfArmorItem("wolf_armor", ArmorMaterial.ARMADILLO, builder()));
+    public static final Item WOLF_ARMOR = register(new WolfArmorItem("wolf_armor", builder()));
     public static final Item FLINT_AND_STEEL = register(new Item("flint_and_steel", builder()));
     public static final Item BOWL = register(new Item("bowl", builder()));
     public static final Item APPLE = register(new Item("apple", builder()));
@@ -956,30 +958,30 @@ public final class Items {
     public static final Item WHEAT_SEEDS = register(new BlockItem("wheat_seeds", builder(), Blocks.WHEAT));
     public static final Item WHEAT = register(new Item("wheat", builder()));
     public static final Item BREAD = register(new Item("bread", builder()));
-    public static final Item LEATHER_HELMET = register(new DyeableArmorItem("leather_helmet", ArmorMaterial.LEATHER, builder()));
-    public static final Item LEATHER_CHESTPLATE = register(new DyeableArmorItem("leather_chestplate", ArmorMaterial.LEATHER, builder()));
-    public static final Item LEATHER_LEGGINGS = register(new DyeableArmorItem("leather_leggings", ArmorMaterial.LEATHER, builder()));
-    public static final Item LEATHER_BOOTS = register(new DyeableArmorItem("leather_boots", ArmorMaterial.LEATHER, builder()));
-    public static final Item CHAINMAIL_HELMET = register(new ArmorItem("chainmail_helmet", ArmorMaterial.CHAINMAIL, builder()));
-    public static final Item CHAINMAIL_CHESTPLATE = register(new ArmorItem("chainmail_chestplate", ArmorMaterial.CHAINMAIL, builder()));
-    public static final Item CHAINMAIL_LEGGINGS = register(new ArmorItem("chainmail_leggings", ArmorMaterial.CHAINMAIL, builder()));
-    public static final Item CHAINMAIL_BOOTS = register(new ArmorItem("chainmail_boots", ArmorMaterial.CHAINMAIL, builder()));
-    public static final Item IRON_HELMET = register(new ArmorItem("iron_helmet", ArmorMaterial.IRON, builder()));
-    public static final Item IRON_CHESTPLATE = register(new ArmorItem("iron_chestplate", ArmorMaterial.IRON, builder()));
-    public static final Item IRON_LEGGINGS = register(new ArmorItem("iron_leggings", ArmorMaterial.IRON, builder()));
-    public static final Item IRON_BOOTS = register(new ArmorItem("iron_boots", ArmorMaterial.IRON, builder()));
-    public static final Item DIAMOND_HELMET = register(new ArmorItem("diamond_helmet", ArmorMaterial.DIAMOND, builder()));
-    public static final Item DIAMOND_CHESTPLATE = register(new ArmorItem("diamond_chestplate", ArmorMaterial.DIAMOND, builder()));
-    public static final Item DIAMOND_LEGGINGS = register(new ArmorItem("diamond_leggings", ArmorMaterial.DIAMOND, builder()));
-    public static final Item DIAMOND_BOOTS = register(new ArmorItem("diamond_boots", ArmorMaterial.DIAMOND, builder()));
-    public static final Item GOLDEN_HELMET = register(new ArmorItem("golden_helmet", ArmorMaterial.GOLD, builder()));
-    public static final Item GOLDEN_CHESTPLATE = register(new ArmorItem("golden_chestplate", ArmorMaterial.GOLD, builder()));
-    public static final Item GOLDEN_LEGGINGS = register(new ArmorItem("golden_leggings", ArmorMaterial.GOLD, builder()));
-    public static final Item GOLDEN_BOOTS = register(new ArmorItem("golden_boots", ArmorMaterial.GOLD, builder()));
-    public static final Item NETHERITE_HELMET = register(new ArmorItem("netherite_helmet", ArmorMaterial.NETHERITE, builder()));
-    public static final Item NETHERITE_CHESTPLATE = register(new ArmorItem("netherite_chestplate", ArmorMaterial.NETHERITE, builder()));
-    public static final Item NETHERITE_LEGGINGS = register(new ArmorItem("netherite_leggings", ArmorMaterial.NETHERITE, builder()));
-    public static final Item NETHERITE_BOOTS = register(new ArmorItem("netherite_boots", ArmorMaterial.NETHERITE, builder()));
+    public static final Item LEATHER_HELMET = register(new DyeableArmorItem("leather_helmet", builder()));
+    public static final Item LEATHER_CHESTPLATE = register(new DyeableArmorItem("leather_chestplate", builder()));
+    public static final Item LEATHER_LEGGINGS = register(new DyeableArmorItem("leather_leggings", builder()));
+    public static final Item LEATHER_BOOTS = register(new DyeableArmorItem("leather_boots", builder()));
+    public static final Item CHAINMAIL_HELMET = register(new ArmorItem("chainmail_helmet", builder()));
+    public static final Item CHAINMAIL_CHESTPLATE = register(new ArmorItem("chainmail_chestplate", builder()));
+    public static final Item CHAINMAIL_LEGGINGS = register(new ArmorItem("chainmail_leggings", builder()));
+    public static final Item CHAINMAIL_BOOTS = register(new ArmorItem("chainmail_boots", builder()));
+    public static final Item IRON_HELMET = register(new ArmorItem("iron_helmet", builder()));
+    public static final Item IRON_CHESTPLATE = register(new ArmorItem("iron_chestplate", builder()));
+    public static final Item IRON_LEGGINGS = register(new ArmorItem("iron_leggings", builder()));
+    public static final Item IRON_BOOTS = register(new ArmorItem("iron_boots", builder()));
+    public static final Item DIAMOND_HELMET = register(new ArmorItem("diamond_helmet", builder()));
+    public static final Item DIAMOND_CHESTPLATE = register(new ArmorItem("diamond_chestplate", builder()));
+    public static final Item DIAMOND_LEGGINGS = register(new ArmorItem("diamond_leggings", builder()));
+    public static final Item DIAMOND_BOOTS = register(new ArmorItem("diamond_boots", builder()));
+    public static final Item GOLDEN_HELMET = register(new ArmorItem("golden_helmet", builder()));
+    public static final Item GOLDEN_CHESTPLATE = register(new ArmorItem("golden_chestplate", builder()));
+    public static final Item GOLDEN_LEGGINGS = register(new ArmorItem("golden_leggings", builder()));
+    public static final Item GOLDEN_BOOTS = register(new ArmorItem("golden_boots", builder()));
+    public static final Item NETHERITE_HELMET = register(new ArmorItem("netherite_helmet", builder()));
+    public static final Item NETHERITE_CHESTPLATE = register(new ArmorItem("netherite_chestplate", builder()));
+    public static final Item NETHERITE_LEGGINGS = register(new ArmorItem("netherite_leggings", builder()));
+    public static final Item NETHERITE_BOOTS = register(new ArmorItem("netherite_boots", builder()));
     public static final Item FLINT = register(new Item("flint", builder()));
     public static final Item PORKCHOP = register(new Item("porkchop", builder()));
     public static final Item COOKED_PORKCHOP = register(new Item("cooked_porkchop", builder()));
@@ -1248,7 +1250,7 @@ public final class Items {
     public static final Item IRON_HORSE_ARMOR = register(new Item("iron_horse_armor", builder()));
     public static final Item GOLDEN_HORSE_ARMOR = register(new Item("golden_horse_armor", builder()));
     public static final Item DIAMOND_HORSE_ARMOR = register(new Item("diamond_horse_armor", builder()));
-    public static final Item LEATHER_HORSE_ARMOR = register(new Item("leather_horse_armor", builder()));
+    public static final Item LEATHER_HORSE_ARMOR = register(new DyeableArmorItem("leather_horse_armor", builder()));
     public static final Item LEAD = register(new Item("lead", builder()));
     public static final Item NAME_TAG = register(new Item("name_tag", builder()));
     public static final Item COMMAND_BLOCK_MINECART = register(new Item("command_block_minecart", builder()));
@@ -1453,7 +1455,7 @@ public final class Items {
     public static final Item TRIAL_KEY = register(new Item("trial_key", builder()));
     public static final Item OMINOUS_TRIAL_KEY = register(new Item("ominous_trial_key", builder()));
     public static final Item VAULT = register(new BlockItem(builder(), Blocks.VAULT));
-    public static final Item OMINOUS_BOTTLE = register(new Item("ominous_bottle", builder()));
+    public static final Item OMINOUS_BOTTLE = register(new OminousBottleItem("ominous_bottle", builder()));
 
     public static final int AIR_ID = AIR.javaId();
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java
index 52ded0407..41c72f532 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/WolfArmorItem.java
@@ -30,7 +30,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
-public class WolfArmorItem extends ArmorItem {
+public class WolfArmorItem extends Item {
     public WolfArmorItem(String javaIdentifier, Builder builder) {
         super(javaIdentifier, builder);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/level/MapColor.java b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
index d84788db2..4b891e9b7 100644
--- a/core/src/main/java/org/geysermc/geyser/level/MapColor.java
+++ b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
@@ -26,268 +26,261 @@
 package org.geysermc.geyser.level;
 
 public enum MapColor {
-    COLOR_0(-1, -1, -1),
-    COLOR_1(-1, -1, -1),
-    COLOR_2(-1, -1, -1),
-    COLOR_3(-1, -1, -1),
-    COLOR_4(39, 125, 89),
-    COLOR_5(48, 153, 109),
-    COLOR_6(56, 178, 127),
-    COLOR_7(29, 94, 67),
-    COLOR_8(115, 164, 174),
-    COLOR_9(140, 201, 213),
-    COLOR_10(163, 233, 247),
-    COLOR_11(86, 123, 130),
-    COLOR_12(140, 140, 140),
-    COLOR_13(171, 171, 171),
-    COLOR_14(199, 199, 199),
-    COLOR_15(105, 105, 105),
-    COLOR_16(0, 0, 180),
-    COLOR_17(0, 0, 220),
-    COLOR_18(0, 0, 255),
-    COLOR_19(0, 0, 135),
-    COLOR_20(180, 112, 112),
-    COLOR_21(220, 138, 138),
-    COLOR_22(255, 160, 160),
-    COLOR_23(135, 84, 84),
-    COLOR_24(117, 117, 117),
-    COLOR_25(144, 144, 144),
-    COLOR_26(167, 167, 167),
-    COLOR_27(88, 88, 88),
-    COLOR_28(0, 87, 0),
-    COLOR_29(0, 106, 0),
-    COLOR_30(0, 124, 0),
-    COLOR_31(0, 65, 0),
-    COLOR_32(180, 180, 180),
-    COLOR_33(220, 220, 220),
-    COLOR_34(255, 255, 255),
-    COLOR_35(135, 135, 135),
-    COLOR_36(129, 118, 115),
-    COLOR_37(158, 144, 141),
-    COLOR_38(184, 168, 164),
-    COLOR_39(97, 88, 86),
-    COLOR_40(54, 76, 106),
-    COLOR_41(66, 94, 130),
-    COLOR_42(77, 109, 151),
-    COLOR_43(40, 57, 79),
-    COLOR_44(79, 79, 79),
-    COLOR_45(96, 96, 96),
-    COLOR_46(112, 112, 112),
-    COLOR_47(59, 59, 59),
-    COLOR_48(180, 45, 45),
-    COLOR_49(220, 55, 55),
-    COLOR_50(255, 64, 64),
-    COLOR_51(135, 33, 33),
-    COLOR_52(50, 84, 100),
-    COLOR_53(62, 102, 123),
-    COLOR_54(72, 119, 143),
-    COLOR_55(38, 63, 75),
-    COLOR_56(172, 177, 180),
-    COLOR_57(211, 217, 220),
-    COLOR_58(245, 252, 255),
-    COLOR_59(129, 133, 135),
-    COLOR_60(36, 89, 152),
-    COLOR_61(44, 109, 186),
-    COLOR_62(51, 127, 216),
-    COLOR_63(27, 67, 114),
-    COLOR_64(152, 53, 125),
-    COLOR_65(186, 65, 153),
-    COLOR_66(216, 76, 178),
-    COLOR_67(114, 40, 94),
-    COLOR_68(152, 108, 72),
-    COLOR_69(186, 132, 88),
-    COLOR_70(216, 153, 102),
-    COLOR_71(114, 81, 54),
-    COLOR_72(36, 161, 161),
-    COLOR_73(44, 197, 197),
-    COLOR_74(51, 229, 229),
-    COLOR_75(27, 121, 121),
-    COLOR_76(17, 144, 89),
-    COLOR_77(21, 176, 109),
-    COLOR_78(25, 204, 127),
-    COLOR_79(13, 108, 67),
-    COLOR_80(116, 89, 170),
-    COLOR_81(142, 109, 208),
-    COLOR_82(165, 127, 242),
-    COLOR_83(87, 67, 128),
-    COLOR_84(53, 53, 53),
-    COLOR_85(65, 65, 65),
-    COLOR_86(76, 76, 76),
-    COLOR_87(40, 40, 40),
-    COLOR_88(108, 108, 108),
-    COLOR_89(132, 132, 132),
-    COLOR_90(153, 153, 153),
-    COLOR_91(81, 81, 81),
-    COLOR_92(108, 89, 53),
-    COLOR_93(132, 109, 65),
-    COLOR_94(153, 127, 76),
-    COLOR_95(81, 67, 40),
-    COLOR_96(125, 44, 89),
-    COLOR_97(153, 54, 109),
-    COLOR_98(178, 63, 127),
-    COLOR_99(94, 33, 67),
-    COLOR_100(125, 53, 36),
-    COLOR_101(153, 65, 44),
-    COLOR_102(178, 76, 51),
-    COLOR_103(94, 40, 27),
-    COLOR_104(36, 53, 72),
-    COLOR_105(44, 65, 88),
-    COLOR_106(51, 76, 102),
-    COLOR_107(27, 40, 54),
-    COLOR_108(36, 89, 72),
-    COLOR_109(44, 109, 88),
-    COLOR_110(51, 127, 102),
-    COLOR_111(27, 67, 54),
-    COLOR_112(36, 36, 108),
-    COLOR_113(44, 44, 132),
-    COLOR_114(51, 51, 153),
-    COLOR_115(27, 27, 81),
-    COLOR_116(17, 17, 17),
-    COLOR_117(21, 21, 21),
-    COLOR_118(25, 25, 25),
-    COLOR_119(13, 13, 13),
-    COLOR_120(54, 168, 176),
-    COLOR_121(66, 205, 215),
-    COLOR_122(77, 238, 250),
-    COLOR_123(40, 126, 132),
-    COLOR_124(150, 154, 64),
-    COLOR_125(183, 188, 79),
-    COLOR_126(213, 219, 92),
-    COLOR_127(112, 115, 48),
-    COLOR_128(180, 90, 52),
-    COLOR_129(220, 110, 63),
-    COLOR_130(255, 128, 74),
-    COLOR_131(135, 67, 39),
-    COLOR_132(40, 153, 0),
-    COLOR_133(50, 187, 0),
-    COLOR_134(58, 217, 0),
-    COLOR_135(30, 114, 0),
-    COLOR_136(34, 60, 91),
-    COLOR_137(42, 74, 111),
-    COLOR_138(49, 86, 129),
-    COLOR_139(25, 45, 68),
-    COLOR_140(0, 1, 79),
-    COLOR_141(0, 1, 96),
-    COLOR_142(0, 2, 112),
-    COLOR_143(0, 1, 59),
-    COLOR_144(113, 124, 147),
-    COLOR_145(138, 152, 180),
-    COLOR_146(161, 177, 209),
-    COLOR_147(85, 93, 110),
-    COLOR_148(25, 57, 112),
-    COLOR_149(31, 70, 137),
-    COLOR_150(36, 82, 159),
-    COLOR_151(19, 43, 84),
-    COLOR_152(76, 61, 105),
-    COLOR_153(93, 75, 128),
-    COLOR_154(108, 87, 149),
-    COLOR_155(57, 46, 78),
-    COLOR_156(97, 76, 79),
-    COLOR_157(119, 93, 96),
-    COLOR_158(138, 108, 112),
-    COLOR_159(73, 57, 59),
-    COLOR_160(25, 93, 131),
-    COLOR_161(31, 114, 160),
-    COLOR_162(36, 133, 186),
-    COLOR_163(19, 70, 98),
-    COLOR_164(37, 82, 72),
-    COLOR_165(45, 100, 88),
-    COLOR_166(53, 117, 103),
-    COLOR_167(28, 61, 54),
-    COLOR_168(55, 54, 112),
-    COLOR_169(67, 66, 138),
-    COLOR_170(78, 77, 160),
-    COLOR_171(41, 40, 84),
-    COLOR_172(24, 28, 40),
-    COLOR_173(30, 35, 49),
-    COLOR_174(35, 41, 57),
-    COLOR_175(18, 21, 30),
-    COLOR_176(69, 75, 95),
-    COLOR_177(84, 92, 116),
-    COLOR_178(98, 107, 135),
-    COLOR_179(51, 56, 71),
-    COLOR_180(64, 64, 61),
-    COLOR_181(79, 79, 75),
-    COLOR_182(92, 92, 87),
-    COLOR_183(48, 48, 46),
-    COLOR_184(62, 51, 86),
-    COLOR_185(75, 62, 105),
-    COLOR_186(88, 73, 122),
-    COLOR_187(46, 38, 64),
-    COLOR_188(64, 43, 53),
-    COLOR_189(79, 53, 65),
-    COLOR_190(92, 62, 76),
-    COLOR_191(48, 32, 40),
-    COLOR_192(24, 35, 53),
-    COLOR_193(30, 43, 65),
-    COLOR_194(35, 50, 76),
-    COLOR_195(18, 26, 40),
-    COLOR_196(29, 57, 53),
-    COLOR_197(36, 70, 65),
-    COLOR_198(42, 82, 76),
-    COLOR_199(22, 43, 40),
-    COLOR_200(32, 42, 100),
-    COLOR_201(39, 51, 122),
-    COLOR_202(46, 60, 142),
-    COLOR_203(24, 31, 75),
-    COLOR_204(11, 15, 26),
-    COLOR_205(13, 18, 31),
-    COLOR_206(16, 22, 37),
-    COLOR_207(8, 11, 19),
-    COLOR_208(34, 33, 133),
-    COLOR_209(42, 41, 163),
-    COLOR_210(49, 48, 189),
-    COLOR_211(25, 25, 100),
-    COLOR_212(68, 44, 104),
-    COLOR_213(83, 54, 127),
-    COLOR_214(97, 63, 148),
-    COLOR_215(51, 33, 78),
-    COLOR_216(20, 17, 64),
-    COLOR_217(25, 21, 79),
-    COLOR_218(29, 25, 92),
-    COLOR_219(15, 13, 48),
-    COLOR_220(94, 88, 15),
-    COLOR_221(115, 108, 18),
-    COLOR_222(134, 126, 22),
-    COLOR_223(70, 66, 11),
-    COLOR_224(98, 100, 40),
-    COLOR_225(120, 122, 50),
-    COLOR_226(140, 142, 58),
-    COLOR_227(74, 75, 30),
-    COLOR_228(43, 31, 60),
-    COLOR_229(53, 37, 74),
-    COLOR_230(62, 44, 86),
-    COLOR_231(32, 23, 45),
-    COLOR_232(93, 127, 14),
-    COLOR_233(114, 155, 17),
-    COLOR_234(133, 180, 20),
-    COLOR_235(70, 95, 10),
-    COLOR_236(70, 70, 70),
-    COLOR_237(86, 86, 86),
-    COLOR_238(100, 100, 100),
-    COLOR_239(52, 52, 52),
-    COLOR_240(103, 123, 152),
-    COLOR_241(126, 150, 186),
-    COLOR_242(147, 175, 216),
-    COLOR_243(77, 92, 114),
-    COLOR_244(105, 117, 89),
-    COLOR_245(129, 144, 109),
-    COLOR_246(150, 167, 127),
-    COLOR_247(79, 88, 67);
+    COLOR_0(0),
+    COLOR_1(0),
+    COLOR_2(0),
+    COLOR_3(0),
+    COLOR_4(-10912473),
+    COLOR_5(-9594576),
+    COLOR_6(-8408520),
+    COLOR_7(-12362211),
+    COLOR_8(-5331853),
+    COLOR_9(-2766452),
+    COLOR_10(-530013),
+    COLOR_11(-8225962),
+    COLOR_12(-7566196),
+    COLOR_13(-5526613),
+    COLOR_14(-3684409),
+    COLOR_15(-9868951),
+    COLOR_16(-4980736),
+    COLOR_17(-2359296),
+    COLOR_18(-65536),
+    COLOR_19(-7929856),
+    COLOR_20(-9408332),
+    COLOR_21(-7697700),
+    COLOR_22(-6250241),
+    COLOR_23(-11250553),
+    COLOR_24(-9079435),
+    COLOR_25(-7303024),
+    COLOR_26(-5789785),
+    COLOR_27(-10987432),
+    COLOR_28(-16754944),
+    COLOR_29(-16750080),
+    COLOR_30(-16745472),
+    COLOR_31(-16760576),
+    COLOR_32(-4934476),
+    COLOR_33(-2302756),
+    COLOR_34(-1),
+    COLOR_35(-7895161),
+    COLOR_36(-9210239),
+    COLOR_37(-7499618),
+    COLOR_38(-5986120),
+    COLOR_39(-11118495),
+    COLOR_40(-9810890),
+    COLOR_41(-8233406),
+    COLOR_42(-6853299),
+    COLOR_43(-11585240),
+    COLOR_44(-11579569),
+    COLOR_45(-10461088),
+    COLOR_46(-9408400),
+    COLOR_47(-12895429),
+    COLOR_48(-13816396),
+    COLOR_49(-13158436),
+    COLOR_50(-12566273),
+    COLOR_51(-14605945),
+    COLOR_52(-10202062),
+    COLOR_53(-8690114),
+    COLOR_54(-7375032),
+    COLOR_55(-11845850),
+    COLOR_56(-4935252),
+    COLOR_57(-2303533),
+    COLOR_58(-779),
+    COLOR_59(-7895679),
+    COLOR_60(-6792924),
+    COLOR_61(-4559572),
+    COLOR_62(-2588877),
+    COLOR_63(-9288933),
+    COLOR_64(-8571496),
+    COLOR_65(-6733382),
+    COLOR_66(-5092136),
+    COLOR_67(-10606478),
+    COLOR_68(-12030824),
+    COLOR_69(-10976070),
+    COLOR_70(-10053160),
+    COLOR_71(-13217422),
+    COLOR_72(-6184668),
+    COLOR_73(-3816148),
+    COLOR_74(-1710797),
+    COLOR_75(-8816357),
+    COLOR_76(-10907631),
+    COLOR_77(-9588715),
+    COLOR_78(-8401895),
+    COLOR_79(-12358643),
+    COLOR_80(-5613196),
+    COLOR_81(-3117682),
+    COLOR_82(-884827),
+    COLOR_83(-8371369),
+    COLOR_84(-13290187),
+    COLOR_85(-12500671),
+    COLOR_86(-11776948),
+    COLOR_87(-14145496),
+    COLOR_88(-9671572),
+    COLOR_89(-8092540),
+    COLOR_90(-6710887),
+    COLOR_91(-11447983),
+    COLOR_92(-13280916),
+    COLOR_93(-12489340),
+    COLOR_94(-11763815),
+    COLOR_95(-14138543),
+    COLOR_96(-10933123),
+    COLOR_97(-9619815),
+    COLOR_98(-8437838),
+    COLOR_99(-12377762),
+    COLOR_100(-14404227),
+    COLOR_101(-13876839),
+    COLOR_102(-13415246),
+    COLOR_103(-14997410),
+    COLOR_104(-12045020),
+    COLOR_105(-10993364),
+    COLOR_106(-10073037),
+    COLOR_107(-13228005),
+    COLOR_108(-12035804),
+    COLOR_109(-10982100),
+    COLOR_110(-10059981),
+    COLOR_111(-13221093),
+    COLOR_112(-9690076),
+    COLOR_113(-8115156),
+    COLOR_114(-6737101),
+    COLOR_115(-11461861),
+    COLOR_116(-15658735),
+    COLOR_117(-15395563),
+    COLOR_118(-15132391),
+    COLOR_119(-15921907),
+    COLOR_120(-5199818),
+    COLOR_121(-2634430),
+    COLOR_122(-332211),
+    COLOR_123(-8094168),
+    COLOR_124(-12543338),
+    COLOR_125(-11551561),
+    COLOR_126(-10691627),
+    COLOR_127(-13601936),
+    COLOR_128(-13346124),
+    COLOR_129(-12620068),
+    COLOR_130(-11894529),
+    COLOR_131(-14204025),
+    COLOR_132(-16738008),
+    COLOR_133(-16729294),
+    COLOR_134(-16721606),
+    COLOR_135(-16748002),
+    COLOR_136(-10798046),
+    COLOR_137(-9483734),
+    COLOR_138(-8301007),
+    COLOR_139(-12309223),
+    COLOR_140(-11599616),
+    COLOR_141(-10485504),
+    COLOR_142(-9436672),
+    COLOR_143(-12910336),
+    COLOR_144(-7111567),
+    COLOR_145(-4941686),
+    COLOR_146(-3034719),
+    COLOR_147(-9544363),
+    COLOR_148(-9422567),
+    COLOR_149(-7780833),
+    COLOR_150(-6335964),
+    COLOR_151(-11261165),
+    COLOR_152(-9880244),
+    COLOR_153(-8369315),
+    COLOR_154(-6989972),
+    COLOR_155(-11653575),
+    COLOR_156(-11580319),
+    COLOR_157(-10461833),
+    COLOR_158(-9409398),
+    COLOR_159(-12895927),
+    COLOR_160(-8168167),
+    COLOR_161(-6262241),
+    COLOR_162(-4553436),
+    COLOR_163(-10336749),
+    COLOR_164(-12037595),
+    COLOR_165(-10984403),
+    COLOR_166(-9997003),
+    COLOR_167(-13222628),
+    COLOR_168(-9423305),
+    COLOR_169(-7716285),
+    COLOR_170(-6271666),
+    COLOR_171(-11261911),
+    COLOR_172(-14148584),
+    COLOR_173(-13556962),
+    COLOR_174(-13031133),
+    COLOR_175(-14805742),
+    COLOR_176(-10532027),
+    COLOR_177(-9151404),
+    COLOR_178(-7902366),
+    COLOR_179(-12109773),
+    COLOR_180(-12763072),
+    COLOR_181(-11841713),
+    COLOR_182(-11051940),
+    COLOR_183(-13750224),
+    COLOR_184(-11128002),
+    COLOR_185(-9879989),
+    COLOR_186(-8763048),
+    COLOR_187(-12573138),
+    COLOR_188(-13292736),
+    COLOR_189(-12503729),
+    COLOR_190(-11780516),
+    COLOR_191(-14147536),
+    COLOR_192(-13294824),
+    COLOR_193(-12506338),
+    COLOR_194(-11783645),
+    COLOR_195(-14149102),
+    COLOR_196(-13289187),
+    COLOR_197(-12499420),
+    COLOR_198(-11775446),
+    COLOR_199(-14144746),
+    COLOR_200(-10212832),
+    COLOR_201(-8768729),
+    COLOR_202(-7455698),
+    COLOR_203(-11854056),
+    COLOR_204(-15069429),
+    COLOR_205(-14740979),
+    COLOR_206(-14346736),
+    COLOR_207(-15529208),
+    COLOR_208(-8052446),
+    COLOR_209(-6084310),
+    COLOR_210(-4378575),
+    COLOR_211(-10217191),
+    COLOR_212(-9950140),
+    COLOR_213(-8440237),
+    COLOR_214(-7061663),
+    COLOR_215(-11656909),
+    COLOR_216(-12578540),
+    COLOR_217(-11594471),
+    COLOR_218(-10741475),
+    COLOR_219(-13628145),
+    COLOR_220(-15771554),
+    COLOR_221(-15569805),
+    COLOR_222(-15303034),
+    COLOR_223(-16039354),
+    COLOR_224(-14130078),
+    COLOR_225(-13469064),
+    COLOR_226(-12939636),
+    COLOR_227(-14791862),
+    COLOR_228(-12837077),
+    COLOR_229(-11918027),
+    COLOR_230(-11129794),
+    COLOR_231(-13822176),
+    COLOR_232(-15827107),
+    COLOR_233(-15623310),
+    COLOR_234(-15420283),
+    COLOR_235(-16097466),
+    COLOR_236(-12171706),
+    COLOR_237(-11119018),
+    COLOR_238(-10197916),
+    COLOR_239(-13355980),
+    COLOR_240(-6784153),
+    COLOR_241(-4548994),
+    COLOR_242(-2576493),
+    COLOR_243(-9282483),
+    COLOR_244(-10914455),
+    COLOR_245(-9596799),
+    COLOR_246(-8411242),
+    COLOR_247(-12363697);
 
     private static final MapColor[] VALUES = values();
 
     private final int value;
 
-    MapColor(int red, int green, int blue) {
-        int alpha = 255;
-        if (red == -1 && green == -1 && blue == -1)
-            alpha = 0; // transparent
-
-        this.value = ((alpha & 0xFF) << 24) |
-                ((red & 0xFF) << 16) |
-                ((green & 0xFF) << 8) |
-                (blue & 0xFF);
+    MapColor(int value) {
+        this.value = value;
     }
 
     public static MapColor fromId(int id) {
@@ -297,4 +290,4 @@ public enum MapColor {
     public int getARGB() {
         return value;
     }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index c49ecad1d..a94cf132d 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -425,13 +425,7 @@ public class ItemRegistryPopulator {
                         .javaItem(javaItem);
 
                 if (mappingItem.getToolType() != null) {
-                    if (mappingItem.getToolTier() != null) {
-                        mappingBuilder = mappingBuilder.toolType(mappingItem.getToolType().intern())
-                                .toolTier(mappingItem.getToolTier().intern());
-                    } else {
-                        mappingBuilder = mappingBuilder.toolType(mappingItem.getToolType().intern())
-                                .toolTier("");
-                    }
+                    mappingBuilder = mappingBuilder.toolType(mappingItem.getToolType().intern());
                 }
 
                 if (javaOnlyItems.contains(javaItem) || javaItem.defaultRarity() != Rarity.COMMON) {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/GeyserMappingItem.java b/core/src/main/java/org/geysermc/geyser/registry/type/GeyserMappingItem.java
index ab8c52bf6..ae682e8b5 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/GeyserMappingItem.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/GeyserMappingItem.java
@@ -48,7 +48,6 @@ public class GeyserMappingItem {
     Integer firstBlockRuntimeId;
     Integer lastBlockRuntimeId;
     @JsonProperty("tool_type") String toolType;
-    @JsonProperty("tool_tier") String toolTier;
     @JsonProperty("armor_type") String armorType;
     @JsonProperty("protection_value") int protectionValue;
     @JsonProperty("is_edible") boolean edible = false;

From be77e6b2bfefd686f51a676030eb6d084452463f Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 4 Dec 2024 00:01:54 +0800
Subject: [PATCH 091/165] Load default item components

---
 .../java/org/geysermc/geyser/item/Items.java  |  5 --
 .../org/geysermc/geyser/item/type/Item.java   | 12 +--
 .../geysermc/geyser/registry/Registries.java  |  5 ++
 .../DataComponentRegistryPopulator.java       | 89 +++++++++++++++++++
 .../translator/item/ItemTranslator.java       |  5 +-
 5 files changed, 101 insertions(+), 15 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java

diff --git a/core/src/main/java/org/geysermc/geyser/item/Items.java b/core/src/main/java/org/geysermc/geyser/item/Items.java
index 98450f476..664c956c3 100644
--- a/core/src/main/java/org/geysermc/geyser/item/Items.java
+++ b/core/src/main/java/org/geysermc/geyser/item/Items.java
@@ -66,11 +66,6 @@ import static org.geysermc.geyser.item.type.Item.builder;
  */
 @SuppressWarnings("unused")
 public final class Items {
-
-    static {
-        // Load data components here
-    }
-
     public static final Item AIR = register(new Item("air", builder()));
     public static final Item STONE = register(new BlockItem(builder(), Blocks.STONE));
     public static final Item GRANITE = register(new BlockItem(builder(), Blocks.GRANITE));
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index fde742efa..9b2603284 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -40,6 +40,7 @@ import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
@@ -65,12 +66,9 @@ public class Item {
     private final int attackDamage;
     private final DataComponents baseComponents; // unmodifiable
 
-    private final List<Item> enchantmentGlintPresent = List.of(Items.ENCHANTED_GOLDEN_APPLE, Items.EXPERIENCE_BOTTLE, Items.WRITTEN_BOOK,
-        Items.NETHER_STAR, Items.ENCHANTED_BOOK, Items.END_CRYSTAL);
-
     public Item(String javaIdentifier, Builder builder) {
         this.javaIdentifier = MinecraftKey.key(javaIdentifier);
-        this.baseComponents = builder.components;
+        this.baseComponents = builder.components == null ? Registries.DEFAULT_DATA_COMPONENTS.get(javaId) : builder.components;
         this.attackDamage = builder.attackDamage;
     }
 
@@ -297,7 +295,7 @@ public class Item {
     }
 
     public static Builder builder() {
-        return new Builder().components(new DataComponents(ImmutableMap.of())); // TODO actually set components here
+        return new Builder();
     }
 
     public static final class Builder {
@@ -315,10 +313,6 @@ public class Item {
             return this;
         }
 
-        public DataComponents components() {
-            return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
-        }
-
         private Builder() {
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/Registries.java b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
index 61bb42454..fc41275ae 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/Registries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/Registries.java
@@ -47,6 +47,7 @@ import org.geysermc.geyser.registry.loader.RegistryLoaders;
 import org.geysermc.geyser.registry.loader.SoundEventsRegistryLoader;
 import org.geysermc.geyser.registry.loader.SoundRegistryLoader;
 import org.geysermc.geyser.registry.loader.SoundTranslatorRegistryLoader;
+import org.geysermc.geyser.registry.populator.DataComponentRegistryPopulator;
 import org.geysermc.geyser.registry.populator.ItemRegistryPopulator;
 import org.geysermc.geyser.registry.populator.PacketRegistryPopulator;
 import org.geysermc.geyser.registry.populator.TagRegistryPopulator;
@@ -60,6 +61,7 @@ import org.geysermc.geyser.translator.sound.SoundInteractionTranslator;
 import org.geysermc.geyser.translator.sound.SoundTranslator;
 import org.geysermc.mcprotocollib.network.packet.Packet;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityType;
 import org.geysermc.mcprotocollib.protocol.data.game.level.event.LevelEvent;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
@@ -139,6 +141,8 @@ public final class Registries {
      */
     public static final SimpleMappedRegistry<String, Item> JAVA_ITEM_IDENTIFIERS = SimpleMappedRegistry.create(RegistryLoaders.empty(Object2ObjectOpenHashMap::new));
 
+    public static final ListRegistry<DataComponents> DEFAULT_DATA_COMPONENTS = ListRegistry.create(RegistryLoaders.empty(ArrayList::new));
+
     /**
      * A versioned registry which holds {@link ItemMappings} for each version. These item mappings contain
      * primarily Bedrock version-specific data.
@@ -209,6 +213,7 @@ public final class Registries {
 
     public static void populate() {
         PacketRegistryPopulator.populate();
+        DataComponentRegistryPopulator.populate();
         ItemRegistryPopulator.populate();
         TagRegistryPopulator.populate();
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
new file mode 100644
index 000000000..0c89760b1
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry.populator;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import it.unimi.dsi.fastutil.objects.ObjectArrayList;
+import org.geysermc.geyser.GeyserBootstrap;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemCodecHelper;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public final class DataComponentRegistryPopulator {
+
+    public static void populate() {
+        GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
+        List<DataComponents> defaultComponents;
+        try (InputStream stream = bootstrap.getResourceOrThrow("mappings/item_data_components.json")) {
+            JsonElement rootElement = JsonParser.parseReader(new InputStreamReader(stream));
+            JsonArray jsonArray = rootElement.getAsJsonArray();
+
+            defaultComponents = new ObjectArrayList<>(jsonArray.size());
+
+            for (JsonElement element : jsonArray) {
+                JsonObject entryObject = element.getAsJsonObject();
+                JsonObject components = entryObject.getAsJsonObject("components");
+
+                Map<DataComponentType<?>, DataComponent<?, ?>> map = new HashMap<>();
+
+                for (Map.Entry<String, JsonElement> componentEntry : components.entrySet()) {
+                    String encodedValue = componentEntry.getValue().getAsString();
+                    byte[] bytes = Base64.getDecoder().decode(encodedValue);
+                    ByteBuf buf = Unpooled.wrappedBuffer(bytes);
+                    MinecraftCodecHelper helper = new MinecraftCodecHelper();
+                    int varInt = helper.readVarInt(buf);
+                    DataComponentType<?> dataComponentType = DataComponentType.from(varInt);
+                    DataComponent<?, ?> dataComponent = dataComponentType.readDataComponent(ItemCodecHelper.INSTANCE, buf);
+
+                    map.put(dataComponentType, dataComponent);
+                }
+
+                defaultComponents.add(new DataComponents(ImmutableMap.copyOf(map)));
+            }
+        } catch (Exception e) {
+            throw new AssertionError("Unable to load or parse components", e);
+        }
+
+        Registries.DEFAULT_DATA_COMPONENTS.set(defaultComponents);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 376957d67..54bbe086c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -102,6 +102,9 @@ public final class ItemTranslator {
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.BODY, "body");
     }
 
+    private final static List<Item> GLINT_PRESENT = List.of(Items.ENCHANTED_GOLDEN_APPLE, Items.EXPERIENCE_BOTTLE, Items.WRITTEN_BOOK,
+        Items.NETHER_STAR, Items.ENCHANTED_BOOK, Items.END_CRYSTAL);
+
     private ItemTranslator() {
     }
 
@@ -180,7 +183,7 @@ public final class ItemTranslator {
         }
 
         // Add enchantment override. We can't remove it - enchantments would stop showing - but we can add it.
-        if (components.getOrDefault(DataComponentType.ENCHANTMENT_GLINT_OVERRIDE, false)) {
+        if (components.getOrDefault(DataComponentType.ENCHANTMENT_GLINT_OVERRIDE, false) && !GLINT_PRESENT.contains(javaItem)) {
             NbtMapBuilder nbtMapBuilder = nbtBuilder.getOrCreateNbt();
             nbtMapBuilder.putIfAbsent("ench", NbtList.EMPTY);
         }

From d114ab9ad1e71098c7e9956e1f2ca475eff9d291 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 4 Dec 2024 00:43:06 +0800
Subject: [PATCH 092/165] send ServerboundPlayerLoadedPacket, update
 built-in-tags

---
 .../geyser/session/cache/tags/BlockTag.java   |  6 ++--
 .../geyser/session/cache/tags/ItemTag.java    | 32 +++++++++++++++++--
 ...SetLocalPlayerAsInitializedTranslator.java |  2 ++
 3 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java
index 6ad666780..59d301a89 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/BlockTag.java
@@ -56,6 +56,7 @@ public final class BlockTag {
     public static final Tag<Block> OVERWORLD_NATURAL_LOGS = create("overworld_natural_logs");
     public static final Tag<Block> LOGS = create("logs");
     public static final Tag<Block> DARK_OAK_LOGS = create("dark_oak_logs");
+    public static final Tag<Block> PALE_OAK_LOGS = create("pale_oak_logs");
     public static final Tag<Block> OAK_LOGS = create("oak_logs");
     public static final Tag<Block> BIRCH_LOGS = create("birch_logs");
     public static final Tag<Block> ACACIA_LOGS = create("acacia_logs");
@@ -80,8 +81,8 @@ public final class BlockTag {
     public static final Tag<Block> SMALL_FLOWERS = create("small_flowers");
     public static final Tag<Block> BEDS = create("beds");
     public static final Tag<Block> FENCES = create("fences");
-    public static final Tag<Block> TALL_FLOWERS = create("tall_flowers");
     public static final Tag<Block> FLOWERS = create("flowers");
+    public static final Tag<Block> BEE_ATTRACTIVE = create("bee_attractive");
     public static final Tag<Block> PIGLIN_REPELLENTS = create("piglin_repellents");
     public static final Tag<Block> GOLD_ORES = create("gold_ores");
     public static final Tag<Block> IRON_ORES = create("iron_ores");
@@ -97,6 +98,7 @@ public final class BlockTag {
     public static final Tag<Block> BADLANDS_TERRACOTTA = create("badlands_terracotta");
     public static final Tag<Block> CONCRETE_POWDER = create("concrete_powder");
     public static final Tag<Block> COMPLETES_FIND_TREE_TUTORIAL = create("completes_find_tree_tutorial");
+    public static final Tag<Block> SHULKER_BOXES = create("shulker_boxes");
     public static final Tag<Block> FLOWER_POTS = create("flower_pots");
     public static final Tag<Block> ENDERMAN_HOLDABLE = create("enderman_holdable");
     public static final Tag<Block> ICE = create("ice");
@@ -130,7 +132,6 @@ public final class BlockTag {
     public static final Tag<Block> WALL_POST_OVERRIDE = create("wall_post_override");
     public static final Tag<Block> CLIMBABLE = create("climbable");
     public static final Tag<Block> FALL_DAMAGE_RESETTING = create("fall_damage_resetting");
-    public static final Tag<Block> SHULKER_BOXES = create("shulker_boxes");
     public static final Tag<Block> HOGLIN_REPELLENTS = create("hoglin_repellents");
     public static final Tag<Block> SOUL_FIRE_BASE_BLOCKS = create("soul_fire_base_blocks");
     public static final Tag<Block> STRIDER_WARM_BLOCKS = create("strider_warm_blocks");
@@ -198,6 +199,7 @@ public final class BlockTag {
     public static final Tag<Block> FOXES_SPAWNABLE_ON = create("foxes_spawnable_on");
     public static final Tag<Block> WOLVES_SPAWNABLE_ON = create("wolves_spawnable_on");
     public static final Tag<Block> FROGS_SPAWNABLE_ON = create("frogs_spawnable_on");
+    public static final Tag<Block> BATS_SPAWNABLE_ON = create("bats_spawnable_on");
     public static final Tag<Block> AZALEA_GROWS_ON = create("azalea_grows_on");
     public static final Tag<Block> CONVERTABLE_TO_MUD = create("convertable_to_mud");
     public static final Tag<Block> MANGROVE_LOGS_CAN_GROW_THROUGH = create("mangrove_logs_can_grow_through");
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java
index 4f42f146a..e2f4f2db3 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/ItemTag.java
@@ -53,6 +53,7 @@ public final class ItemTag {
     public static final Tag<Item> LOGS_THAT_BURN = create("logs_that_burn");
     public static final Tag<Item> LOGS = create("logs");
     public static final Tag<Item> DARK_OAK_LOGS = create("dark_oak_logs");
+    public static final Tag<Item> PALE_OAK_LOGS = create("pale_oak_logs");
     public static final Tag<Item> OAK_LOGS = create("oak_logs");
     public static final Tag<Item> BIRCH_LOGS = create("birch_logs");
     public static final Tag<Item> ACACIA_LOGS = create("acacia_logs");
@@ -77,11 +78,13 @@ public final class ItemTag {
     public static final Tag<Item> SMALL_FLOWERS = create("small_flowers");
     public static final Tag<Item> BEDS = create("beds");
     public static final Tag<Item> FENCES = create("fences");
-    public static final Tag<Item> TALL_FLOWERS = create("tall_flowers");
-    public static final Tag<Item> FLOWERS = create("flowers");
     public static final Tag<Item> PIGLIN_REPELLENTS = create("piglin_repellents");
     public static final Tag<Item> PIGLIN_LOVED = create("piglin_loved");
     public static final Tag<Item> IGNORED_BY_PIGLIN_BABIES = create("ignored_by_piglin_babies");
+    public static final Tag<Item> PIGLIN_SAFE_ARMOR = create("piglin_safe_armor");
+    public static final Tag<Item> DUPLICATES_ALLAYS = create("duplicates_allays");
+    public static final Tag<Item> BREWING_FUEL = create("brewing_fuel");
+    public static final Tag<Item> SHULKER_BOXES = create("shulker_boxes");
     public static final Tag<Item> MEAT = create("meat");
     public static final Tag<Item> SNIFFER_FOOD = create("sniffer_food");
     public static final Tag<Item> PIGLIN_FOOD = create("piglin_food");
@@ -103,6 +106,7 @@ public final class ItemTag {
     public static final Tag<Item> LLAMA_TEMPT_ITEMS = create("llama_tempt_items");
     public static final Tag<Item> OCELOT_FOOD = create("ocelot_food");
     public static final Tag<Item> PANDA_FOOD = create("panda_food");
+    public static final Tag<Item> PANDA_EATS_FROM_GROUND = create("panda_eats_from_ground");
     public static final Tag<Item> PIG_FOOD = create("pig_food");
     public static final Tag<Item> RABBIT_FOOD = create("rabbit_food");
     public static final Tag<Item> STRIDER_FOOD = create("strider_food");
@@ -135,7 +139,20 @@ public final class ItemTag {
     public static final Tag<Item> LECTERN_BOOKS = create("lectern_books");
     public static final Tag<Item> BOOKSHELF_BOOKS = create("bookshelf_books");
     public static final Tag<Item> BEACON_PAYMENT_ITEMS = create("beacon_payment_items");
+    public static final Tag<Item> WOODEN_TOOL_MATERIALS = create("wooden_tool_materials");
     public static final Tag<Item> STONE_TOOL_MATERIALS = create("stone_tool_materials");
+    public static final Tag<Item> IRON_TOOL_MATERIALS = create("iron_tool_materials");
+    public static final Tag<Item> GOLD_TOOL_MATERIALS = create("gold_tool_materials");
+    public static final Tag<Item> DIAMOND_TOOL_MATERIALS = create("diamond_tool_materials");
+    public static final Tag<Item> NETHERITE_TOOL_MATERIALS = create("netherite_tool_materials");
+    public static final Tag<Item> REPAIRS_LEATHER_ARMOR = create("repairs_leather_armor");
+    public static final Tag<Item> REPAIRS_CHAIN_ARMOR = create("repairs_chain_armor");
+    public static final Tag<Item> REPAIRS_IRON_ARMOR = create("repairs_iron_armor");
+    public static final Tag<Item> REPAIRS_GOLD_ARMOR = create("repairs_gold_armor");
+    public static final Tag<Item> REPAIRS_DIAMOND_ARMOR = create("repairs_diamond_armor");
+    public static final Tag<Item> REPAIRS_NETHERITE_ARMOR = create("repairs_netherite_armor");
+    public static final Tag<Item> REPAIRS_TURTLE_HELMET = create("repairs_turtle_helmet");
+    public static final Tag<Item> REPAIRS_WOLF_ARMOR = create("repairs_wolf_armor");
     public static final Tag<Item> STONE_CRAFTING_MATERIALS = create("stone_crafting_materials");
     public static final Tag<Item> FREEZE_IMMUNE_WEARABLES = create("freeze_immune_wearables");
     public static final Tag<Item> DAMPENS_VIBRATIONS = create("dampens_vibrations");
@@ -151,7 +168,6 @@ public final class ItemTag {
     public static final Tag<Item> SKULLS = create("skulls");
     public static final Tag<Item> TRIMMABLE_ARMOR = create("trimmable_armor");
     public static final Tag<Item> TRIM_MATERIALS = create("trim_materials");
-    public static final Tag<Item> TRIM_TEMPLATES = create("trim_templates");
     public static final Tag<Item> DECORATED_POT_SHERDS = create("decorated_pot_sherds");
     public static final Tag<Item> DECORATED_POT_INGREDIENTS = create("decorated_pot_ingredients");
     public static final Tag<Item> SWORDS = create("swords");
@@ -161,7 +177,15 @@ public final class ItemTag {
     public static final Tag<Item> SHOVELS = create("shovels");
     public static final Tag<Item> BREAKS_DECORATED_POTS = create("breaks_decorated_pots");
     public static final Tag<Item> VILLAGER_PLANTABLE_SEEDS = create("villager_plantable_seeds");
+    public static final Tag<Item> VILLAGER_PICKS_UP = create("villager_picks_up");
     public static final Tag<Item> DYEABLE = create("dyeable");
+    public static final Tag<Item> FURNACE_MINECART_FUEL = create("furnace_minecart_fuel");
+    public static final Tag<Item> BUNDLES = create("bundles");
+    public static final Tag<Item> SKELETON_PREFERRED_WEAPONS = create("skeleton_preferred_weapons");
+    public static final Tag<Item> DROWNED_PREFERRED_WEAPONS = create("drowned_preferred_weapons");
+    public static final Tag<Item> PIGLIN_PREFERRED_WEAPONS = create("piglin_preferred_weapons");
+    public static final Tag<Item> PILLAGER_PREFERRED_WEAPONS = create("pillager_preferred_weapons");
+    public static final Tag<Item> WITHER_SKELETON_DISLIKED_WEAPONS = create("wither_skeleton_disliked_weapons");
     public static final Tag<Item> ENCHANTABLE_FOOT_ARMOR = create("enchantable/foot_armor");
     public static final Tag<Item> ENCHANTABLE_LEG_ARMOR = create("enchantable/leg_armor");
     public static final Tag<Item> ENCHANTABLE_CHEST_ARMOR = create("enchantable/chest_armor");
@@ -181,6 +205,8 @@ public final class ItemTag {
     public static final Tag<Item> ENCHANTABLE_CROSSBOW = create("enchantable/crossbow");
     public static final Tag<Item> ENCHANTABLE_VANISHING = create("enchantable/vanishing");
     public static final Tag<Item> ENCHANTABLE_MACE = create("enchantable/mace");
+    public static final Tag<Item> MAP_INVISIBILITY_EQUIPMENT = create("map_invisibility_equipment");
+    public static final Tag<Item> GAZE_DISGUISE_EQUIPMENT = create("gaze_disguise_equipment");
 
     private ItemTag() {}
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
index 47c5bfd35..556d8cd8d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
@@ -34,6 +34,7 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.LoginEncryptionUtils;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundPlayerLoadedPacket;
 
 @Translator(packet = SetLocalPlayerAsInitializedPacket.class)
 public class BedrockSetLocalPlayerAsInitializedTranslator extends PacketTranslator<SetLocalPlayerAsInitializedPacket> {
@@ -72,6 +73,7 @@ public class BedrockSetLocalPlayerAsInitializedTranslator extends PacketTranslat
                     session.getFormCache().resendAllForms();
 
                     GeyserImpl.getInstance().eventBus().fire(new SessionJoinEvent(session));
+                    session.sendDownstreamGamePacket(ServerboundPlayerLoadedPacket.INSTANCE);
                 }
             }
         }

From db246ffb3b98bf367fbc1c964f304bc75b404143 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 4 Dec 2024 01:28:29 +0800
Subject: [PATCH 093/165] Update Properties/Blocks, re-include neoforge, target
 1.21.4 release

---
 .../GeyserSpigotNativeWorldManager.java       |  1 -
 .../geysermc/geyser/level/block/Blocks.java   | 73 +++++++++++++------
 .../level/block/property/Properties.java      | 13 ++--
 .../inventory/AnvilInventoryTranslator.java   |  2 +-
 .../inventory/BaseInventoryTranslator.java    |  2 +-
 .../inventory/BeaconInventoryTranslator.java  |  2 +-
 .../inventory/BrewingInventoryTranslator.java |  4 +-
 .../CartographyInventoryTranslator.java       |  2 +-
 .../inventory/CrafterInventoryTranslator.java |  2 +-
 .../CraftingInventoryTranslator.java          |  4 +-
 .../EnchantingInventoryTranslator.java        |  4 +-
 .../GrindstoneInventoryTranslator.java        |  2 +-
 .../inventory/LoomInventoryTranslator.java    |  2 +-
 .../MerchantInventoryTranslator.java          |  2 +-
 .../inventory/OldSmithingTableTranslator.java |  4 +-
 .../inventory/PlayerInventoryTranslator.java  |  8 +-
 .../SmithingInventoryTranslator.java          |  2 +-
 .../StonecutterInventoryTranslator.java       |  2 +-
 .../ChestedHorseInventoryTranslator.java      |  4 +-
 .../horse/HorseInventoryTranslator.java       |  2 +-
 .../entity/JavaSetEquipmentTranslator.java    |  4 +-
 .../org/geysermc/geyser/util/BlockUtils.java  | 49 +------------
 gradle/libs.versions.toml                     |  6 +-
 settings.gradle.kts                           |  4 +-
 24 files changed, 94 insertions(+), 106 deletions(-)

diff --git a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotNativeWorldManager.java b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotNativeWorldManager.java
index c99ca4e78..96ae41933 100644
--- a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotNativeWorldManager.java
+++ b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/world/manager/GeyserSpigotNativeWorldManager.java
@@ -33,7 +33,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.adapters.WorldAdapter;
 import org.geysermc.geyser.adapters.paper.PaperAdapters;
 import org.geysermc.geyser.adapters.spigot.SpigotAdapters;
-import org.geysermc.geyser.level.block.BlockStateValues;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
 
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java b/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java
index 5db38c559..7dc526ee3 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/Blocks.java
@@ -398,9 +398,10 @@ public final class Blocks {
         .booleanState(WEST)));
     public static final Block SOUL_FIRE = register(new Block("soul_fire", builder().pushReaction(PistonBehavior.DESTROY)));
     public static final Block SPAWNER = register(new SpawnerBlock("spawner", builder().setBlockEntity(BlockEntityType.MOB_SPAWNER).requiresCorrectToolForDrops().destroyTime(5.0f)));
-    public static final Block CREAKING_HEART = register(new Block("creaking_heart", builder().setBlockEntity(BlockEntityType.CREAKING_HEART).destroyTime(5.0f)
+    public static final Block CREAKING_HEART = register(new Block("creaking_heart", builder().setBlockEntity(BlockEntityType.CREAKING_HEART).destroyTime(10.0f)
+        .booleanState(ACTIVE)
         .enumState(AXIS, Axis.VALUES)
-        .enumState(CREAKING)));
+        .booleanState(NATURAL)));
     public static final Block OAK_STAIRS = register(new Block("oak_stairs", builder().destroyTime(2.0f)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(HALF)
@@ -592,9 +593,9 @@ public final class Blocks {
         .enumState(ATTACH_FACE)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .booleanState(POWERED)));
-    public static final Block STONE_PRESSURE_PLATE = register(new Block("stone_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block STONE_PRESSURE_PLATE = register(new Block("stone_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
         .booleanState(POWERED)));
-    public static final Block IRON_DOOR = register(new DoorBlock("iron_door", builder().requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block IRON_DOOR = register(new DoorBlock("iron_door", builder().destroyTime(5.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
@@ -822,6 +823,14 @@ public final class Blocks {
         .booleanState(UP)
         .booleanState(WATERLOGGED)
         .booleanState(WEST)));
+    public static final Block RESIN_CLUMP = register(new Block("resin_clump", builder().pushReaction(PistonBehavior.DESTROY)
+        .booleanState(DOWN)
+        .booleanState(EAST)
+        .booleanState(NORTH)
+        .booleanState(SOUTH)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .booleanState(WEST)));
     public static final Block OAK_FENCE_GATE = register(new Block("oak_fence_gate", builder().destroyTime(2.0f)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .booleanState(IN_WALL)
@@ -845,6 +854,24 @@ public final class Blocks {
     public static final Block MYCELIUM = register(new Block("mycelium", builder().destroyTime(0.6f)
         .booleanState(SNOWY)));
     public static final Block LILY_PAD = register(new Block("lily_pad", builder().pushReaction(PistonBehavior.DESTROY)));
+    public static final Block RESIN_BLOCK = register(new Block("resin_block", builder()));
+    public static final Block RESIN_BRICKS = register(new Block("resin_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
+    public static final Block RESIN_BRICK_STAIRS = register(new Block("resin_brick_stairs", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
+        .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
+        .enumState(HALF)
+        .enumState(STAIRS_SHAPE)
+        .booleanState(WATERLOGGED)));
+    public static final Block RESIN_BRICK_SLAB = register(new Block("resin_brick_slab", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
+        .enumState(SLAB_TYPE)
+        .booleanState(WATERLOGGED)));
+    public static final Block RESIN_BRICK_WALL = register(new Block("resin_brick_wall", builder().requiresCorrectToolForDrops().destroyTime(1.5f)
+        .enumState(EAST_WALL)
+        .enumState(NORTH_WALL)
+        .enumState(SOUTH_WALL)
+        .booleanState(UP)
+        .booleanState(WATERLOGGED)
+        .enumState(WEST_WALL)));
+    public static final Block CHISELED_RESIN_BRICKS = register(new Block("chiseled_resin_bricks", builder().requiresCorrectToolForDrops().destroyTime(1.5f)));
     public static final Block NETHER_BRICKS = register(new Block("nether_bricks", builder().requiresCorrectToolForDrops().destroyTime(2.0f)));
     public static final Block NETHER_BRICK_FENCE = register(new Block("nether_brick_fence", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
         .booleanState(EAST)
@@ -860,7 +887,7 @@ public final class Blocks {
     public static final Block NETHER_WART = register(new Block("nether_wart", builder().pushReaction(PistonBehavior.DESTROY)
         .intState(AGE_3)));
     public static final Block ENCHANTING_TABLE = register(new Block("enchanting_table", builder().setBlockEntity(BlockEntityType.ENCHANTING_TABLE).requiresCorrectToolForDrops().destroyTime(5.0f)));
-    public static final Block BREWING_STAND = register(new Block("brewing_stand", builder().setBlockEntity(BlockEntityType.BREWING_STAND).requiresCorrectToolForDrops().destroyTime(0.5f)
+    public static final Block BREWING_STAND = register(new Block("brewing_stand", builder().setBlockEntity(BlockEntityType.BREWING_STAND).destroyTime(0.5f)
         .booleanState(HAS_BOTTLE_0)
         .booleanState(HAS_BOTTLE_1)
         .booleanState(HAS_BOTTLE_2)));
@@ -888,7 +915,7 @@ public final class Blocks {
         .booleanState(WATERLOGGED)));
     public static final Block EMERALD_ORE = register(new Block("emerald_ore", builder().requiresCorrectToolForDrops().destroyTime(3.0f)));
     public static final Block DEEPSLATE_EMERALD_ORE = register(new Block("deepslate_emerald_ore", builder().requiresCorrectToolForDrops().destroyTime(4.5f)));
-    public static final Block ENDER_CHEST = register(new Block("ender_chest", builder().setBlockEntity(BlockEntityType.ENDER_CHEST).requiresCorrectToolForDrops().destroyTime(22.5f)
+    public static final Block ENDER_CHEST = register(new Block("ender_chest", builder().setBlockEntity(BlockEntityType.ENDER_CHEST).destroyTime(22.5f)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .booleanState(WATERLOGGED)));
     public static final Block TRIPWIRE_HOOK = register(new Block("tripwire_hook", builder().pushReaction(PistonBehavior.DESTROY)
@@ -1062,9 +1089,9 @@ public final class Blocks {
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(CHEST_TYPE, ChestType.VALUES)
         .booleanState(WATERLOGGED)));
-    public static final Block LIGHT_WEIGHTED_PRESSURE_PLATE = register(new Block("light_weighted_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block LIGHT_WEIGHTED_PRESSURE_PLATE = register(new Block("light_weighted_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
         .intState(POWER)));
-    public static final Block HEAVY_WEIGHTED_PRESSURE_PLATE = register(new Block("heavy_weighted_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block HEAVY_WEIGHTED_PRESSURE_PLATE = register(new Block("heavy_weighted_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
         .intState(POWER)));
     public static final Block COMPARATOR = register(new Block("comparator", builder().setBlockEntity(BlockEntityType.COMPARATOR).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
@@ -2096,14 +2123,14 @@ public final class Blocks {
     public static final Block SMITHING_TABLE = register(new Block("smithing_table", builder().destroyTime(2.5f)));
     public static final Block STONECUTTER = register(new Block("stonecutter", builder().requiresCorrectToolForDrops().destroyTime(3.5f)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)));
-    public static final Block BELL = register(new Block("bell", builder().setBlockEntity(BlockEntityType.BELL).requiresCorrectToolForDrops().destroyTime(5.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block BELL = register(new Block("bell", builder().setBlockEntity(BlockEntityType.BELL).destroyTime(5.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(BELL_ATTACHMENT)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .booleanState(POWERED)));
-    public static final Block LANTERN = register(new Block("lantern", builder().requiresCorrectToolForDrops().destroyTime(3.5f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block LANTERN = register(new Block("lantern", builder().destroyTime(3.5f).pushReaction(PistonBehavior.DESTROY)
         .booleanState(HANGING)
         .booleanState(WATERLOGGED)));
-    public static final Block SOUL_LANTERN = register(new Block("soul_lantern", builder().requiresCorrectToolForDrops().destroyTime(3.5f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block SOUL_LANTERN = register(new Block("soul_lantern", builder().destroyTime(3.5f).pushReaction(PistonBehavior.DESTROY)
         .booleanState(HANGING)
         .booleanState(WATERLOGGED)));
     public static final Block CAMPFIRE = register(new Block("campfire", builder().setBlockEntity(BlockEntityType.CAMPFIRE).destroyTime(2.0f)
@@ -2307,7 +2334,7 @@ public final class Blocks {
     public static final Block POLISHED_BLACKSTONE_SLAB = register(new Block("polished_blackstone_slab", builder().requiresCorrectToolForDrops().destroyTime(2.0f)
         .enumState(SLAB_TYPE)
         .booleanState(WATERLOGGED)));
-    public static final Block POLISHED_BLACKSTONE_PRESSURE_PLATE = register(new Block("polished_blackstone_pressure_plate", builder().requiresCorrectToolForDrops().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block POLISHED_BLACKSTONE_PRESSURE_PLATE = register(new Block("polished_blackstone_pressure_plate", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
         .booleanState(POWERED)));
     public static final Block POLISHED_BLACKSTONE_BUTTON = register(new Block("polished_blackstone_button", builder().destroyTime(0.5f).pushReaction(PistonBehavior.DESTROY)
         .enumState(ATTACH_FACE)
@@ -2606,49 +2633,49 @@ public final class Blocks {
     public static final Block WAXED_CUT_COPPER_SLAB = register(new Block("waxed_cut_copper_slab", builder().requiresCorrectToolForDrops().destroyTime(3.0f)
         .enumState(SLAB_TYPE)
         .booleanState(WATERLOGGED)));
-    public static final Block COPPER_DOOR = register(new DoorBlock("copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block COPPER_DOOR = register(new DoorBlock("copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block EXPOSED_COPPER_DOOR = register(new DoorBlock("exposed_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block EXPOSED_COPPER_DOOR = register(new DoorBlock("exposed_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block OXIDIZED_COPPER_DOOR = register(new DoorBlock("oxidized_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block OXIDIZED_COPPER_DOOR = register(new DoorBlock("oxidized_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block WEATHERED_COPPER_DOOR = register(new DoorBlock("weathered_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block WEATHERED_COPPER_DOOR = register(new DoorBlock("weathered_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block WAXED_COPPER_DOOR = register(new DoorBlock("waxed_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block WAXED_COPPER_DOOR = register(new DoorBlock("waxed_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block WAXED_EXPOSED_COPPER_DOOR = register(new DoorBlock("waxed_exposed_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block WAXED_EXPOSED_COPPER_DOOR = register(new DoorBlock("waxed_exposed_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block WAXED_OXIDIZED_COPPER_DOOR = register(new DoorBlock("waxed_oxidized_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block WAXED_OXIDIZED_COPPER_DOOR = register(new DoorBlock("waxed_oxidized_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
         .booleanState(OPEN)
         .booleanState(POWERED)));
-    public static final Block WAXED_WEATHERED_COPPER_DOOR = register(new DoorBlock("waxed_weathered_copper_door", builder().requiresCorrectToolForDrops().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block WAXED_WEATHERED_COPPER_DOOR = register(new DoorBlock("waxed_weathered_copper_door", builder().destroyTime(3.0f).pushReaction(PistonBehavior.DESTROY)
         .enumState(HORIZONTAL_FACING, Direction.NORTH, Direction.SOUTH, Direction.WEST, Direction.EAST)
         .enumState(DOUBLE_BLOCK_HALF)
         .enumState(DOOR_HINGE)
@@ -2888,8 +2915,12 @@ public final class Blocks {
         .enumState(NORTH_WALL)
         .enumState(SOUTH_WALL)
         .enumState(WEST_WALL)));
-    public static final Block PALE_HANGING_MOSS = register(new Block("pale_hanging_moss", builder().destroyTime(0.1f).pushReaction(PistonBehavior.DESTROY)
+    public static final Block PALE_HANGING_MOSS = register(new Block("pale_hanging_moss", builder().pushReaction(PistonBehavior.DESTROY)
         .booleanState(TIP)));
+    public static final Block OPEN_EYEBLOSSOM = register(new Block("open_eyeblossom", builder().pushReaction(PistonBehavior.DESTROY)));
+    public static final Block CLOSED_EYEBLOSSOM = register(new Block("closed_eyeblossom", builder().pushReaction(PistonBehavior.DESTROY)));
+    public static final Block POTTED_OPEN_EYEBLOSSOM = register(new FlowerPotBlock("potted_open_eyeblossom", OPEN_EYEBLOSSOM, builder().pushReaction(PistonBehavior.DESTROY)));
+    public static final Block POTTED_CLOSED_EYEBLOSSOM = register(new FlowerPotBlock("potted_closed_eyeblossom", CLOSED_EYEBLOSSOM, builder().pushReaction(PistonBehavior.DESTROY)));
 
     private static <T extends Block> T register(T block) {
         block.setJavaId(BlockRegistries.JAVA_BLOCKS.get().size());
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java b/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java
index 3e5f1b510..f295c4f51 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/property/Properties.java
@@ -29,8 +29,12 @@ import org.geysermc.geyser.level.physics.Axis;
 import org.geysermc.geyser.level.physics.Direction;
 
 public final class Properties {
+    public static final BooleanProperty ACTIVE = BooleanProperty.create("active");
     public static final BooleanProperty ATTACHED = BooleanProperty.create("attached");
+    public static final BooleanProperty BERRIES = BooleanProperty.create("berries");
+    public static final BooleanProperty BLOOM = BooleanProperty.create("bloom");
     public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom");
+    public static final BooleanProperty CAN_SUMMON = BooleanProperty.create("can_summon");
     public static final BooleanProperty CONDITIONAL = BooleanProperty.create("conditional");
     public static final BooleanProperty DISARMED = BooleanProperty.create("disarmed");
     public static final BooleanProperty DRAG = BooleanProperty.create("drag");
@@ -47,22 +51,20 @@ public final class Properties {
     public static final BooleanProperty INVERTED = BooleanProperty.create("inverted");
     public static final BooleanProperty IN_WALL = BooleanProperty.create("in_wall");
     public static final BooleanProperty LIT = BooleanProperty.create("lit");
-    public static final BooleanProperty TIP = BooleanProperty.create("tip");
     public static final BooleanProperty LOCKED = BooleanProperty.create("locked");
+    public static final BooleanProperty NATURAL = BooleanProperty.create("natural");
     public static final BooleanProperty OCCUPIED = BooleanProperty.create("occupied");
     public static final BooleanProperty OPEN = BooleanProperty.create("open");
     public static final BooleanProperty PERSISTENT = BooleanProperty.create("persistent");
     public static final BooleanProperty POWERED = BooleanProperty.create("powered");
     public static final BooleanProperty SHORT = BooleanProperty.create("short");
+    public static final BooleanProperty SHRIEKING = BooleanProperty.create("shrieking");
     public static final BooleanProperty SIGNAL_FIRE = BooleanProperty.create("signal_fire");
     public static final BooleanProperty SNOWY = BooleanProperty.create("snowy");
+    public static final BooleanProperty TIP = BooleanProperty.create("tip");
     public static final BooleanProperty TRIGGERED = BooleanProperty.create("triggered");
     public static final BooleanProperty UNSTABLE = BooleanProperty.create("unstable");
     public static final BooleanProperty WATERLOGGED = BooleanProperty.create("waterlogged");
-    public static final BooleanProperty BERRIES = BooleanProperty.create("berries");
-    public static final BooleanProperty BLOOM = BooleanProperty.create("bloom");
-    public static final BooleanProperty SHRIEKING = BooleanProperty.create("shrieking");
-    public static final BooleanProperty CAN_SUMMON = BooleanProperty.create("can_summon");
     public static final EnumProperty<Axis> HORIZONTAL_AXIS = EnumProperty.create("axis", Axis.X, Axis.Z);
     public static final EnumProperty<Axis> AXIS = EnumProperty.create("axis", Axis.VALUES);
     public static final BooleanProperty UP = BooleanProperty.create("up");
@@ -143,6 +145,5 @@ public final class Properties {
     public static final BooleanProperty CRAFTING = BooleanProperty.create("crafting");
     public static final BasicEnumProperty TRIAL_SPAWNER_STATE = BasicEnumProperty.create("trial_spawner_state", "inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown");
     public static final BasicEnumProperty VAULT_STATE = BasicEnumProperty.create("vault_state", "inactive", "active", "unlocking", "ejecting");
-    public static final BasicEnumProperty CREAKING = BasicEnumProperty.create("creaking", "disabled", "dormant", "active");
     public static final BooleanProperty OMINOUS = BooleanProperty.create("ominous");
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java
index 40ee28362..cbc8ce7bd 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java
@@ -73,7 +73,7 @@ public class AnvilInventoryTranslator extends AbstractBlockInventoryTranslator {
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case ANVIL_INPUT -> 0;
             case ANVIL_MATERIAL -> 1;
             case ANVIL_RESULT, CREATED_OUTPUT -> 2;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BaseInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BaseInventoryTranslator.java
index f70bad9ea..fd6d9a930 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BaseInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BaseInventoryTranslator.java
@@ -44,7 +44,7 @@ public abstract class BaseInventoryTranslator extends InventoryTranslator {
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
         int slotnum = slotInfoData.getSlot();
-        switch (slotInfoData.getContainer()) {
+        switch (slotInfoData.getContainerName().getContainer()) {
             case HOTBAR_AND_INVENTORY:
             case HOTBAR:
             case INVENTORY:
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java
index ceae1b640..6edbd925e 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java
@@ -121,7 +121,7 @@ public class BeaconInventoryTranslator extends AbstractBlockInventoryTranslator
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        if (slotInfoData.getContainer() == ContainerSlotType.BEACON_PAYMENT) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.BEACON_PAYMENT) {
             return 0;
         }
         return super.bedrockSlotToJava(slotInfoData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java
index e425342f3..5147fb75d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java
@@ -74,11 +74,11 @@ public class BrewingInventoryTranslator extends AbstractBlockInventoryTranslator
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        if (slotInfoData.getContainer() == ContainerSlotType.BREWING_INPUT) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.BREWING_INPUT) {
             // Ingredient
             return 3;
         }
-        if (slotInfoData.getContainer() == ContainerSlotType.BREWING_RESULT) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.BREWING_RESULT) {
             // Potions
             return slotInfoData.getSlot() - 1;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java
index b0914e5dd..65fc7b35c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java
@@ -56,7 +56,7 @@ public class CartographyInventoryTranslator extends AbstractBlockInventoryTransl
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case CARTOGRAPHY_INPUT -> 0;
             case CARTOGRAPHY_ADDITIONAL -> 1;
             case CARTOGRAPHY_RESULT, CREATED_OUTPUT -> 2;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java
index 8b0a0ac44..83076640a 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java
@@ -77,7 +77,7 @@ public class CrafterInventoryTranslator extends AbstractBlockInventoryTranslator
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
         int slot = slotInfoData.getSlot();
-        switch (slotInfoData.getContainer()) {
+        switch (slotInfoData.getContainerName().getContainer()) {
             case HOTBAR_AND_INVENTORY, HOTBAR, INVENTORY -> {
                 //hotbar
                 if (slot >= 9) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java
index 4a0f1d7d9..577d87fe5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java
@@ -64,12 +64,12 @@ public class CraftingInventoryTranslator extends AbstractBlockInventoryTranslato
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        if (slotInfoData.getContainer() == ContainerSlotType.CRAFTING_INPUT) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.CRAFTING_INPUT) {
             // Java goes from 1 - 9, left to right then up to down
             // Bedrock is the same, but it starts from 32.
             return slotInfoData.getSlot() - 31;
         }
-        if (slotInfoData.getContainer() == ContainerSlotType.CRAFTING_OUTPUT || slotInfoData.getContainer() == ContainerSlotType.CREATED_OUTPUT) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.CRAFTING_OUTPUT || slotInfoData.getContainerName().getContainer() == ContainerSlotType.CREATED_OUTPUT) {
             return 0;
         }
         return super.bedrockSlotToJava(slotInfoData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java
index b51d86d13..eb0e351e1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java
@@ -135,10 +135,10 @@ public class EnchantingInventoryTranslator extends AbstractBlockInventoryTransla
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        if (slotInfoData.getContainer() == ContainerSlotType.ENCHANTING_INPUT) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.ENCHANTING_INPUT) {
             return 0;
         }
-        if (slotInfoData.getContainer() == ContainerSlotType.ENCHANTING_MATERIAL) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.ENCHANTING_MATERIAL) {
             return 1;
         }
         return super.bedrockSlotToJava(slotInfoData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java
index 5344d27cb..d3283de40 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java
@@ -39,7 +39,7 @@ public class GrindstoneInventoryTranslator extends AbstractBlockInventoryTransla
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case GRINDSTONE_INPUT -> 0;
             case GRINDSTONE_ADDITIONAL -> 1;
             case GRINDSTONE_RESULT, CREATED_OUTPUT -> 2;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
index 7cdcbe8a9..e294442f9 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
@@ -169,7 +169,7 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case LOOM_INPUT -> 0;
             case LOOM_DYE -> 1;
             case LOOM_MATERIAL -> 2;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java
index 7a7646503..c67b3b190 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java
@@ -77,7 +77,7 @@ public class MerchantInventoryTranslator extends BaseInventoryTranslator {
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case TRADE2_INGREDIENT_1 -> 0;
             case TRADE2_INGREDIENT_2 -> 1;
             case TRADE2_RESULT, CREATED_OUTPUT -> 2;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
index 38bb6ddcd..fc9c4f587 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
@@ -63,7 +63,7 @@ public class OldSmithingTableTranslator extends AbstractBlockInventoryTranslator
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case SMITHING_TABLE_INPUT -> 0;
             case SMITHING_TABLE_MATERIAL -> 1;
             case SMITHING_TABLE_RESULT, CREATED_OUTPUT -> 2;
@@ -130,7 +130,7 @@ public class OldSmithingTableTranslator extends AbstractBlockInventoryTranslator
     }
 
     private boolean isInvalidAction(ItemStackRequestSlotData slotData) {
-        return slotData.getContainer().equals(ContainerSlotType.SMITHING_TABLE_TEMPLATE);
+        return slotData.getContainerName().getContainer().equals(ContainerSlotType.SMITHING_TABLE_TEMPLATE);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index f08b90765..445b4715b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -184,7 +184,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
         int slotnum = slotInfoData.getSlot();
-        switch (slotInfoData.getContainer()) {
+        switch (slotInfoData.getContainerName().getContainer()) {
             case HOTBAR_AND_INVENTORY:
             case HOTBAR:
             case INVENTORY:
@@ -462,7 +462,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                     }
                     craftState = CraftState.TRANSFER;
 
-                    if (transferAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
+                    if (transferAction.getSource().getContainerName().getContainer() != ContainerSlotType.CREATED_OUTPUT) {
                         return rejectRequest(request);
                     }
 
@@ -495,7 +495,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                     }
 
                     DropAction dropAction = (DropAction) action;
-                    if (dropAction.getSource().getContainer() != ContainerSlotType.CREATED_OUTPUT || dropAction.getSource().getSlot() != 50) {
+                    if (dropAction.getSource().getContainerName().getContainer() != ContainerSlotType.CREATED_OUTPUT || dropAction.getSource().getSlot() != 50) {
                         return rejectRequest(request);
                     }
 
@@ -532,7 +532,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
     }
 
     private static boolean isCraftingGrid(ItemStackRequestSlotData slotInfoData) {
-        return slotInfoData.getContainer() == ContainerSlotType.CRAFTING_INPUT;
+        return slotInfoData.getContainerName().getContainer() == ContainerSlotType.CRAFTING_INPUT;
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
index dbe24230a..2a9e974f3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
@@ -44,7 +44,7 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case SMITHING_TABLE_TEMPLATE -> TEMPLATE;
             case SMITHING_TABLE_INPUT -> INPUT;
             case SMITHING_TABLE_MATERIAL -> MATERIAL;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java
index b977ee1a1..df7e15fef 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java
@@ -84,7 +84,7 @@ public class StonecutterInventoryTranslator extends AbstractBlockInventoryTransl
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        return switch (slotInfoData.getContainer()) {
+        return switch (slotInfoData.getContainerName().getContainer()) {
             case STONECUTTER_INPUT -> 0;
             case STONECUTTER_RESULT, CREATED_OUTPUT -> 1;
             default -> super.bedrockSlotToJava(slotInfoData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
index f1a5723c8..1a65ad982 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/ChestedHorseInventoryTranslator.java
@@ -53,10 +53,10 @@ public abstract class ChestedHorseInventoryTranslator extends AbstractHorseInven
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        if (slotInfoData.getContainer() == ContainerSlotType.HORSE_EQUIP) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.HORSE_EQUIP) {
             return this.equipSlot;
         }
-        if (slotInfoData.getContainer() == ContainerSlotType.LEVEL_ENTITY) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.LEVEL_ENTITY) {
             return slotInfoData.getSlot() + 1;
         }
         return super.bedrockSlotToJava(slotInfoData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/HorseInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/HorseInventoryTranslator.java
index 84d7744d1..af09d5f61 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/HorseInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/HorseInventoryTranslator.java
@@ -36,7 +36,7 @@ public class HorseInventoryTranslator extends AbstractHorseInventoryTranslator {
 
     @Override
     public int bedrockSlotToJava(ItemStackRequestSlotData slotInfoData) {
-        if (slotInfoData.getContainer() == ContainerSlotType.HORSE_EQUIP) {
+        if (slotInfoData.getContainerName().getContainer() == ContainerSlotType.HORSE_EQUIP) {
             return slotInfoData.getSlot();
         }
         return super.bedrockSlotToJava(slotInfoData);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
index e1ff7a5fc..cdadb1bb9 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.translator.protocol.java.entity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.LivingEntity;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
+import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.skin.FakeHeadProvider;
@@ -35,6 +36,7 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Equipment;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundSetEquipmentPacket;
 
 @Translator(packet = ClientboundSetEquipmentPacket.class)
@@ -64,7 +66,7 @@ public class JavaSetEquipmentTranslator extends PacketTranslator<ClientboundSetE
                             && javaItem != null
                             && javaItem.getId() == Items.PLAYER_HEAD.javaId()
                             && javaItem.getDataComponents() != null) {
-                        FakeHeadProvider.setHead(session, (PlayerEntity) livingEntity, javaItem.getDataComponents());
+                        FakeHeadProvider.setHead(session, (PlayerEntity) livingEntity, GeyserItemStack.from(javaItem).getComponent(DataComponentType.PROFILE));
                     } else {
                         FakeHeadProvider.restoreOriginalSkin(session, livingEntity);
                     }
diff --git a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
index 52a4a6df9..bd5ce861b 100644
--- a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
@@ -28,11 +28,7 @@ package org.geysermc.geyser.util;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
-import org.geysermc.geyser.entity.type.player.SessionPlayerEntity;
 import org.geysermc.geyser.inventory.GeyserItemStack;
-import org.geysermc.geyser.inventory.PlayerInventory;
-import org.geysermc.geyser.inventory.item.BedrockEnchantment;
-import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.registry.BlockRegistries;
@@ -40,10 +36,8 @@ import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.EntityEffectCache;
 import org.geysermc.geyser.session.cache.registry.JavaRegistries;
-import org.geysermc.geyser.session.cache.tags.BlockTag;
 import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.collision.BlockCollision;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.AttributeType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ToolData;
@@ -145,50 +139,11 @@ public final class BlockUtils {
 
     // TODO 1.21.4 this changed probably; no more tiers
     public static double getBreakTime(GeyserSession session, Block block, ItemMapping item, @Nullable DataComponents components, boolean isSessionPlayer) {
-//        boolean isShearsEffective = session.getTagCache().is(BlockTag.LEAVES, block) || session.getTagCache().is(BlockTag.WOOL, block); //TODO called twice
-//        boolean canHarvestWithHand = !block.requiresCorrectToolForDrops();
-//        String toolType = "";
-//        String toolTier = "";
-//        boolean correctTool = false;
-//        boolean toolCanBreak = false;
-//        if (item.isTool()) {
-//            toolType = item.getToolType();
-//            toolTier = item.getToolTier();
-//            correctTool = correctTool(session, block, toolType);
-//            toolCanBreak = canToolTierBreakBlock(session, block, toolTier);
-//        }
-//
-//        int toolEfficiencyLevel = ItemUtils.getEnchantmentLevel(session, components, BedrockEnchantment.EFFICIENCY);
-//        int hasteLevel = 0;
-//        int miningFatigueLevel = 0;
-//
-//        if (!isSessionPlayer) {
-//            // Another entity is currently mining; we have all the information we know
-//            return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
-//                    toolEfficiencyLevel, hasteLevel, miningFatigueLevel, false, true);
-//        }
-//
-//        hasteLevel = Math.max(session.getEffectCache().getHaste(), session.getEffectCache().getConduitPower());
-//        miningFatigueLevel = session.getEffectCache().getMiningFatigue();
-//
-//        boolean waterInEyes = session.getCollisionManager().isWaterInEyes();
-//        boolean insideOfWaterWithoutAquaAffinity = waterInEyes &&
-//                ItemUtils.getEnchantmentLevel(session, session.getPlayerInventory().getItem(5).getAllComponents(), BedrockEnchantment.AQUA_AFFINITY) < 1;
-//
-//        return calculateBreakTime(block.destroyTime(), toolTier, canHarvestWithHand, correctTool, toolCanBreak, toolType, isShearsEffective,
-//                toolEfficiencyLevel, hasteLevel, miningFatigueLevel, insideOfWaterWithoutAquaAffinity, session.getPlayerEntity().isOnGround());
+        return 0.0; // TODO 1.21.4
     }
 
     public static double getSessionBreakTime(GeyserSession session, Block block) {
-//        PlayerInventory inventory = session.getPlayerInventory();
-//        GeyserItemStack item = inventory.getItemInHand();
-//        ItemMapping mapping = ItemMapping.AIR;
-//        DataComponents components = null;
-//        if (item != null) {
-//            mapping = item.getMapping(session);
-//            components = item.getAllComponents();
-//        }
-//        return getBreakTime(session, block, mapping, components, true);
+        return 0.0; // TODO 1.21.4
     }
 
     /**
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index a04e43d34..079309549 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -33,13 +33,13 @@ commodore = "2.2"
 bungeecord = "a7c6ede"
 velocity = "3.3.0-SNAPSHOT"
 viaproxy = "3.3.2-SNAPSHOT"
-fabric-loader = "0.16.7"
+fabric-loader = "0.16.9"
 fabric-api = "0.109.1+1.21.4"
 fabric-permissions-api = "0.3.3"
-neoforge-minecraft = "21.3.0-beta"
+neoforge-minecraft = "21.4.0-beta"
 mixin = "0.8.5"
 mixinextras = "0.3.5"
-minecraft = "1.21.4-pre3"
+minecraft = "1.21.4"
 mockito = "5.+"
 
 # plugin versions
diff --git a/settings.gradle.kts b/settings.gradle.kts
index e820f59bd..9aaf6ba59 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -20,7 +20,7 @@ include(":ap")
 include(":api")
 include(":bungeecord")
 include(":fabric")
-//include(":neoforge")
+include(":neoforge")
 include(":mod")
 include(":spigot")
 include(":standalone")
@@ -32,7 +32,7 @@ include(":core")
 // Specify project dirs
 project(":bungeecord").projectDir = file("bootstrap/bungeecord")
 project(":fabric").projectDir = file("bootstrap/mod/fabric")
-//project(":neoforge").projectDir = file("bootstrap/mod/neoforge")
+project(":neoforge").projectDir = file("bootstrap/mod/neoforge")
 project(":mod").projectDir = file("bootstrap/mod")
 project(":spigot").projectDir = file("bootstrap/spigot")
 project(":standalone").projectDir = file("bootstrap/standalone")

From ee5c0e68537146159468cd0154355be3a78846f4 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 4 Dec 2024 20:46:38 +0800
Subject: [PATCH 094/165] Start on block remapping, send
 ServerboundPlayerLoadedPacket on respawn/new logins

---
 core/build.gradle.kts                         |   4 +
 .../geyser/entity/EntityDefinitions.java      |  10 ++
 .../type/living/monster/CreakingEntity.java   |  54 +++++++++
 .../populator/BlockRegistryPopulator.java     |  28 +----
 .../registry/populator/Conversion748_729.java |  48 --------
 .../registry/populator/Conversion766_748.java | 104 ++++++++++++++++++
 .../populator/ItemRegistryPopulator.java      |  40 ++++++-
 ...SetLocalPlayerAsInitializedTranslator.java |   1 +
 .../protocol/java/JavaLoginTranslator.java    |   5 +
 .../protocol/java/JavaRespawnTranslator.java  |   3 +
 10 files changed, 222 insertions(+), 75 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
 delete mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java

diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index b0ea5fdf6..29cb49dc2 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -71,6 +71,10 @@ dependencies {
     api(libs.events)
 }
 
+tasks.test {
+    enabled = false
+}
+
 tasks.processResources {
     // This is solely for backwards compatibility for other programs that used this file before the switch to gradle.
     // It used to be generated by the maven Git-Commit-Id-Plugin
diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 47b97c934..f48cf4053 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -116,6 +116,7 @@ import org.geysermc.geyser.entity.type.living.monster.BasePiglinEntity;
 import org.geysermc.geyser.entity.type.living.monster.BlazeEntity;
 import org.geysermc.geyser.entity.type.living.monster.BoggedEntity;
 import org.geysermc.geyser.entity.type.living.monster.BreezeEntity;
+import org.geysermc.geyser.entity.type.living.monster.CreakingEntity;
 import org.geysermc.geyser.entity.type.living.monster.CreeperEntity;
 import org.geysermc.geyser.entity.type.living.monster.ElderGuardianEntity;
 import org.geysermc.geyser.entity.type.living.monster.EnderDragonEntity;
@@ -179,6 +180,7 @@ public final class EntityDefinitions {
     public static final EntityDefinition<AbstractFishEntity> COD;
     public static final EntityDefinition<CommandBlockMinecartEntity> COMMAND_BLOCK_MINECART;
     public static final EntityDefinition<CowEntity> COW;
+    public static final EntityDefinition<CreakingEntity> CREAKING;
     public static final EntityDefinition<CreeperEntity> CREEPER;
     public static final EntityDefinition<BoatEntity> DARK_OAK_BOAT;
     public static final EntityDefinition<ChestBoatEntity> DARK_OAK_CHEST_BOAT;
@@ -671,6 +673,14 @@ public final class EntityDefinitions {
                     .type(EntityType.BREEZE)
                     .height(1.77f).width(0.6f)
                     .build();
+            CREAKING = EntityDefinition.inherited(CreakingEntity::new, mobEntityBase)
+                    .type(EntityType.CREAKING)
+                    .height(2.7f).width(0.9f)
+                    .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setCanMove)
+                    .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setActive)
+                    .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setIsTearingDown)
+                    .addTranslator(MetadataType.OPTIONAL_POSITION, CreakingEntity::setHomePos)
+                    .build();
             CREEPER = EntityDefinition.inherited(CreeperEntity::new, mobEntityBase)
                     .type(EntityType.CREEPER)
                     .height(1.7f).width(0.6f)
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
new file mode 100644
index 000000000..8cfaf7428
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.entity.type.living.monster;
+
+import org.cloudburstmc.math.vector.Vector3f;
+import org.cloudburstmc.math.vector.Vector3i;
+import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
+
+import java.util.Optional;
+import java.util.UUID;
+
+public class CreakingEntity extends MonsterEntity {
+    public CreakingEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
+        super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
+    }
+
+    public void setCanMove(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
+    }
+
+    public void setActive(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
+    }
+
+    public void setIsTearingDown(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
+    }
+
+    public void setHomePos(EntityMetadata<Optional<Vector3i>,? extends MetadataType<Optional<Vector3i>>> optionalEntityMetadata) {
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index 1723b22ed..46a820c16 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -58,7 +58,6 @@ import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.level.block.type.FlowerPotBlock;
-import org.geysermc.geyser.level.block.type.SkullBlock;
 import org.geysermc.geyser.level.physics.PistonBehavior;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
@@ -66,7 +65,6 @@ import org.geysermc.geyser.registry.type.BlockMappings;
 import org.geysermc.geyser.registry.type.GeyserBedrockBlock;
 import org.geysermc.geyser.util.BlockUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.jetbrains.annotations.NotNull;
 
 import java.io.DataInputStream;
 import java.io.InputStream;
@@ -125,8 +123,8 @@ public final class BlockRegistryPopulator {
 
     private static void registerBedrockBlocks() {
         var blockMappers = ImmutableMap.<ObjectIntPair<String>, Remapper>builder()
-                .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
-                .put(ObjectIntPair.of("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
+                .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), Conversion766_748::remapBlock)
+                .put(ObjectIntPair.of("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()), tag -> tag)
                 .build();
 
         // We can keep this strong as nothing should be garbage collected
@@ -259,15 +257,6 @@ public final class BlockRegistryPopulator {
                 NbtMap originalBedrockTag = buildBedrockState(blockState, entry);
                 NbtMap bedrockTag = stateMapper.remap(originalBedrockTag);
 
-                // FIXME TEMPORARY
-                if (blockState.block() instanceof SkullBlock && palette.valueInt() >= Bedrock_v748.CODEC.getProtocolVersion()) {
-                    // The flattening must be a very interesting process.
-                    String skullName = blockState.block().javaIdentifier().asString().replace("_wall", "");
-                    bedrockTag = bedrockTag.toBuilder()
-                        .putString("name", skullName)
-                        .build();
-                }
-
                 GeyserBedrockBlock vanillaBedrockDefinition = blockStateOrderedMap.get(bedrockTag);
 
                 GeyserBedrockBlock bedrockDefinition;
@@ -413,19 +402,6 @@ public final class BlockRegistryPopulator {
         }
     }
 
-    private static @NotNull Remapper faultyStrippedWoodRemapper() {
-        return tag -> {
-            final String name = tag.getString("name");
-            if (name.endsWith("_wood") && tag.getCompound("states").containsKey("stripped_bit")) {
-                NbtMapBuilder builder = tag.getCompound("states").toBuilder();
-                builder.remove("stripped_bit");
-                NbtMap states = builder.build();
-                return tag.toBuilder().putCompound("states", states).build();
-            }
-            return tag;
-        };
-    }
-
     private static void registerJavaBlocks() {
         List<NbtMap> blocksNbt;
         try (InputStream stream = GeyserImpl.getInstance().getBootstrap().getResourceOrThrow("mappings/blocks.nbt")) {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java
deleted file mode 100644
index 7a2d1a0cb..000000000
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion748_729.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 2024 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.registry.populator;
-
-import org.geysermc.geyser.item.type.Item;
-import org.geysermc.geyser.registry.type.GeyserMappingItem;
-
-import java.util.Map;
-
-public class Conversion748_729 {
-
-    private static final Map<String, Integer> NEW_PLAYER_HEADS = Map.of("minecraft:skeleton_skull", 0, "minecraft:wither_skeleton_skull", 1, "minecraft:zombie_head", 2, "minecraft:player_head", 3, "minecraft:creeper_head", 4, "minecraft:dragon_head", 5, "minecraft:piglin_head", 6);
-
-    static GeyserMappingItem remapItem(Item item, GeyserMappingItem mapping) {
-        String identifier = mapping.getBedrockIdentifier();
-
-        if (NEW_PLAYER_HEADS.containsKey(identifier)) {
-            return mapping.withBedrockIdentifier("minecraft:skull")
-                .withBedrockData(NEW_PLAYER_HEADS.get(identifier));
-        }
-
-        return mapping;
-    }
-
-}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java
new file mode 100644
index 000000000..79265552f
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.registry.populator;
+
+import io.jsonwebtoken.lang.Collections;
+import org.cloudburstmc.nbt.NbtMap;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.level.block.Blocks;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Conversion766_748 {
+    static List<String> newBlockIds = new ArrayList<>();
+    static List<String> bedrockIds = new ArrayList<>(); // TODO temp remove
+    static {
+        var blocks = Collections.of(
+            Blocks.PALE_OAK_WOOD,
+            Blocks.PALE_OAK_PLANKS,
+            Blocks.PALE_OAK_SAPLING,
+            Blocks.PALE_OAK_LOG,
+            Blocks.STRIPPED_PALE_OAK_LOG,
+            Blocks.STRIPPED_PALE_OAK_WOOD,
+            Blocks.PALE_OAK_LEAVES,
+            Blocks.PALE_OAK_SIGN,
+            Blocks.PALE_OAK_WALL_SIGN,
+            Blocks.PALE_OAK_HANGING_SIGN,
+            Blocks.PALE_OAK_WALL_HANGING_SIGN,
+            Blocks.PALE_OAK_PRESSURE_PLATE,
+            Blocks.PALE_OAK_TRAPDOOR,
+            Blocks.POTTED_PALE_OAK_SAPLING,
+            Blocks.PALE_OAK_BUTTON,
+            Blocks.PALE_OAK_STAIRS,
+            Blocks.PALE_OAK_SLAB,
+            Blocks.PALE_OAK_FENCE_GATE,
+            Blocks.PALE_OAK_FENCE,
+            Blocks.PALE_OAK_DOOR,
+            Blocks.PALE_MOSS_BLOCK,
+            Blocks.PALE_MOSS_CARPET,
+            Blocks.PALE_HANGING_MOSS,
+
+            Blocks.OPEN_EYEBLOSSOM,
+            Blocks.CLOSED_EYEBLOSSOM,
+            Blocks.POTTED_OPEN_EYEBLOSSOM,
+            Blocks.POTTED_CLOSED_EYEBLOSSOM,
+
+            Blocks.RESIN_CLUMP,
+            Blocks.RESIN_BLOCK,
+            Blocks.RESIN_BRICKS,
+            Blocks.RESIN_BRICK_STAIRS,
+            Blocks.RESIN_BRICK_SLAB,
+            Blocks.RESIN_BRICK_WALL,
+            Blocks.CHISELED_RESIN_BRICKS,
+
+            Blocks.CREAKING_HEART
+        );
+
+        blocks.forEach(block -> newBlockIds.add(block.javaIdentifier().value()));
+    }
+
+    static NbtMap remapBlock(NbtMap tag) {
+
+        GeyserImpl.getInstance().getLogger().info(tag.toString());
+
+        String name = tag.getString("name");
+        if (newBlockIds.contains(name)) {
+            bedrockIds.add(name);
+            // TODO
+            return tag.toBuilder()
+                .putCompound("states", NbtMap.builder().build())
+                .putString("name", "minecraft:unknown")
+                .build();
+        }
+
+        if (name.contains("resin") || name.contains("creaking") || name.contains("pale")) {
+            throw new RuntimeException("ya missed " + name);
+        }
+
+        return tag;
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index a94cf132d..7c636cd24 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -82,6 +82,7 @@ import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -107,8 +108,45 @@ public class ItemRegistryPopulator {
     }
 
     public static void populate() {
+
+        Map<Item, Item> itemFallbacks = new HashMap<>();
+        itemFallbacks.put(Items.PALE_OAK_PLANKS, Items.BIRCH_PLANKS);
+        itemFallbacks.put(Items.PALE_OAK_FENCE, Items.BIRCH_FENCE);
+        itemFallbacks.put(Items.PALE_OAK_FENCE_GATE, Items.BIRCH_FENCE_GATE);
+        itemFallbacks.put(Items.PALE_OAK_STAIRS, Items.BIRCH_STAIRS);
+        itemFallbacks.put(Items.PALE_OAK_DOOR, Items.BIRCH_DOOR);
+        itemFallbacks.put(Items.PALE_OAK_TRAPDOOR, Items.BIRCH_TRAPDOOR);
+        itemFallbacks.put(Items.PALE_OAK_SLAB, Items.BIRCH_SLAB);
+        itemFallbacks.put(Items.PALE_OAK_LOG, Items.BIRCH_LOG);
+        itemFallbacks.put(Items.STRIPPED_PALE_OAK_LOG, Items.STRIPPED_BIRCH_LOG);
+        itemFallbacks.put(Items.PALE_OAK_WOOD, Items.BIRCH_WOOD);
+        itemFallbacks.put(Items.PALE_OAK_LEAVES, Items.BIRCH_LEAVES);
+        itemFallbacks.put(Items.PALE_OAK_SAPLING, Items.BIRCH_SAPLING);
+        itemFallbacks.put(Items.STRIPPED_PALE_OAK_WOOD, Items.STRIPPED_BIRCH_WOOD);
+        itemFallbacks.put(Items.PALE_OAK_SIGN, Items.BIRCH_SIGN);
+        itemFallbacks.put(Items.PALE_OAK_HANGING_SIGN, Items.BIRCH_HANGING_SIGN);
+        itemFallbacks.put(Items.PALE_OAK_BOAT, Items.BIRCH_BOAT);
+        itemFallbacks.put(Items.PALE_OAK_CHEST_BOAT, Items.BIRCH_CHEST_BOAT);
+        itemFallbacks.put(Items.PALE_OAK_BUTTON, Items.BIRCH_BUTTON);
+        itemFallbacks.put(Items.PALE_OAK_PRESSURE_PLATE, Items.BIRCH_PRESSURE_PLATE);
+        itemFallbacks.put(Items.RESIN_CLUMP, Items.RAW_COPPER);
+        itemFallbacks.put(Items.RESIN_BRICK_WALL, Items.RED_SANDSTONE_WALL);
+        itemFallbacks.put(Items.RESIN_BRICK_STAIRS, Items.RED_SANDSTONE_STAIRS);
+        itemFallbacks.put(Items.RESIN_BRICK_SLAB, Items.RED_SANDSTONE_SLAB);
+        itemFallbacks.put(Items.RESIN_BLOCK, Items.RED_SANDSTONE);
+        itemFallbacks.put(Items.RESIN_BRICK, Items.BRICK);
+        itemFallbacks.put(Items.RESIN_BRICKS, Items.CUT_RED_SANDSTONE);
+        itemFallbacks.put(Items.CHISELED_RESIN_BRICKS, Items.CHISELED_RED_SANDSTONE);
+        itemFallbacks.put(Items.CLOSED_EYEBLOSSOM, Items.WHITE_TULIP);
+        itemFallbacks.put(Items.OPEN_EYEBLOSSOM, Items.OXEYE_DAISY);
+        itemFallbacks.put(Items.PALE_MOSS_BLOCK, Items.MOSS_BLOCK);
+        itemFallbacks.put(Items.PALE_MOSS_CARPET, Items.MOSS_CARPET);
+        itemFallbacks.put(Items.PALE_HANGING_MOSS, Items.HANGING_ROOTS);
+        itemFallbacks.put(Items.CREAKING_HEART, Items.CHISELED_POLISHED_BLACKSTONE);
+        itemFallbacks.put(Items.CREAKING_SPAWN_EGG, Items.HOGLIN_SPAWN_EGG);
+
         List<PaletteVersion> paletteVersions = new ArrayList<>(2);
-        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
+        paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion(), itemFallbacks, (item, mapping) -> mapping));
         paletteVersions.add(new PaletteVersion("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
index 556d8cd8d..fcbd3bb8c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
@@ -40,6 +40,7 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.Serverbound
 public class BedrockSetLocalPlayerAsInitializedTranslator extends PacketTranslator<SetLocalPlayerAsInitializedPacket> {
     @Override
     public void translate(GeyserSession session, SetLocalPlayerAsInitializedPacket packet) {
+        GeyserImpl.getInstance().getLogger().info(packet.toString());
         if (session.getPlayerEntity().getGeyserId() == packet.getRuntimeEntityId()) {
             if (!session.getUpstream().isInitialized()) {
                 session.getUpstream().setInitialized(true);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java
index 93a7d9a14..7a33c53d6 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginTranslator.java
@@ -45,6 +45,7 @@ import org.geysermc.geyser.util.MinecraftKey;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerSpawnInfo;
 import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundCustomPayloadPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundLoginPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundPlayerLoadedPacket;
 
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
@@ -128,5 +129,9 @@ public class JavaLoginTranslator extends PacketTranslator<ClientboundLoginPacket
         }
 
         ChunkUtils.loadDimension(session);
+
+        if (!needsSpawnPacket) {
+            session.sendDownstreamGamePacket(ServerboundPlayerLoadedPacket.INSTANCE);
+        }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRespawnTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRespawnTranslator.java
index 5c477f23e..89aa21ede 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRespawnTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRespawnTranslator.java
@@ -38,6 +38,7 @@ import org.geysermc.geyser.util.DimensionUtils;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerSpawnInfo;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundRespawnPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundPlayerLoadedPacket;
 
 @Translator(packet = ClientboundRespawnPacket.class)
 public class JavaRespawnTranslator extends PacketTranslator<ClientboundRespawnPacket> {
@@ -93,5 +94,7 @@ public class JavaRespawnTranslator extends PacketTranslator<ClientboundRespawnPa
 
             ChunkUtils.loadDimension(session);
         }
+
+        session.sendDownstreamGamePacket(ServerboundPlayerLoadedPacket.INSTANCE);
     }
 }

From d2051c22422e586347cb3a473f4c90b19519bcc3 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Thu, 5 Dec 2024 01:11:03 +0800
Subject: [PATCH 095/165] Various small fixes - update cloudburst/protocol
 dependency, remove "temporary" log info spamming (#5186)

---
 .../geyser/platform/spigot/GeyserSpigotInjector.java        | 1 -
 .../main/java/org/geysermc/geyser/network/GameProtocol.java | 5 ++---
 .../geyser/registry/populator/BlockRegistryPopulator.java   | 4 ++--
 .../geyser/registry/populator/ItemRegistryPopulator.java    | 4 ++--
 .../geyser/registry/populator/TagRegistryPopulator.java     | 4 ++--
 .../protocol/java/entity/JavaTeleportEntityTranslator.java  | 2 +-
 gradle/libs.versions.toml                                   | 6 +++---
 7 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
index 5dcfbd0f8..a3402a752 100644
--- a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
+++ b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
@@ -180,7 +180,6 @@ public class GeyserSpigotInjector extends GeyserInjector {
                 bootstrap.getGeyserConfig().getRemote().port(), this.serverSocketAddress,
                 InetAddress.getLoopbackAddress().getHostAddress(), protocol, protocol.createHelper());
         session.connect();
-        session.disconnect("");
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index 378dc5078..c762cf5d3 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -28,7 +28,7 @@ package org.geysermc.geyser.network;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
-import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
+import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
 import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodec;
 import org.geysermc.mcprotocollib.protocol.codec.PacketCodec;
@@ -46,9 +46,8 @@ public final class GameProtocol {
      * Default Bedrock codec that should act as a fallback. Should represent the latest available
      * release of the game that Geyser supports.
      */
-    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v765.CODEC.toBuilder()
+    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v766.CODEC.toBuilder()
         .minecraftVersion("1.21.50")
-        .protocolVersion(766)
         .build());
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index 1723b22ed..e1f1b2c8b 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -45,7 +45,7 @@ import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.nbt.NbtUtils;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
-import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
+import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
 import org.cloudburstmc.protocol.bedrock.data.BlockPropertyData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.geysermc.geyser.GeyserImpl;
@@ -126,7 +126,7 @@ public final class BlockRegistryPopulator {
     private static void registerBedrockBlocks() {
         var blockMappers = ImmutableMap.<ObjectIntPair<String>, Remapper>builder()
                 .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
-                .put(ObjectIntPair.of("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
+                .put(ObjectIntPair.of("1_21_50", Bedrock_v766.CODEC.getProtocolVersion()), faultyStrippedWoodRemapper())
                 .build();
 
         // We can keep this strong as nothing should be garbage collected
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index e9901c620..cda81cf5b 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -46,7 +46,7 @@ import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.nbt.NbtUtils;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
-import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
+import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
@@ -109,7 +109,7 @@ public class ItemRegistryPopulator {
     public static void populate() {
         List<PaletteVersion> paletteVersions = new ArrayList<>(2);
         paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()));
-        paletteVersions.add(new PaletteVersion("1_21_50", Bedrock_v765.CODEC.getProtocolVersion()));
+        paletteVersions.add(new PaletteVersion("1_21_50", Bedrock_v766.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
index dd654531a..bf1ed6194 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/TagRegistryPopulator.java
@@ -34,7 +34,7 @@ import it.unimi.dsi.fastutil.ints.IntList;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenCustomHashMap;
 import it.unimi.dsi.fastutil.objects.ObjectIntPair;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
-import org.cloudburstmc.protocol.bedrock.codec.v765.Bedrock_v765;
+import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
 import org.geysermc.geyser.GeyserBootstrap;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.item.type.Item;
@@ -68,7 +68,7 @@ public final class TagRegistryPopulator {
 
         List<ObjectIntPair<String>> paletteVersions = List.of(
             ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()),
-            ObjectIntPair.of("1_21_50", Bedrock_v765.CODEC.getProtocolVersion())
+            ObjectIntPair.of("1_21_50", Bedrock_v766.CODEC.getProtocolVersion())
         );
         Type type = new TypeToken<Map<String, List<String>>>() {}.getType();
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java
index eda195a8f..40379eac3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaTeleportEntityTranslator.java
@@ -35,6 +35,6 @@ public class JavaTeleportEntityTranslator extends PacketTranslator<ClientboundTe
 
     @Override
     public void translate(GeyserSession session, ClientboundTeleportEntityPacket packet) {
-        session.getGeyser().getLogger().info(packet.toString());
+        session.getGeyser().getLogger().debug(packet.toString());
     }
 }
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 994c9a811..029e444a5 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta5-20241121.192504-18"
-protocol-common = "3.0.0.Beta5-20241121.192504-18"
-protocol-codec = "3.0.0.Beta5-20241121.192504-18"
+protocol-connection = "3.0.0.Beta5-20241203.200249-19"
+protocol-common = "3.0.0.Beta5-20241203.200249-19"
+protocol-codec = "3.0.0.Beta5-20241203.200249-19"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.2-20241107.110329-3"

From ed3008f2451a6354c001ee91aaa4a064167aa964 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 5 Dec 2024 17:54:00 +0800
Subject: [PATCH 096/165] Finish mappings - let it build

---
 core/build.gradle.kts                         |  4 -
 .../entity/type/player/PlayerEntity.java      |  2 +-
 .../org/geysermc/geyser/item/type/Item.java   |  9 ++-
 .../registry/populator/Conversion766_748.java | 78 ++++++++++++-------
 .../MerchantInventoryTranslator.java          |  2 +-
 .../player/BedrockInteractTranslator.java     |  2 +-
 .../entity/JavaSetPassengersTranslator.java   |  4 +-
 7 files changed, 63 insertions(+), 38 deletions(-)

diff --git a/core/build.gradle.kts b/core/build.gradle.kts
index 29cb49dc2..b0ea5fdf6 100644
--- a/core/build.gradle.kts
+++ b/core/build.gradle.kts
@@ -71,10 +71,6 @@ dependencies {
     api(libs.events)
 }
 
-tasks.test {
-    enabled = false
-}
-
 tasks.processResources {
     // This is solely for backwards compatibility for other programs that used this file before the switch to gradle.
     // It used to be generated by the maven Git-Commit-Id-Plugin
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
index 7a443d6e8..2bdbb56df 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/PlayerEntity.java
@@ -335,7 +335,7 @@ public class PlayerEntity extends LivingEntity implements GeyserPlayerEntity {
             parrot.updateBedrockMetadata();
             SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
             EntityLinkData.Type type = isLeft ? EntityLinkData.Type.RIDER : EntityLinkData.Type.PASSENGER;
-            linkPacket.setEntityLink(new EntityLinkData(geyserId, parrot.getGeyserId(), type, false, false));
+            linkPacket.setEntityLink(new EntityLinkData(geyserId, parrot.getGeyserId(), type, false, false, 0f));
             // Delay, or else spawned-in players won't get the link
             // TODO: Find a better solution.
             session.scheduleInEventLoop(() -> session.sendUpstreamPacket(linkPacket), 500, TimeUnit.MILLISECONDS);
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 9b2603284..b12ab4d67 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -64,11 +64,13 @@ public class Item {
     protected final Key javaIdentifier;
     private int javaId = -1;
     private final int attackDamage;
-    private final DataComponents baseComponents; // unmodifiable
+    private DataComponents baseComponents; // unmodifiable
 
     public Item(String javaIdentifier, Builder builder) {
         this.javaIdentifier = MinecraftKey.key(javaIdentifier);
-        this.baseComponents = builder.components == null ? Registries.DEFAULT_DATA_COMPONENTS.get(javaId) : builder.components;
+        if (builder.components != null) {
+            this.baseComponents = builder.components;
+        }
         this.attackDamage = builder.attackDamage;
     }
 
@@ -272,6 +274,9 @@ public class Item {
             throw new RuntimeException("Item ID has already been set!");
         }
         this.javaId = javaId;
+        if (this.baseComponents == null) {
+            this.baseComponents = Registries.DEFAULT_DATA_COMPONENTS.get(javaId);
+        }
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java
index 79265552f..4568d0154 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/Conversion766_748.java
@@ -25,19 +25,20 @@
 
 package org.geysermc.geyser.registry.populator;
 
-import io.jsonwebtoken.lang.Collections;
 import org.cloudburstmc.nbt.NbtMap;
-import org.geysermc.geyser.GeyserImpl;
+import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.geysermc.geyser.level.block.Blocks;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 public class Conversion766_748 {
-    static List<String> newBlockIds = new ArrayList<>();
-    static List<String> bedrockIds = new ArrayList<>(); // TODO temp remove
+    static List<String> PALE_WOODEN_BLOCKS = new ArrayList<>();
+    static List<String> OTHER_NEW_BLOCKS = new ArrayList<>();
+
     static {
-        var blocks = Collections.of(
+         Set.of(
             Blocks.PALE_OAK_WOOD,
             Blocks.PALE_OAK_PLANKS,
             Blocks.PALE_OAK_SAPLING,
@@ -45,27 +46,29 @@ public class Conversion766_748 {
             Blocks.STRIPPED_PALE_OAK_LOG,
             Blocks.STRIPPED_PALE_OAK_WOOD,
             Blocks.PALE_OAK_LEAVES,
-            Blocks.PALE_OAK_SIGN,
-            Blocks.PALE_OAK_WALL_SIGN,
             Blocks.PALE_OAK_HANGING_SIGN,
-            Blocks.PALE_OAK_WALL_HANGING_SIGN,
             Blocks.PALE_OAK_PRESSURE_PLATE,
             Blocks.PALE_OAK_TRAPDOOR,
-            Blocks.POTTED_PALE_OAK_SAPLING,
             Blocks.PALE_OAK_BUTTON,
             Blocks.PALE_OAK_STAIRS,
             Blocks.PALE_OAK_SLAB,
             Blocks.PALE_OAK_FENCE_GATE,
             Blocks.PALE_OAK_FENCE,
-            Blocks.PALE_OAK_DOOR,
+            Blocks.PALE_OAK_DOOR
+        ).forEach(block -> PALE_WOODEN_BLOCKS.add(block.javaIdentifier().value()));
+
+        // Some things are of course stupid
+        PALE_WOODEN_BLOCKS.add("pale_oak_standing_sign");
+        PALE_WOODEN_BLOCKS.add("pale_oak_wall_sign");
+        PALE_WOODEN_BLOCKS.add("pale_oak_double_slab");
+
+        Set.of(
             Blocks.PALE_MOSS_BLOCK,
             Blocks.PALE_MOSS_CARPET,
             Blocks.PALE_HANGING_MOSS,
 
             Blocks.OPEN_EYEBLOSSOM,
             Blocks.CLOSED_EYEBLOSSOM,
-            Blocks.POTTED_OPEN_EYEBLOSSOM,
-            Blocks.POTTED_CLOSED_EYEBLOSSOM,
 
             Blocks.RESIN_CLUMP,
             Blocks.RESIN_BLOCK,
@@ -76,29 +79,50 @@ public class Conversion766_748 {
             Blocks.CHISELED_RESIN_BRICKS,
 
             Blocks.CREAKING_HEART
-        );
+        ).forEach(block -> OTHER_NEW_BLOCKS.add(block.javaIdentifier().value()));
 
-        blocks.forEach(block -> newBlockIds.add(block.javaIdentifier().value()));
+        OTHER_NEW_BLOCKS.add("resin_brick_double_slab");
     }
 
     static NbtMap remapBlock(NbtMap tag) {
-
-        GeyserImpl.getInstance().getLogger().info(tag.toString());
-
-        String name = tag.getString("name");
-        if (newBlockIds.contains(name)) {
-            bedrockIds.add(name);
-            // TODO
-            return tag.toBuilder()
-                .putCompound("states", NbtMap.builder().build())
-                .putString("name", "minecraft:unknown")
-                .build();
+        String name = tag.getString("name").replace("minecraft:", "");
+        if (PALE_WOODEN_BLOCKS.contains(name)) {
+            return withName(tag, name.replace("pale_oak", "birch"));
         }
 
-        if (name.contains("resin") || name.contains("creaking") || name.contains("pale")) {
-            throw new RuntimeException("ya missed " + name);
+        if (OTHER_NEW_BLOCKS.contains(name)) {
+            return switch (name) {
+                case "resin_brick_double_slab" -> withName(tag,"red_sandstone_double_slab");
+                case "pale_moss_block" -> withName(tag, "moss_block");
+                case "pale_moss_carpet" -> withoutStates("moss_carpet");
+                case "pale_hanging_moss" -> withoutStates("hanging_roots");
+                case "open_eyeblossom" -> withoutStates("oxeye_daisy");
+                case "closed_eyeblossom" -> withoutStates("white_tulip");
+                case "resin_clump" -> withoutStates("unknown");
+                case "resin_block" -> withoutStates("red_sandstone");
+                case "resin_bricks" -> withoutStates("cut_red_sandstone");
+                case "resin_brick_stairs" -> withName(tag, "red_sandstone_stairs");
+                case "resin_brick_slab" -> withName(tag, "red_sandstone_slab");
+                case "resin_brick_wall" -> withName(tag, "red_sandstone_wall");
+                case "chiseled_resin_bricks" -> withName(tag, "chiseled_red_sandstone");
+                case "creaking_heart" -> withoutStates("chiseled_polished_blackstone");
+                default -> throw new IllegalStateException("missing replacement for new block! " + name);
+            };
         }
 
         return tag;
     }
+
+    static NbtMap withName(NbtMap tag, String name) {
+        NbtMapBuilder builder = tag.toBuilder();
+        builder.replace("name", "minecraft:" + name);
+        return builder.build();
+    }
+
+    static NbtMap withoutStates(String name) {
+        NbtMapBuilder tagBuilder = NbtMap.builder();
+        tagBuilder.putString("name", "minecraft:" + name);
+        tagBuilder.putCompound("states", NbtMap.builder().build());
+        return tagBuilder.build();
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java
index c67b3b190..4ac159981 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/MerchantInventoryTranslator.java
@@ -112,7 +112,7 @@ public class MerchantInventoryTranslator extends BaseInventoryTranslator {
 
             SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
             EntityLinkData.Type type = EntityLinkData.Type.PASSENGER;
-            linkPacket.setEntityLink(new EntityLinkData(session.getPlayerEntity().getGeyserId(), geyserId, type, true, false));
+            linkPacket.setEntityLink(new EntityLinkData(session.getPlayerEntity().getGeyserId(), geyserId, type, true, false, 0f));
             session.sendUpstreamPacket(linkPacket);
 
             merchantInventory.setVillager(villager);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java
index 2df77ad16..62487b20d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockInteractTranslator.java
@@ -91,7 +91,7 @@ public class BedrockInteractTranslator extends PacketTranslator<InteractPacket>
                             // If the server doesn't agree with our dismount (sends a packet saying we dismounted),
                             // then remount the player.
                             SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
-                            linkPacket.setEntityLink(new EntityLinkData(vehicleBedrockId, session.getPlayerEntity().getGeyserId(), EntityLinkData.Type.PASSENGER, true, false));
+                            linkPacket.setEntityLink(new EntityLinkData(vehicleBedrockId, session.getPlayerEntity().getGeyserId(), EntityLinkData.Type.PASSENGER, true, false, 0f));
                             session.sendUpstreamPacket(linkPacket);
                         }
                     }, 1, TimeUnit.SECONDS));
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetPassengersTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetPassengersTranslator.java
index 865ca0464..fe4a13748 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetPassengersTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetPassengersTranslator.java
@@ -70,7 +70,7 @@ public class JavaSetPassengersTranslator extends PacketTranslator<ClientboundSet
             boolean rider = packet.getPassengerIds()[0] == passengerId;
             EntityLinkData.Type type = rider ? EntityLinkData.Type.RIDER : EntityLinkData.Type.PASSENGER;
             SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
-            linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), type, false, false));
+            linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), type, false, false, 0f));
             session.sendUpstreamPacket(linkPacket);
             newPassengers.add(passenger);
 
@@ -88,7 +88,7 @@ public class JavaSetPassengersTranslator extends PacketTranslator<ClientboundSet
             }
             if (!newPassengers.contains(passenger)) {
                 SetEntityLinkPacket linkPacket = new SetEntityLinkPacket();
-                linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), EntityLinkData.Type.REMOVE, false, false));
+                linkPacket.setEntityLink(new EntityLinkData(entity.getGeyserId(), passenger.getGeyserId(), EntityLinkData.Type.REMOVE, false, false, 0f));
                 session.sendUpstreamPacket(linkPacket);
 
                 passenger.setVehicle(null);

From b469a61b722a9793b6db8299f6419f486d53e0b2 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 5 Dec 2024 18:16:09 +0800
Subject: [PATCH 097/165] Include item_data_components.json, target new
 mappings

---
 .../DataComponentRegistryPopulator.java       |     2 +-
 .../resources/java/item_data_components.json  | 19962 ++++++++++++++++
 core/src/main/resources/mappings              |     2 +-
 3 files changed, 19964 insertions(+), 2 deletions(-)
 create mode 100644 core/src/main/resources/java/item_data_components.json

diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
index 0c89760b1..386c795d2 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
@@ -54,7 +54,7 @@ public final class DataComponentRegistryPopulator {
     public static void populate() {
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
         List<DataComponents> defaultComponents;
-        try (InputStream stream = bootstrap.getResourceOrThrow("mappings/item_data_components.json")) {
+        try (InputStream stream = bootstrap.getResourceOrThrow("java/item_data_components.json")) {
             JsonElement rootElement = JsonParser.parseReader(new InputStreamReader(stream));
             JsonArray jsonArray = rootElement.getAsJsonArray();
 
diff --git a/core/src/main/resources/java/item_data_components.json b/core/src/main/resources/java/item_data_components.json
new file mode 100644
index 000000000..141666fc9
--- /dev/null
+++ b/core/src/main/resources/java/item_data_components.json
@@ -0,0 +1,19962 @@
+[
+  {
+    "id": 0,
+    "key": "minecraft:air",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6YWly",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2Jsb2NrLm1pbmVjcmFmdC5haXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1,
+    "key": "minecraft:stone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6c3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5zdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 2,
+    "key": "minecraft:granite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6Z3Jhbml0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5ncmFuaXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 3,
+    "key": "minecraft:polished_granite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cG9saXNoZWRfZ3Jhbml0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ncmFuaXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 4,
+    "key": "minecraft:diorite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZGlvcml0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5kaW9yaXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 5,
+    "key": "minecraft:polished_diorite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cG9saXNoZWRfZGlvcml0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kaW9yaXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 6,
+    "key": "minecraft:andesite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6YW5kZXNpdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5hbmRlc2l0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 7,
+    "key": "minecraft:polished_andesite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cG9saXNoZWRfYW5kZXNpdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9hbmRlc2l0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 8,
+    "key": "minecraft:deepslate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZGVlcHNsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 9,
+    "key": "minecraft:cobbled_deepslate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y29iYmxlZF9kZWVwc2xhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5jb2JibGVkX2RlZXBzbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 10,
+    "key": "minecraft:polished_deepslate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cG9saXNoZWRfZGVlcHNsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kZWVwc2xhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 11,
+    "key": "minecraft:calcite",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6Y2FsY2l0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5jYWxjaXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 12,
+    "key": "minecraft:tuff",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6dHVmZg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC50dWZmAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 13,
+    "key": "minecraft:tuff_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6dHVmZl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC50dWZmX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 14,
+    "key": "minecraft:tuff_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6dHVmZl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC50dWZmX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 15,
+    "key": "minecraft:tuff_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6dHVmZl93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC50dWZmX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 16,
+    "key": "minecraft:chiseled_tuff",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hpc2VsZWRfdHVmZg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF90dWZmAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 17,
+    "key": "minecraft:polished_tuff",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cG9saXNoZWRfdHVmZg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF90dWZmAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 18,
+    "key": "minecraft:polished_tuff_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cG9saXNoZWRfdHVmZl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF90dWZmX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 19,
+    "key": "minecraft:polished_tuff_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cG9saXNoZWRfdHVmZl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF90dWZmX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 20,
+    "key": "minecraft:polished_tuff_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cG9saXNoZWRfdHVmZl93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF90dWZmX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 21,
+    "key": "minecraft:tuff_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6dHVmZl9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC50dWZmX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 22,
+    "key": "minecraft:tuff_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6dHVmZl9icmlja19zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC50dWZmX2JyaWNrX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 23,
+    "key": "minecraft:tuff_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6dHVmZl9icmlja19zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC50dWZmX2JyaWNrX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 24,
+    "key": "minecraft:tuff_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6dHVmZl9icmlja193YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC50dWZmX2JyaWNrX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 25,
+    "key": "minecraft:chiseled_tuff_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Y2hpc2VsZWRfdHVmZl9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF90dWZmX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 26,
+    "key": "minecraft:dripstone_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZHJpcHN0b25lX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kcmlwc3RvbmVfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 27,
+    "key": "minecraft:grass_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ncmFzc19ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 28,
+    "key": "minecraft:dirt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6ZGlydA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5kaXJ0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 29,
+    "key": "minecraft:coarse_dirt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y29hcnNlX2RpcnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jb2Fyc2VfZGlydAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 30,
+    "key": "minecraft:podzol",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6cG9kem9s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5wb2R6b2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 31,
+    "key": "minecraft:rooted_dirt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cm9vdGVkX2RpcnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5yb290ZWRfZGlydAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 32,
+    "key": "minecraft:mud",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6bXVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2Jsb2NrLm1pbmVjcmFmdC5tdWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 33,
+    "key": "minecraft:crimson_nylium",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JpbXNvbl9ueWxpdW0=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX255bGl1bQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 34,
+    "key": "minecraft:warped_nylium",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2FycGVkX255bGl1bQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfbnlsaXVtAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 35,
+    "key": "minecraft:cobblestone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y29iYmxlc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jb2JibGVzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 36,
+    "key": "minecraft:oak_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6b2FrX3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5vYWtfcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 37,
+    "key": "minecraft:spruce_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3BydWNlX3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 38,
+    "key": "minecraft:birch_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmlyY2hfcGxhbmtz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iaXJjaF9wbGFua3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 39,
+    "key": "minecraft:jungle_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6anVuZ2xlX3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 40,
+    "key": "minecraft:acacia_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YWNhY2lhX3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 41,
+    "key": "minecraft:cherry_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hlcnJ5X3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaGVycnlfcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 42,
+    "key": "minecraft:dark_oak_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGFya19vYWtfcGxhbmtz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19wbGFua3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 43,
+    "key": "minecraft:pale_oak_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGFsZV9vYWtfcGxhbmtz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19wbGFua3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 44,
+    "key": "minecraft:mangrove_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bWFuZ3JvdmVfcGxhbmtz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9wbGFua3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 45,
+    "key": "minecraft:bamboo_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmFtYm9vX3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5iYW1ib29fcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 46,
+    "key": "minecraft:crimson_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JpbXNvbl9wbGFua3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3BsYW5rcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 47,
+    "key": "minecraft:warped_planks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2FycGVkX3BsYW5rcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfcGxhbmtzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 48,
+    "key": "minecraft:bamboo_mosaic",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmFtYm9vX21vc2FpYw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5iYW1ib29fbW9zYWljAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 49,
+    "key": "minecraft:oak_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6b2FrX3NhcGxpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5vYWtfc2FwbGluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 50,
+    "key": "minecraft:spruce_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c3BydWNlX3NhcGxpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2Vfc2FwbGluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 51,
+    "key": "minecraft:birch_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmlyY2hfc2FwbGluZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5iaXJjaF9zYXBsaW5nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 52,
+    "key": "minecraft:jungle_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6anVuZ2xlX3NhcGxpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfc2FwbGluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 53,
+    "key": "minecraft:acacia_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YWNhY2lhX3NhcGxpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfc2FwbGluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 54,
+    "key": "minecraft:cherry_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y2hlcnJ5X3NhcGxpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jaGVycnlfc2FwbGluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 55,
+    "key": "minecraft:dark_oak_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZGFya19vYWtfc2FwbGluZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19zYXBsaW5nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 56,
+    "key": "minecraft:pale_oak_sapling",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cGFsZV9vYWtfc2FwbGluZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19zYXBsaW5nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 57,
+    "key": "minecraft:mangrove_propagule",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bWFuZ3JvdmVfcHJvcGFndWxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9wcm9wYWd1bGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 58,
+    "key": "minecraft:bedrock",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6YmVkcm9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5iZWRyb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 59,
+    "key": "minecraft:sand",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6c2FuZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5zYW5kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 60,
+    "key": "minecraft:suspicious_sand",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c3VzcGljaW91c19zYW5k",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5zdXNwaWNpb3VzX3NhbmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 61,
+    "key": "minecraft:suspicious_gravel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c3VzcGljaW91c19ncmF2ZWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5zdXNwaWNpb3VzX2dyYXZlbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 62,
+    "key": "minecraft:red_sand",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cmVkX3NhbmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5yZWRfc2FuZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 63,
+    "key": "minecraft:gravel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6Z3JhdmVs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5ncmF2ZWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 64,
+    "key": "minecraft:coal_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y29hbF9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5jb2FsX29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 65,
+    "key": "minecraft:deepslate_coal_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6ZGVlcHNsYXRlX2NvYWxfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfY29hbF9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 66,
+    "key": "minecraft:iron_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6aXJvbl9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5pcm9uX29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 67,
+    "key": "minecraft:deepslate_iron_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6ZGVlcHNsYXRlX2lyb25fb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfaXJvbl9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 68,
+    "key": "minecraft:copper_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y29wcGVyX29yZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5jb3BwZXJfb3JlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 69,
+    "key": "minecraft:deepslate_copper_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZGVlcHNsYXRlX2NvcHBlcl9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfY29wcGVyX29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 70,
+    "key": "minecraft:gold_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Z29sZF9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5nb2xkX29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 71,
+    "key": "minecraft:deepslate_gold_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6ZGVlcHNsYXRlX2dvbGRfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfZ29sZF9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 72,
+    "key": "minecraft:redstone_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cmVkc3RvbmVfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5yZWRzdG9uZV9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 73,
+    "key": "minecraft:deepslate_redstone_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZGVlcHNsYXRlX3JlZHN0b25lX29yZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfcmVkc3RvbmVfb3JlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 74,
+    "key": "minecraft:emerald_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZW1lcmFsZF9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5lbWVyYWxkX29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 75,
+    "key": "minecraft:deepslate_emerald_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVlcHNsYXRlX2VtZXJhbGRfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfZW1lcmFsZF9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 76,
+    "key": "minecraft:lapis_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6bGFwaXNfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5sYXBpc19vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 77,
+    "key": "minecraft:deepslate_lapis_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGVlcHNsYXRlX2xhcGlzX29yZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfbGFwaXNfb3JlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 78,
+    "key": "minecraft:diamond_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZGlhbW9uZF9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5kaWFtb25kX29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 79,
+    "key": "minecraft:deepslate_diamond_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVlcHNsYXRlX2RpYW1vbmRfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfZGlhbW9uZF9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 80,
+    "key": "minecraft:nether_gold_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bmV0aGVyX2dvbGRfb3Jl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5uZXRoZXJfZ29sZF9vcmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 81,
+    "key": "minecraft:nether_quartz_ore",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bmV0aGVyX3F1YXJ0el9vcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfcXVhcnR6X29yZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 82,
+    "key": "minecraft:ancient_debris",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YW5jaWVudF9kZWJyaXM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5hbmNpZW50X2RlYnJpcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 83,
+    "key": "minecraft:coal_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y29hbF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5jb2FsX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 84,
+    "key": "minecraft:raw_iron_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cmF3X2lyb25fYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5yYXdfaXJvbl9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 85,
+    "key": "minecraft:raw_copper_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cmF3X2NvcHBlcl9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5yYXdfY29wcGVyX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 86,
+    "key": "minecraft:raw_gold_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cmF3X2dvbGRfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5yYXdfZ29sZF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 87,
+    "key": "minecraft:heavy_core",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aGVhdnlfY29yZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5oZWF2eV9jb3JlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 88,
+    "key": "minecraft:amethyst_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YW1ldGh5c3RfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5hbWV0aHlzdF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 89,
+    "key": "minecraft:budding_amethyst",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YnVkZGluZ19hbWV0aHlzdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5idWRkaW5nX2FtZXRoeXN0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 90,
+    "key": "minecraft:iron_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aXJvbl9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5pcm9uX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 91,
+    "key": "minecraft:copper_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y29wcGVyX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jb3BwZXJfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 92,
+    "key": "minecraft:gold_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z29sZF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5nb2xkX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 93,
+    "key": "minecraft:diamond_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGlhbW9uZF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kaWFtb25kX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 94,
+    "key": "minecraft:netherite_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bmV0aGVyaXRlX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5uZXRoZXJpdGVfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 95,
+    "key": "minecraft:exposed_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZXhwb3NlZF9jb3BwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2NvcHBlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 96,
+    "key": "minecraft:weathered_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6d2VhdGhlcmVkX2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 97,
+    "key": "minecraft:oxidized_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6b3hpZGl6ZWRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 98,
+    "key": "minecraft:chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y2hpc2VsZWRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 99,
+    "key": "minecraft:exposed_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6ZXhwb3NlZF9jaGlzZWxlZF9jb3BwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2NoaXNlbGVkX2NvcHBlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 100,
+    "key": "minecraft:weathered_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2VhdGhlcmVkX2NoaXNlbGVkX2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY2hpc2VsZWRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 101,
+    "key": "minecraft:oxidized_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6b3hpZGl6ZWRfY2hpc2VsZWRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jaGlzZWxlZF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 102,
+    "key": "minecraft:cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y3V0X2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5jdXRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 103,
+    "key": "minecraft:exposed_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6ZXhwb3NlZF9jdXRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2N1dF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 104,
+    "key": "minecraft:weathered_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6d2VhdGhlcmVkX2N1dF9jb3BwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY3V0X2NvcHBlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 105,
+    "key": "minecraft:oxidized_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6b3hpZGl6ZWRfY3V0X2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jdXRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 106,
+    "key": "minecraft:cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y3V0X2NvcHBlcl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5jdXRfY29wcGVyX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 107,
+    "key": "minecraft:exposed_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6ZXhwb3NlZF9jdXRfY29wcGVyX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2N1dF9jb3BwZXJfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 108,
+    "key": "minecraft:weathered_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByVtaW5lY3JhZnQ6d2VhdGhlcmVkX2N1dF9jb3BwZXJfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2Jsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY3V0X2NvcHBlcl9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 109,
+    "key": "minecraft:oxidized_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6b3hpZGl6ZWRfY3V0X2NvcHBlcl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jdXRfY29wcGVyX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 110,
+    "key": "minecraft:cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y3V0X2NvcHBlcl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5jdXRfY29wcGVyX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 111,
+    "key": "minecraft:exposed_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6ZXhwb3NlZF9jdXRfY29wcGVyX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2N1dF9jb3BwZXJfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 112,
+    "key": "minecraft:weathered_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2VhdGhlcmVkX2N1dF9jb3BwZXJfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY3V0X2NvcHBlcl9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 113,
+    "key": "minecraft:oxidized_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6b3hpZGl6ZWRfY3V0X2NvcHBlcl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jdXRfY29wcGVyX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 114,
+    "key": "minecraft:waxed_copper_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6d2F4ZWRfY29wcGVyX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC53YXhlZF9jb3BwZXJfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 115,
+    "key": "minecraft:waxed_exposed_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jb3BwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2NvcHBlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 116,
+    "key": "minecraft:waxed_weathered_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 117,
+    "key": "minecraft:waxed_oxidized_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 118,
+    "key": "minecraft:waxed_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2F4ZWRfY2hpc2VsZWRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53YXhlZF9jaGlzZWxlZF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 119,
+    "key": "minecraft:waxed_exposed_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jaGlzZWxlZF9jb3BwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2NoaXNlbGVkX2NvcHBlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 120,
+    "key": "minecraft:waxed_weathered_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByltaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2NoaXNlbGVkX2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2Jsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY2hpc2VsZWRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 121,
+    "key": "minecraft:waxed_oxidized_chiseled_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByhtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY2hpc2VsZWRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALmJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jaGlzZWxlZF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 122,
+    "key": "minecraft:waxed_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6d2F4ZWRfY3V0X2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC53YXhlZF9jdXRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 123,
+    "key": "minecraft:waxed_exposed_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jdXRfY29wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2N1dF9jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 124,
+    "key": "minecraft:waxed_weathered_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2N1dF9jb3BwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY3V0X2NvcHBlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 125,
+    "key": "minecraft:waxed_oxidized_cut_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY3V0X2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jdXRfY29wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 126,
+    "key": "minecraft:waxed_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6d2F4ZWRfY3V0X2NvcHBlcl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC53YXhlZF9jdXRfY29wcGVyX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 127,
+    "key": "minecraft:waxed_exposed_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByltaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jdXRfY29wcGVyX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2Jsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2N1dF9jb3BwZXJfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 128,
+    "key": "minecraft:waxed_weathered_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2N1dF9jb3BwZXJfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMWJsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY3V0X2NvcHBlcl9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 129,
+    "key": "minecraft:waxed_oxidized_cut_copper_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByptaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY3V0X2NvcHBlcl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jdXRfY29wcGVyX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 130,
+    "key": "minecraft:waxed_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2F4ZWRfY3V0X2NvcHBlcl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53YXhlZF9jdXRfY29wcGVyX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 131,
+    "key": "minecraft:waxed_exposed_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jdXRfY29wcGVyX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2N1dF9jb3BwZXJfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 132,
+    "key": "minecraft:waxed_weathered_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByltaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2N1dF9jb3BwZXJfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2Jsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY3V0X2NvcHBlcl9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 133,
+    "key": "minecraft:waxed_oxidized_cut_copper_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByhtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY3V0X2NvcHBlcl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALmJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jdXRfY29wcGVyX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 134,
+    "key": "minecraft:oak_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6b2FrX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5vYWtfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 135,
+    "key": "minecraft:spruce_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c3BydWNlX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 136,
+    "key": "minecraft:birch_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6YmlyY2hfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5iaXJjaF9sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 137,
+    "key": "minecraft:jungle_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6anVuZ2xlX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 138,
+    "key": "minecraft:acacia_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YWNhY2lhX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 139,
+    "key": "minecraft:cherry_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y2hlcnJ5X2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5jaGVycnlfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 140,
+    "key": "minecraft:pale_oak_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cGFsZV9vYWtfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 141,
+    "key": "minecraft:dark_oak_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6ZGFya19vYWtfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 142,
+    "key": "minecraft:mangrove_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6bWFuZ3JvdmVfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 143,
+    "key": "minecraft:mangrove_roots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bWFuZ3JvdmVfcm9vdHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9yb290cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 144,
+    "key": "minecraft:muddy_mangrove_roots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6bXVkZHlfbWFuZ3JvdmVfcm9vdHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5tdWRkeV9tYW5ncm92ZV9yb290cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 145,
+    "key": "minecraft:crimson_stem",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y3JpbXNvbl9zdGVt",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3N0ZW0A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 146,
+    "key": "minecraft:warped_stem",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2FycGVkX3N0ZW0=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC53YXJwZWRfc3RlbQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 147,
+    "key": "minecraft:bamboo_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmFtYm9vX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iYW1ib29fYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 148,
+    "key": "minecraft:stripped_oak_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c3RyaXBwZWRfb2FrX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9vYWtfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 149,
+    "key": "minecraft:stripped_spruce_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c3RyaXBwZWRfc3BydWNlX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9zcHJ1Y2VfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 150,
+    "key": "minecraft:stripped_birch_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6c3RyaXBwZWRfYmlyY2hfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9iaXJjaF9sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 151,
+    "key": "minecraft:stripped_jungle_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c3RyaXBwZWRfanVuZ2xlX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9qdW5nbGVfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 152,
+    "key": "minecraft:stripped_acacia_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c3RyaXBwZWRfYWNhY2lhX2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9hY2FjaWFfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 153,
+    "key": "minecraft:stripped_cherry_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c3RyaXBwZWRfY2hlcnJ5X2xvZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9jaGVycnlfbG9nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 154,
+    "key": "minecraft:stripped_dark_oak_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c3RyaXBwZWRfZGFya19vYWtfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9kYXJrX29ha19sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 155,
+    "key": "minecraft:stripped_pale_oak_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c3RyaXBwZWRfcGFsZV9vYWtfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9wYWxlX29ha19sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 156,
+    "key": "minecraft:stripped_mangrove_log",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c3RyaXBwZWRfbWFuZ3JvdmVfbG9n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9tYW5ncm92ZV9sb2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 157,
+    "key": "minecraft:stripped_crimson_stem",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c3RyaXBwZWRfY3JpbXNvbl9zdGVt",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9jcmltc29uX3N0ZW0A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 158,
+    "key": "minecraft:stripped_warped_stem",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c3RyaXBwZWRfd2FycGVkX3N0ZW0=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF93YXJwZWRfc3RlbQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 159,
+    "key": "minecraft:stripped_oak_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c3RyaXBwZWRfb2FrX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9vYWtfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 160,
+    "key": "minecraft:stripped_spruce_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c3RyaXBwZWRfc3BydWNlX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9zcHJ1Y2Vfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 161,
+    "key": "minecraft:stripped_birch_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c3RyaXBwZWRfYmlyY2hfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9iaXJjaF93b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 162,
+    "key": "minecraft:stripped_jungle_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c3RyaXBwZWRfanVuZ2xlX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9qdW5nbGVfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 163,
+    "key": "minecraft:stripped_acacia_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c3RyaXBwZWRfYWNhY2lhX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9hY2FjaWFfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 164,
+    "key": "minecraft:stripped_cherry_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c3RyaXBwZWRfY2hlcnJ5X3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9jaGVycnlfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 165,
+    "key": "minecraft:stripped_dark_oak_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6c3RyaXBwZWRfZGFya19vYWtfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9kYXJrX29ha193b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 166,
+    "key": "minecraft:stripped_pale_oak_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6c3RyaXBwZWRfcGFsZV9vYWtfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9wYWxlX29ha193b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 167,
+    "key": "minecraft:stripped_mangrove_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6c3RyaXBwZWRfbWFuZ3JvdmVfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9tYW5ncm92ZV93b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 168,
+    "key": "minecraft:stripped_crimson_hyphae",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6c3RyaXBwZWRfY3JpbXNvbl9oeXBoYWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9jcmltc29uX2h5cGhhZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 169,
+    "key": "minecraft:stripped_warped_hyphae",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6c3RyaXBwZWRfd2FycGVkX2h5cGhhZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF93YXJwZWRfaHlwaGFlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 170,
+    "key": "minecraft:stripped_bamboo_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c3RyaXBwZWRfYmFtYm9vX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zdHJpcHBlZF9iYW1ib29fYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 171,
+    "key": "minecraft:oak_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2FrX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5vYWtfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 172,
+    "key": "minecraft:spruce_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3BydWNlX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zcHJ1Y2Vfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 173,
+    "key": "minecraft:birch_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmlyY2hfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5iaXJjaF93b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 174,
+    "key": "minecraft:jungle_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6anVuZ2xlX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5qdW5nbGVfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 175,
+    "key": "minecraft:acacia_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YWNhY2lhX3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5hY2FjaWFfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 176,
+    "key": "minecraft:cherry_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y2hlcnJ5X3dvb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jaGVycnlfd29vZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 177,
+    "key": "minecraft:pale_oak_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGFsZV9vYWtfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha193b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 178,
+    "key": "minecraft:dark_oak_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGFya19vYWtfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha193b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 179,
+    "key": "minecraft:mangrove_wood",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bWFuZ3JvdmVfd29vZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV93b29kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 180,
+    "key": "minecraft:crimson_hyphae",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JpbXNvbl9oeXBoYWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2h5cGhhZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 181,
+    "key": "minecraft:warped_hyphae",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2FycGVkX2h5cGhhZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfaHlwaGFlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 182,
+    "key": "minecraft:oak_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6b2FrX2xlYXZlcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5vYWtfbGVhdmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 183,
+    "key": "minecraft:spruce_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3BydWNlX2xlYXZlcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfbGVhdmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 184,
+    "key": "minecraft:birch_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmlyY2hfbGVhdmVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iaXJjaF9sZWF2ZXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 185,
+    "key": "minecraft:jungle_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6anVuZ2xlX2xlYXZlcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfbGVhdmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 186,
+    "key": "minecraft:acacia_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YWNhY2lhX2xlYXZlcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfbGVhdmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 187,
+    "key": "minecraft:cherry_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hlcnJ5X2xlYXZlcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaGVycnlfbGVhdmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 188,
+    "key": "minecraft:dark_oak_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGFya19vYWtfbGVhdmVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19sZWF2ZXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 189,
+    "key": "minecraft:pale_oak_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGFsZV9vYWtfbGVhdmVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19sZWF2ZXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 190,
+    "key": "minecraft:mangrove_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bWFuZ3JvdmVfbGVhdmVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9sZWF2ZXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 191,
+    "key": "minecraft:azalea_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YXphbGVhX2xlYXZlcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hemFsZWFfbGVhdmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 192,
+    "key": "minecraft:flowering_azalea_leaves",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Zmxvd2VyaW5nX2F6YWxlYV9sZWF2ZXM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5mbG93ZXJpbmdfYXphbGVhX2xlYXZlcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 193,
+    "key": "minecraft:sponge",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c3Bvbmdl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5zcG9uZ2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 194,
+    "key": "minecraft:wet_sponge",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6d2V0X3Nwb25nZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC53ZXRfc3BvbmdlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 195,
+    "key": "minecraft:glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6Z2xhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5nbGFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 196,
+    "key": "minecraft:tinted_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6dGludGVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC50aW50ZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 197,
+    "key": "minecraft:lapis_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bGFwaXNfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5sYXBpc19ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 198,
+    "key": "minecraft:sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6c2FuZHN0b25l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5zYW5kc3RvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 199,
+    "key": "minecraft:chiseled_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y2hpc2VsZWRfc2FuZHN0b25l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9zYW5kc3RvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 200,
+    "key": "minecraft:cut_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y3V0X3NhbmRzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jdXRfc2FuZHN0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 201,
+    "key": "minecraft:cobweb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6Y29id2Vi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5jb2J3ZWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 202,
+    "key": "minecraft:short_grass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c2hvcnRfZ3Jhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zaG9ydF9ncmFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 203,
+    "key": "minecraft:fern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6ZmVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5mZXJuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 204,
+    "key": "minecraft:azalea",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YXphbGVh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5hemFsZWEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 205,
+    "key": "minecraft:flowering_azalea",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Zmxvd2VyaW5nX2F6YWxlYQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5mbG93ZXJpbmdfYXphbGVhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 206,
+    "key": "minecraft:dead_bush",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZGVhZF9idXNo",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5kZWFkX2J1c2gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 207,
+    "key": "minecraft:seagrass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6c2VhZ3Jhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5zZWFncmFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 208,
+    "key": "minecraft:sea_pickle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c2VhX3BpY2tsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zZWFfcGlja2xlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 209,
+    "key": "minecraft:white_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6d2hpdGVfd29vbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC53aGl0ZV93b29sAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 210,
+    "key": "minecraft:orange_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6b3JhbmdlX3dvb2w=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5vcmFuZ2Vfd29vbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 211,
+    "key": "minecraft:magenta_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6bWFnZW50YV93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 212,
+    "key": "minecraft:light_blue_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bGlnaHRfYmx1ZV93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 213,
+    "key": "minecraft:yellow_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6eWVsbG93X3dvb2w=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC55ZWxsb3dfd29vbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 214,
+    "key": "minecraft:lime_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6bGltZV93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5saW1lX3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 215,
+    "key": "minecraft:pink_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6cGlua193b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5waW5rX3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 216,
+    "key": "minecraft:gray_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Z3JheV93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5ncmF5X3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 217,
+    "key": "minecraft:light_gray_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bGlnaHRfZ3JheV93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 218,
+    "key": "minecraft:cyan_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Y3lhbl93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5jeWFuX3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 219,
+    "key": "minecraft:purple_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cHVycGxlX3dvb2w=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5wdXJwbGVfd29vbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 220,
+    "key": "minecraft:blue_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Ymx1ZV93b29s",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5ibHVlX3dvb2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 221,
+    "key": "minecraft:brown_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YnJvd25fd29vbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5icm93bl93b29sAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 222,
+    "key": "minecraft:green_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z3JlZW5fd29vbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ncmVlbl93b29sAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 223,
+    "key": "minecraft:red_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cmVkX3dvb2w=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5yZWRfd29vbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 224,
+    "key": "minecraft:black_wool",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmxhY2tfd29vbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ibGFja193b29sAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 225,
+    "key": "minecraft:dandelion",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZGFuZGVsaW9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5kYW5kZWxpb24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 226,
+    "key": "minecraft:open_eyeblossom",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6b3Blbl9leWVibG9zc29t",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5vcGVuX2V5ZWJsb3Nzb20A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 227,
+    "key": "minecraft:closed_eyeblossom",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y2xvc2VkX2V5ZWJsb3Nzb20=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5jbG9zZWRfZXllYmxvc3NvbQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 228,
+    "key": "minecraft:poppy",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6cG9wcHk=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5wb3BweQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 229,
+    "key": "minecraft:blue_orchid",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Ymx1ZV9vcmNoaWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ibHVlX29yY2hpZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 230,
+    "key": "minecraft:allium",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YWxsaXVt",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5hbGxpdW0A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 231,
+    "key": "minecraft:azure_bluet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YXp1cmVfYmx1ZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5henVyZV9ibHVldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 232,
+    "key": "minecraft:red_tulip",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6cmVkX3R1bGlw",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5yZWRfdHVsaXAA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 233,
+    "key": "minecraft:orange_tulip",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6b3JhbmdlX3R1bGlw",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfdHVsaXAA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 234,
+    "key": "minecraft:white_tulip",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2hpdGVfdHVsaXA=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC53aGl0ZV90dWxpcAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 235,
+    "key": "minecraft:pink_tulip",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cGlua190dWxpcA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5waW5rX3R1bGlwAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 236,
+    "key": "minecraft:oxeye_daisy",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6b3hleWVfZGFpc3k=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5veGV5ZV9kYWlzeQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 237,
+    "key": "minecraft:cornflower",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y29ybmZsb3dlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5jb3JuZmxvd2VyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 238,
+    "key": "minecraft:lily_of_the_valley",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bGlseV9vZl90aGVfdmFsbGV5",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5saWx5X29mX3RoZV92YWxsZXkA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 239,
+    "key": "minecraft:wither_rose",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2l0aGVyX3Jvc2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC53aXRoZXJfcm9zZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 240,
+    "key": "minecraft:torchflower",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6dG9yY2hmbG93ZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC50b3JjaGZsb3dlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 241,
+    "key": "minecraft:pitcher_plant",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGl0Y2hlcl9wbGFudA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5waXRjaGVyX3BsYW50AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 242,
+    "key": "minecraft:spore_blossom",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3BvcmVfYmxvc3NvbQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zcG9yZV9ibG9zc29tAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 243,
+    "key": "minecraft:brown_mushroom",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YnJvd25fbXVzaHJvb20=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5icm93bl9tdXNocm9vbQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 244,
+    "key": "minecraft:red_mushroom",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cmVkX211c2hyb29t",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5yZWRfbXVzaHJvb20A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 245,
+    "key": "minecraft:crimson_fungus",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JpbXNvbl9mdW5ndXM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2Z1bmd1cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 246,
+    "key": "minecraft:warped_fungus",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2FycGVkX2Z1bmd1cw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfZnVuZ3VzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 247,
+    "key": "minecraft:crimson_roots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y3JpbXNvbl9yb290cw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3Jvb3RzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 248,
+    "key": "minecraft:warped_roots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2FycGVkX3Jvb3Rz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC53YXJwZWRfcm9vdHMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 249,
+    "key": "minecraft:nether_sprouts",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bmV0aGVyX3Nwcm91dHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfc3Byb3V0cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 250,
+    "key": "minecraft:weeping_vines",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2VlcGluZ192aW5lcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53ZWVwaW5nX3ZpbmVzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 251,
+    "key": "minecraft:twisting_vines",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6dHdpc3RpbmdfdmluZXM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC50d2lzdGluZ192aW5lcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 252,
+    "key": "minecraft:sugar_cane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c3VnYXJfY2FuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zdWdhcl9jYW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 253,
+    "key": "minecraft:kelp",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6a2VscA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5rZWxwAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 254,
+    "key": "minecraft:pink_petals",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGlua19wZXRhbHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5waW5rX3BldGFscwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 255,
+    "key": "minecraft:moss_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bW9zc19jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5tb3NzX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 256,
+    "key": "minecraft:moss_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6bW9zc19ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5tb3NzX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 257,
+    "key": "minecraft:pale_moss_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cGFsZV9tb3NzX2NhcnBldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5wYWxlX21vc3NfY2FycGV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 258,
+    "key": "minecraft:pale_hanging_moss",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cGFsZV9oYW5naW5nX21vc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wYWxlX2hhbmdpbmdfbW9zcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 259,
+    "key": "minecraft:pale_moss_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGFsZV9tb3NzX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wYWxlX21vc3NfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 260,
+    "key": "minecraft:hanging_roots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6aGFuZ2luZ19yb290cw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5oYW5naW5nX3Jvb3RzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 261,
+    "key": "minecraft:big_dripleaf",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmlnX2RyaXBsZWFm",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iaWdfZHJpcGxlYWYA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 262,
+    "key": "minecraft:small_dripleaf",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c21hbGxfZHJpcGxlYWY=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zbWFsbF9kcmlwbGVhZgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 263,
+    "key": "minecraft:bamboo",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YmFtYm9v",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5iYW1ib28A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 264,
+    "key": "minecraft:oak_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2FrX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5vYWtfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 265,
+    "key": "minecraft:spruce_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3BydWNlX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zcHJ1Y2Vfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 266,
+    "key": "minecraft:birch_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmlyY2hfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5iaXJjaF9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 267,
+    "key": "minecraft:jungle_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6anVuZ2xlX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5qdW5nbGVfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 268,
+    "key": "minecraft:acacia_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YWNhY2lhX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5hY2FjaWFfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 269,
+    "key": "minecraft:cherry_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y2hlcnJ5X3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jaGVycnlfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 270,
+    "key": "minecraft:dark_oak_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGFya19vYWtfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 271,
+    "key": "minecraft:pale_oak_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGFsZV9vYWtfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 272,
+    "key": "minecraft:mangrove_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bWFuZ3JvdmVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 273,
+    "key": "minecraft:bamboo_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YmFtYm9vX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5iYW1ib29fc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 274,
+    "key": "minecraft:bamboo_mosaic_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6YmFtYm9vX21vc2FpY19zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5iYW1ib29fbW9zYWljX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 275,
+    "key": "minecraft:crimson_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y3JpbXNvbl9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 276,
+    "key": "minecraft:warped_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2FycGVkX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC53YXJwZWRfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 277,
+    "key": "minecraft:stone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c3RvbmVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zdG9uZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 278,
+    "key": "minecraft:smooth_stone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c21vb3RoX3N0b25lX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfc3RvbmVfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 279,
+    "key": "minecraft:sandstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c2FuZHN0b25lX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zYW5kc3RvbmVfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 280,
+    "key": "minecraft:cut_sandstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y3V0X3NhbmRzdG9uZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jdXRfc2FuZHN0b25lX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 281,
+    "key": "minecraft:petrified_oak_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cGV0cmlmaWVkX29ha19zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5wZXRyaWZpZWRfb2FrX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 282,
+    "key": "minecraft:cobblestone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Y29iYmxlc3RvbmVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5jb2JibGVzdG9uZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 283,
+    "key": "minecraft:brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YnJpY2tfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5icmlja19zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 284,
+    "key": "minecraft:stone_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c3RvbmVfYnJpY2tfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5zdG9uZV9icmlja19zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 285,
+    "key": "minecraft:mud_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bXVkX2JyaWNrX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tdWRfYnJpY2tfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 286,
+    "key": "minecraft:nether_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bmV0aGVyX2JyaWNrX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfYnJpY2tfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 287,
+    "key": "minecraft:quartz_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cXVhcnR6X3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5xdWFydHpfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 288,
+    "key": "minecraft:red_sandstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cmVkX3NhbmRzdG9uZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5yZWRfc2FuZHN0b25lX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 289,
+    "key": "minecraft:cut_red_sandstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y3V0X3JlZF9zYW5kc3RvbmVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jdXRfcmVkX3NhbmRzdG9uZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 290,
+    "key": "minecraft:purpur_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cHVycHVyX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5wdXJwdXJfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 291,
+    "key": "minecraft:prismarine_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cHJpc21hcmluZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 292,
+    "key": "minecraft:prismarine_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cHJpc21hcmluZV9icmlja19zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lX2JyaWNrX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 293,
+    "key": "minecraft:dark_prismarine_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZGFya19wcmlzbWFyaW5lX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5kYXJrX3ByaXNtYXJpbmVfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 294,
+    "key": "minecraft:smooth_quartz",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c21vb3RoX3F1YXJ0eg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfcXVhcnR6AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 295,
+    "key": "minecraft:smooth_red_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c21vb3RoX3JlZF9zYW5kc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfcmVkX3NhbmRzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 296,
+    "key": "minecraft:smooth_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c21vb3RoX3NhbmRzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfc2FuZHN0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 297,
+    "key": "minecraft:smooth_stone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c21vb3RoX3N0b25l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfc3RvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 298,
+    "key": "minecraft:bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 299,
+    "key": "minecraft:bookshelf",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Ym9va3NoZWxm",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5ib29rc2hlbGYA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 300,
+    "key": "minecraft:chiseled_bookshelf",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y2hpc2VsZWRfYm9va3NoZWxm",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9ib29rc2hlbGYA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 301,
+    "key": "minecraft:decorated_pot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGVjb3JhdGVkX3BvdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kZWNvcmF0ZWRfcG90AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:pot_decorations": "PQS6B7oHuge6Bw==",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 302,
+    "key": "minecraft:mossy_cobblestone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bW9zc3lfY29iYmxlc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5tb3NzeV9jb2JibGVzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 303,
+    "key": "minecraft:obsidian",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2JzaWRpYW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5vYnNpZGlhbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 304,
+    "key": "minecraft:torch",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6dG9yY2g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC50b3JjaAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 305,
+    "key": "minecraft:end_rod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZW5kX3JvZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5lbmRfcm9kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 306,
+    "key": "minecraft:chorus_plant",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y2hvcnVzX3BsYW50",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jaG9ydXNfcGxhbnQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 307,
+    "key": "minecraft:chorus_flower",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hvcnVzX2Zsb3dlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaG9ydXNfZmxvd2VyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 308,
+    "key": "minecraft:purpur_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cHVycHVyX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5wdXJwdXJfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 309,
+    "key": "minecraft:purpur_pillar",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVycHVyX3BpbGxhcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wdXJwdXJfcGlsbGFyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 310,
+    "key": "minecraft:purpur_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVycHVyX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wdXJwdXJfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 311,
+    "key": "minecraft:spawner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6c3Bhd25lcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5zcGF3bmVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 312,
+    "key": "minecraft:creaking_heart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JlYWtpbmdfaGVhcnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmVha2luZ19oZWFydAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 313,
+    "key": "minecraft:chest",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6Y2hlc3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5jaGVzdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 314,
+    "key": "minecraft:crafting_table",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JhZnRpbmdfdGFibGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmFmdGluZ190YWJsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 315,
+    "key": "minecraft:farmland",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6ZmFybWxhbmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5mYXJtbGFuZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 316,
+    "key": "minecraft:furnace",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZnVybmFjZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5mdXJuYWNlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 317,
+    "key": "minecraft:ladder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6bGFkZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5sYWRkZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 318,
+    "key": "minecraft:cobblestone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y29iYmxlc3RvbmVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jb2JibGVzdG9uZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 319,
+    "key": "minecraft:snow",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6c25vdw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5zbm93AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 320,
+    "key": "minecraft:ice",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6aWNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2Jsb2NrLm1pbmVjcmFmdC5pY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 321,
+    "key": "minecraft:snow_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c25vd19ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zbm93X2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 322,
+    "key": "minecraft:cactus",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6Y2FjdHVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5jYWN0dXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 323,
+    "key": "minecraft:clay",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6Y2xheQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5jbGF5AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 324,
+    "key": "minecraft:jukebox",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6anVrZWJveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5qdWtlYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 325,
+    "key": "minecraft:oak_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6b2FrX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5vYWtfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 326,
+    "key": "minecraft:spruce_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c3BydWNlX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 327,
+    "key": "minecraft:birch_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YmlyY2hfZmVuY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5iaXJjaF9mZW5jZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 328,
+    "key": "minecraft:jungle_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6anVuZ2xlX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 329,
+    "key": "minecraft:acacia_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YWNhY2lhX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 330,
+    "key": "minecraft:cherry_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y2hlcnJ5X2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jaGVycnlfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 331,
+    "key": "minecraft:dark_oak_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZGFya19vYWtfZmVuY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19mZW5jZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 332,
+    "key": "minecraft:pale_oak_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cGFsZV9vYWtfZmVuY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19mZW5jZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 333,
+    "key": "minecraft:mangrove_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bWFuZ3JvdmVfZmVuY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9mZW5jZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 334,
+    "key": "minecraft:bamboo_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmFtYm9vX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iYW1ib29fZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 335,
+    "key": "minecraft:crimson_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y3JpbXNvbl9mZW5jZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2ZlbmNlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 336,
+    "key": "minecraft:warped_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2FycGVkX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC53YXJwZWRfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 337,
+    "key": "minecraft:pumpkin",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6cHVtcGtpbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5wdW1wa2luAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 338,
+    "key": "minecraft:carved_pumpkin",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAEabWluZWNyYWZ0Om1pc2MvcHVtcGtpbmJsdXIAAQAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y2FydmVkX3B1bXBraW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jYXJ2ZWRfcHVtcGtpbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 339,
+    "key": "minecraft:jack_o_lantern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6amFja19vX2xhbnRlcm4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5qYWNrX29fbGFudGVybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 340,
+    "key": "minecraft:netherrack",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6bmV0aGVycmFjaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5uZXRoZXJyYWNrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 341,
+    "key": "minecraft:soul_sand",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6c291bF9zYW5k",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5zb3VsX3NhbmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 342,
+    "key": "minecraft:soul_soil",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6c291bF9zb2ls",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5zb3VsX3NvaWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 343,
+    "key": "minecraft:basalt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YmFzYWx0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5iYXNhbHQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 344,
+    "key": "minecraft:polished_basalt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cG9saXNoZWRfYmFzYWx0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9iYXNhbHQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 345,
+    "key": "minecraft:smooth_basalt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c21vb3RoX2Jhc2FsdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfYmFzYWx0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 346,
+    "key": "minecraft:soul_torch",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c291bF90b3JjaA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zb3VsX3RvcmNoAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 347,
+    "key": "minecraft:glowstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Z2xvd3N0b25l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5nbG93c3RvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 348,
+    "key": "minecraft:infested_stone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6aW5mZXN0ZWRfc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9zdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 349,
+    "key": "minecraft:infested_cobblestone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6aW5mZXN0ZWRfY29iYmxlc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9jb2JibGVzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 350,
+    "key": "minecraft:infested_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6aW5mZXN0ZWRfc3RvbmVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9zdG9uZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 351,
+    "key": "minecraft:infested_mossy_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByVtaW5lY3JhZnQ6aW5mZXN0ZWRfbW9zc3lfc3RvbmVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2Jsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9tb3NzeV9zdG9uZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 352,
+    "key": "minecraft:infested_cracked_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6aW5mZXN0ZWRfY3JhY2tlZF9zdG9uZV9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9jcmFja2VkX3N0b25lX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 353,
+    "key": "minecraft:infested_chiseled_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByhtaW5lY3JhZnQ6aW5mZXN0ZWRfY2hpc2VsZWRfc3RvbmVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALmJsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9jaGlzZWxlZF9zdG9uZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 354,
+    "key": "minecraft:infested_deepslate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6aW5mZXN0ZWRfZGVlcHNsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5pbmZlc3RlZF9kZWVwc2xhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 355,
+    "key": "minecraft:stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c3RvbmVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zdG9uZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 356,
+    "key": "minecraft:mossy_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bW9zc3lfc3RvbmVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5tb3NzeV9zdG9uZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 357,
+    "key": "minecraft:cracked_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Y3JhY2tlZF9zdG9uZV9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5jcmFja2VkX3N0b25lX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 358,
+    "key": "minecraft:chiseled_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Y2hpc2VsZWRfc3RvbmVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9zdG9uZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 359,
+    "key": "minecraft:packed_mud",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cGFja2VkX211ZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5wYWNrZWRfbXVkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 360,
+    "key": "minecraft:mud_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6bXVkX2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5tdWRfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 361,
+    "key": "minecraft:deepslate_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZGVlcHNsYXRlX2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 362,
+    "key": "minecraft:cracked_deepslate_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6Y3JhY2tlZF9kZWVwc2xhdGVfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5jcmFja2VkX2RlZXBzbGF0ZV9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 363,
+    "key": "minecraft:deepslate_tiles",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGVlcHNsYXRlX3RpbGVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfdGlsZXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 364,
+    "key": "minecraft:cracked_deepslate_tiles",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Y3JhY2tlZF9kZWVwc2xhdGVfdGlsZXM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5jcmFja2VkX2RlZXBzbGF0ZV90aWxlcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 365,
+    "key": "minecraft:chiseled_deepslate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y2hpc2VsZWRfZGVlcHNsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9kZWVwc2xhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 366,
+    "key": "minecraft:reinforced_deepslate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cmVpbmZvcmNlZF9kZWVwc2xhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5yZWluZm9yY2VkX2RlZXBzbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 367,
+    "key": "minecraft:brown_mushroom_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6YnJvd25fbXVzaHJvb21fYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5icm93bl9tdXNocm9vbV9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 368,
+    "key": "minecraft:red_mushroom_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cmVkX211c2hyb29tX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5yZWRfbXVzaHJvb21fYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 369,
+    "key": "minecraft:mushroom_stem",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bXVzaHJvb21fc3RlbQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5tdXNocm9vbV9zdGVtAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 370,
+    "key": "minecraft:iron_bars",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6aXJvbl9iYXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5pcm9uX2JhcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 371,
+    "key": "minecraft:chain",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6Y2hhaW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5jaGFpbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 372,
+    "key": "minecraft:glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z2xhc3NfcGFuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5nbGFzc19wYW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 373,
+    "key": "minecraft:melon",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6bWVsb24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5tZWxvbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 374,
+    "key": "minecraft:vine",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6dmluZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC52aW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 375,
+    "key": "minecraft:glow_lichen",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z2xvd19saWNoZW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5nbG93X2xpY2hlbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 376,
+    "key": "minecraft:resin_clump",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cmVzaW5fY2x1bXA=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnJlc2luX2NsdW1wAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 377,
+    "key": "minecraft:resin_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cmVzaW5fYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5yZXNpbl9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 378,
+    "key": "minecraft:resin_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cmVzaW5fYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5yZXNpbl9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 379,
+    "key": "minecraft:resin_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cmVzaW5fYnJpY2tfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5yZXNpbl9icmlja19zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 380,
+    "key": "minecraft:resin_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cmVzaW5fYnJpY2tfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5yZXNpbl9icmlja19zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 381,
+    "key": "minecraft:resin_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cmVzaW5fYnJpY2tfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5yZXNpbl9icmlja193YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 382,
+    "key": "minecraft:chiseled_resin_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Y2hpc2VsZWRfcmVzaW5fYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9yZXNpbl9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 383,
+    "key": "minecraft:brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YnJpY2tfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5icmlja19zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 384,
+    "key": "minecraft:stone_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6c3RvbmVfYnJpY2tfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5zdG9uZV9icmlja19zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 385,
+    "key": "minecraft:mud_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bXVkX2JyaWNrX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5tdWRfYnJpY2tfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 386,
+    "key": "minecraft:mycelium",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6bXljZWxpdW0=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5teWNlbGl1bQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 387,
+    "key": "minecraft:lily_pad",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6bGlseV9wYWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5saWx5X3BhZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 388,
+    "key": "minecraft:nether_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bmV0aGVyX2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 389,
+    "key": "minecraft:cracked_nether_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Y3JhY2tlZF9uZXRoZXJfYnJpY2tz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5jcmFja2VkX25ldGhlcl9icmlja3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 390,
+    "key": "minecraft:chiseled_nether_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y2hpc2VsZWRfbmV0aGVyX2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9uZXRoZXJfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 391,
+    "key": "minecraft:nether_brick_fence",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bmV0aGVyX2JyaWNrX2ZlbmNl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfYnJpY2tfZmVuY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 392,
+    "key": "minecraft:nether_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bmV0aGVyX2JyaWNrX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5uZXRoZXJfYnJpY2tfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 393,
+    "key": "minecraft:sculk",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6c2N1bGs=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5zY3VsawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 394,
+    "key": "minecraft:sculk_vein",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c2N1bGtfdmVpbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5zY3Vsa192ZWluAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 395,
+    "key": "minecraft:sculk_catalyst",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c2N1bGtfY2F0YWx5c3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zY3Vsa19jYXRhbHlzdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 396,
+    "key": "minecraft:sculk_shrieker",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c2N1bGtfc2hyaWVrZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zY3Vsa19zaHJpZWtlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 397,
+    "key": "minecraft:enchanting_table",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZW5jaGFudGluZ190YWJsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5lbmNoYW50aW5nX3RhYmxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 398,
+    "key": "minecraft:end_portal_frame",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZW5kX3BvcnRhbF9mcmFtZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5lbmRfcG9ydGFsX2ZyYW1lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 399,
+    "key": "minecraft:end_stone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZW5kX3N0b25l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5lbmRfc3RvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 400,
+    "key": "minecraft:end_stone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZW5kX3N0b25lX2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5lbmRfc3RvbmVfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 401,
+    "key": "minecraft:dragon_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6ZHJhZ29uX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5kcmFnb25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 402,
+    "key": "minecraft:sandstone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c2FuZHN0b25lX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5zYW5kc3RvbmVfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 403,
+    "key": "minecraft:ender_chest",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZW5kZXJfY2hlc3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5lbmRlcl9jaGVzdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 404,
+    "key": "minecraft:emerald_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZW1lcmFsZF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5lbWVyYWxkX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 405,
+    "key": "minecraft:oak_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6b2FrX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5vYWtfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 406,
+    "key": "minecraft:spruce_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3BydWNlX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2Vfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 407,
+    "key": "minecraft:birch_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmlyY2hfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iaXJjaF9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 408,
+    "key": "minecraft:jungle_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6anVuZ2xlX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 409,
+    "key": "minecraft:acacia_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YWNhY2lhX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 410,
+    "key": "minecraft:cherry_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hlcnJ5X3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaGVycnlfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 411,
+    "key": "minecraft:dark_oak_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGFya19vYWtfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 412,
+    "key": "minecraft:pale_oak_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGFsZV9vYWtfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 413,
+    "key": "minecraft:mangrove_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bWFuZ3JvdmVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 414,
+    "key": "minecraft:bamboo_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmFtYm9vX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5iYW1ib29fc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 415,
+    "key": "minecraft:bamboo_mosaic_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6YmFtYm9vX21vc2FpY19zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5iYW1ib29fbW9zYWljX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 416,
+    "key": "minecraft:crimson_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JpbXNvbl9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 417,
+    "key": "minecraft:warped_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2FycGVkX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 418,
+    "key": "minecraft:command_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y29tbWFuZF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jb21tYW5kX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 419,
+    "key": "minecraft:beacon",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YmVhY29u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5iZWFjb24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 420,
+    "key": "minecraft:cobblestone_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Y29iYmxlc3RvbmVfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5jb2JibGVzdG9uZV93YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 421,
+    "key": "minecraft:mossy_cobblestone_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bW9zc3lfY29iYmxlc3RvbmVfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5tb3NzeV9jb2JibGVzdG9uZV93YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 422,
+    "key": "minecraft:brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YnJpY2tfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5icmlja193YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 423,
+    "key": "minecraft:prismarine_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cHJpc21hcmluZV93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 424,
+    "key": "minecraft:red_sandstone_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cmVkX3NhbmRzdG9uZV93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5yZWRfc2FuZHN0b25lX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 425,
+    "key": "minecraft:mossy_stone_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bW9zc3lfc3RvbmVfYnJpY2tfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5tb3NzeV9zdG9uZV9icmlja193YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 426,
+    "key": "minecraft:granite_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z3Jhbml0ZV93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ncmFuaXRlX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 427,
+    "key": "minecraft:stone_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c3RvbmVfYnJpY2tfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5zdG9uZV9icmlja193YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 428,
+    "key": "minecraft:mud_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bXVkX2JyaWNrX3dhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tdWRfYnJpY2tfd2FsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 429,
+    "key": "minecraft:nether_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bmV0aGVyX2JyaWNrX3dhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfYnJpY2tfd2FsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 430,
+    "key": "minecraft:andesite_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YW5kZXNpdGVfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hbmRlc2l0ZV93YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 431,
+    "key": "minecraft:red_nether_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cmVkX25ldGhlcl9icmlja193YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5yZWRfbmV0aGVyX2JyaWNrX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 432,
+    "key": "minecraft:sandstone_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c2FuZHN0b25lX3dhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zYW5kc3RvbmVfd2FsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 433,
+    "key": "minecraft:end_stone_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZW5kX3N0b25lX2JyaWNrX3dhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5lbmRfc3RvbmVfYnJpY2tfd2FsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 434,
+    "key": "minecraft:diorite_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6ZGlvcml0ZV93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5kaW9yaXRlX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 435,
+    "key": "minecraft:blackstone_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YmxhY2tzdG9uZV93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5ibGFja3N0b25lX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 436,
+    "key": "minecraft:polished_blackstone_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV93YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 437,
+    "key": "minecraft:polished_blackstone_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByhtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9icmlja193YWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX2JyaWNrX3dhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 438,
+    "key": "minecraft:cobbled_deepslate_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y29iYmxlZF9kZWVwc2xhdGVfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jb2JibGVkX2RlZXBzbGF0ZV93YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 439,
+    "key": "minecraft:polished_deepslate_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cG9saXNoZWRfZGVlcHNsYXRlX3dhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kZWVwc2xhdGVfd2FsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 440,
+    "key": "minecraft:deepslate_brick_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZGVlcHNsYXRlX2JyaWNrX3dhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfYnJpY2tfd2FsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 441,
+    "key": "minecraft:deepslate_tile_wall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGVlcHNsYXRlX3RpbGVfd2FsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfdGlsZV93YWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 442,
+    "key": "minecraft:anvil",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6YW52aWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5hbnZpbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 443,
+    "key": "minecraft:chipped_anvil",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hpcHBlZF9hbnZpbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaGlwcGVkX2FudmlsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 444,
+    "key": "minecraft:damaged_anvil",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGFtYWdlZF9hbnZpbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kYW1hZ2VkX2FudmlsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 445,
+    "key": "minecraft:chiseled_quartz_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Y2hpc2VsZWRfcXVhcnR6X2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9xdWFydHpfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 446,
+    "key": "minecraft:quartz_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cXVhcnR6X2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5xdWFydHpfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 447,
+    "key": "minecraft:quartz_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cXVhcnR6X2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5xdWFydHpfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 448,
+    "key": "minecraft:quartz_pillar",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cXVhcnR6X3BpbGxhcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5xdWFydHpfcGlsbGFyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 449,
+    "key": "minecraft:quartz_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cXVhcnR6X3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5xdWFydHpfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 450,
+    "key": "minecraft:white_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6d2hpdGVfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC53aGl0ZV90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 451,
+    "key": "minecraft:orange_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6b3JhbmdlX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 452,
+    "key": "minecraft:magenta_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bWFnZW50YV90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 453,
+    "key": "minecraft:light_blue_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6bGlnaHRfYmx1ZV90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 454,
+    "key": "minecraft:yellow_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6eWVsbG93X3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 455,
+    "key": "minecraft:lime_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bGltZV90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5saW1lX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 456,
+    "key": "minecraft:pink_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGlua190ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5waW5rX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 457,
+    "key": "minecraft:gray_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Z3JheV90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5ncmF5X3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 458,
+    "key": "minecraft:light_gray_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6bGlnaHRfZ3JheV90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 459,
+    "key": "minecraft:cyan_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y3lhbl90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5jeWFuX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 460,
+    "key": "minecraft:purple_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cHVycGxlX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 461,
+    "key": "minecraft:blue_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Ymx1ZV90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5ibHVlX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 462,
+    "key": "minecraft:brown_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YnJvd25fdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5icm93bl90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 463,
+    "key": "minecraft:green_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Z3JlZW5fdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5ncmVlbl90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 464,
+    "key": "minecraft:red_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cmVkX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5yZWRfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 465,
+    "key": "minecraft:black_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YmxhY2tfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5ibGFja190ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 466,
+    "key": "minecraft:barrier",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6YmFycmllcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5iYXJyaWVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 467,
+    "key": "minecraft:light",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:block_state": "PwEFbGV2ZWwCMTU=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6bGlnaHQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5saWdodAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 468,
+    "key": "minecraft:hay_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6aGF5X2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5oYXlfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 469,
+    "key": "minecraft:white_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEWbWluZWNyYWZ0OndoaXRlX2NhcnBldAABA0t/AQEB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2hpdGVfY2FycGV0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC53aGl0ZV9jYXJwZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 470,
+    "key": "minecraft:orange_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEXbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQAAQNLfwEBAQ==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6b3JhbmdlX2NhcnBldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfY2FycGV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 471,
+    "key": "minecraft:magenta_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEYbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bWFnZW50YV9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 472,
+    "key": "minecraft:light_blue_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEbbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfYmx1ZV9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 473,
+    "key": "minecraft:yellow_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEXbWluZWNyYWZ0OnllbGxvd19jYXJwZXQAAQNLfwEBAQ==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6eWVsbG93X2NhcnBldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfY2FycGV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 474,
+    "key": "minecraft:lime_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEVbWluZWNyYWZ0OmxpbWVfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bGltZV9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5saW1lX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 475,
+    "key": "minecraft:pink_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEVbWluZWNyYWZ0OnBpbmtfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGlua19jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5waW5rX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 476,
+    "key": "minecraft:gray_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEVbWluZWNyYWZ0OmdyYXlfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z3JheV9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ncmF5X2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 477,
+    "key": "minecraft:light_gray_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEbbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfZ3JheV9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 478,
+    "key": "minecraft:cyan_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEVbWluZWNyYWZ0OmN5YW5fY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y3lhbl9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jeWFuX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 479,
+    "key": "minecraft:purple_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEXbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQAAQNLfwEBAQ==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVycGxlX2NhcnBldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfY2FycGV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 480,
+    "key": "minecraft:blue_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEVbWluZWNyYWZ0OmJsdWVfY2FycGV0AAEDS38BAQE=",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Ymx1ZV9jYXJwZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ibHVlX2NhcnBldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 481,
+    "key": "minecraft:brown_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEWbWluZWNyYWZ0OmJyb3duX2NhcnBldAABA0t/AQEB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YnJvd25fY2FycGV0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5icm93bl9jYXJwZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 482,
+    "key": "minecraft:green_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEWbWluZWNyYWZ0OmdyZWVuX2NhcnBldAABA0t/AQEB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z3JlZW5fY2FycGV0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ncmVlbl9jYXJwZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 483,
+    "key": "minecraft:red_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEUbWluZWNyYWZ0OnJlZF9jYXJwZXQAAQNLfwEBAQ==",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cmVkX2NhcnBldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5yZWRfY2FycGV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 484,
+    "key": "minecraft:black_carpet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAaxBgEWbWluZWNyYWZ0OmJsYWNrX2NhcnBldAABA0t/AQEB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmxhY2tfY2FycGV0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ibGFja19jYXJwZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 485,
+    "key": "minecraft:terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6dGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC50ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 486,
+    "key": "minecraft:packed_ice",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cGFja2VkX2ljZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5wYWNrZWRfaWNlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 487,
+    "key": "minecraft:dirt_path",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZGlydF9wYXRo",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5kaXJ0X3BhdGgA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 488,
+    "key": "minecraft:sunflower",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6c3VuZmxvd2Vy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5zdW5mbG93ZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 489,
+    "key": "minecraft:lilac",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6bGlsYWM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5saWxhYwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 490,
+    "key": "minecraft:rose_bush",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6cm9zZV9idXNo",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5yb3NlX2J1c2gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 491,
+    "key": "minecraft:peony",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6cGVvbnk=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5wZW9ueQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 492,
+    "key": "minecraft:tall_grass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6dGFsbF9ncmFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC50YWxsX2dyYXNzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 493,
+    "key": "minecraft:large_fern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6bGFyZ2VfZmVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5sYXJnZV9mZXJuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 494,
+    "key": "minecraft:white_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6d2hpdGVfc3RhaW5lZF9nbGFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC53aGl0ZV9zdGFpbmVkX2dsYXNzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 495,
+    "key": "minecraft:orange_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6b3JhbmdlX3N0YWluZWRfZ2xhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5vcmFuZ2Vfc3RhaW5lZF9nbGFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 496,
+    "key": "minecraft:magenta_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6bWFnZW50YV9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 497,
+    "key": "minecraft:light_blue_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 498,
+    "key": "minecraft:yellow_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6eWVsbG93X3N0YWluZWRfZ2xhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfc3RhaW5lZF9nbGFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 499,
+    "key": "minecraft:lime_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bGltZV9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5saW1lX3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 500,
+    "key": "minecraft:pink_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cGlua19zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5waW5rX3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 501,
+    "key": "minecraft:gray_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Z3JheV9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5ncmF5X3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 502,
+    "key": "minecraft:light_gray_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6bGlnaHRfZ3JheV9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 503,
+    "key": "minecraft:cyan_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y3lhbl9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jeWFuX3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 504,
+    "key": "minecraft:purple_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cHVycGxlX3N0YWluZWRfZ2xhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfc3RhaW5lZF9nbGFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 505,
+    "key": "minecraft:blue_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Ymx1ZV9zdGFpbmVkX2dsYXNz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5ibHVlX3N0YWluZWRfZ2xhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 506,
+    "key": "minecraft:brown_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6YnJvd25fc3RhaW5lZF9nbGFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5icm93bl9zdGFpbmVkX2dsYXNzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 507,
+    "key": "minecraft:green_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6Z3JlZW5fc3RhaW5lZF9nbGFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5ncmVlbl9zdGFpbmVkX2dsYXNzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 508,
+    "key": "minecraft:red_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cmVkX3N0YWluZWRfZ2xhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5yZWRfc3RhaW5lZF9nbGFzcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 509,
+    "key": "minecraft:black_stained_glass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6YmxhY2tfc3RhaW5lZF9nbGFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5ibGFja19zdGFpbmVkX2dsYXNzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 510,
+    "key": "minecraft:white_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6d2hpdGVfc3RhaW5lZF9nbGFzc19wYW5l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC53aGl0ZV9zdGFpbmVkX2dsYXNzX3BhbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 511,
+    "key": "minecraft:orange_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6b3JhbmdlX3N0YWluZWRfZ2xhc3NfcGFuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC5vcmFuZ2Vfc3RhaW5lZF9nbGFzc19wYW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 512,
+    "key": "minecraft:magenta_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6bWFnZW50YV9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 513,
+    "key": "minecraft:light_blue_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 514,
+    "key": "minecraft:yellow_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6eWVsbG93X3N0YWluZWRfZ2xhc3NfcGFuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfc3RhaW5lZF9nbGFzc19wYW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 515,
+    "key": "minecraft:lime_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6bGltZV9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5saW1lX3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 516,
+    "key": "minecraft:pink_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cGlua19zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5waW5rX3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 517,
+    "key": "minecraft:gray_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Z3JheV9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5ncmF5X3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 518,
+    "key": "minecraft:light_gray_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6bGlnaHRfZ3JheV9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 519,
+    "key": "minecraft:cyan_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Y3lhbl9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5jeWFuX3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 520,
+    "key": "minecraft:purple_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6cHVycGxlX3N0YWluZWRfZ2xhc3NfcGFuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfc3RhaW5lZF9nbGFzc19wYW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 521,
+    "key": "minecraft:blue_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Ymx1ZV9zdGFpbmVkX2dsYXNzX3BhbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5ibHVlX3N0YWluZWRfZ2xhc3NfcGFuZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 522,
+    "key": "minecraft:brown_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6YnJvd25fc3RhaW5lZF9nbGFzc19wYW5l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5icm93bl9zdGFpbmVkX2dsYXNzX3BhbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 523,
+    "key": "minecraft:green_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6Z3JlZW5fc3RhaW5lZF9nbGFzc19wYW5l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5ncmVlbl9zdGFpbmVkX2dsYXNzX3BhbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 524,
+    "key": "minecraft:red_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6cmVkX3N0YWluZWRfZ2xhc3NfcGFuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5yZWRfc3RhaW5lZF9nbGFzc19wYW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 525,
+    "key": "minecraft:black_stained_glass_pane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6YmxhY2tfc3RhaW5lZF9nbGFzc19wYW5l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5ibGFja19zdGFpbmVkX2dsYXNzX3BhbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 526,
+    "key": "minecraft:prismarine",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cHJpc21hcmluZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 527,
+    "key": "minecraft:prismarine_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cHJpc21hcmluZV9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 528,
+    "key": "minecraft:dark_prismarine",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGFya19wcmlzbWFyaW5l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kYXJrX3ByaXNtYXJpbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 529,
+    "key": "minecraft:prismarine_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cHJpc21hcmluZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 530,
+    "key": "minecraft:prismarine_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cHJpc21hcmluZV9icmlja19zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5wcmlzbWFyaW5lX2JyaWNrX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 531,
+    "key": "minecraft:dark_prismarine_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZGFya19wcmlzbWFyaW5lX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5kYXJrX3ByaXNtYXJpbmVfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 532,
+    "key": "minecraft:sea_lantern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c2VhX2xhbnRlcm4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zZWFfbGFudGVybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 533,
+    "key": "minecraft:red_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cmVkX3NhbmRzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5yZWRfc2FuZHN0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 534,
+    "key": "minecraft:chiseled_red_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y2hpc2VsZWRfcmVkX3NhbmRzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9yZWRfc2FuZHN0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 535,
+    "key": "minecraft:cut_red_sandstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y3V0X3JlZF9zYW5kc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5jdXRfcmVkX3NhbmRzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 536,
+    "key": "minecraft:red_sandstone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cmVkX3NhbmRzdG9uZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5yZWRfc2FuZHN0b25lX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 537,
+    "key": "minecraft:repeating_command_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cmVwZWF0aW5nX2NvbW1hbmRfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5yZXBlYXRpbmdfY29tbWFuZF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 538,
+    "key": "minecraft:chain_command_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6Y2hhaW5fY29tbWFuZF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5jaGFpbl9jb21tYW5kX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 539,
+    "key": "minecraft:magma_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWFnbWFfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5tYWdtYV9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 540,
+    "key": "minecraft:nether_wart_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bmV0aGVyX3dhcnRfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5uZXRoZXJfd2FydF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 541,
+    "key": "minecraft:warped_wart_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6d2FycGVkX3dhcnRfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfd2FydF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 542,
+    "key": "minecraft:red_nether_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cmVkX25ldGhlcl9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5yZWRfbmV0aGVyX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 543,
+    "key": "minecraft:bone_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Ym9uZV9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ib25lX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 544,
+    "key": "minecraft:structure_void",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c3RydWN0dXJlX3ZvaWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zdHJ1Y3R1cmVfdm9pZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 545,
+    "key": "minecraft:shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c2h1bGtlcl9ib3g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zaHVsa2VyX2JveAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 546,
+    "key": "minecraft:white_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6d2hpdGVfc2h1bGtlcl9ib3g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC53aGl0ZV9zaHVsa2VyX2JveAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 547,
+    "key": "minecraft:orange_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6b3JhbmdlX3NodWxrZXJfYm94",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5vcmFuZ2Vfc2h1bGtlcl9ib3gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 548,
+    "key": "minecraft:magenta_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bWFnZW50YV9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 549,
+    "key": "minecraft:light_blue_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 550,
+    "key": "minecraft:yellow_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6eWVsbG93X3NodWxrZXJfYm94",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfc2h1bGtlcl9ib3gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 551,
+    "key": "minecraft:lime_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bGltZV9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5saW1lX3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 552,
+    "key": "minecraft:pink_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cGlua19zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5waW5rX3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 553,
+    "key": "minecraft:gray_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Z3JheV9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5ncmF5X3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 554,
+    "key": "minecraft:light_gray_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bGlnaHRfZ3JheV9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 555,
+    "key": "minecraft:cyan_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Y3lhbl9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5jeWFuX3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 556,
+    "key": "minecraft:purple_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cHVycGxlX3NodWxrZXJfYm94",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfc2h1bGtlcl9ib3gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 557,
+    "key": "minecraft:blue_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Ymx1ZV9zaHVsa2VyX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5ibHVlX3NodWxrZXJfYm94AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 558,
+    "key": "minecraft:brown_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YnJvd25fc2h1bGtlcl9ib3g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5icm93bl9zaHVsa2VyX2JveAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 559,
+    "key": "minecraft:green_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Z3JlZW5fc2h1bGtlcl9ib3g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5ncmVlbl9zaHVsa2VyX2JveAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 560,
+    "key": "minecraft:red_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cmVkX3NodWxrZXJfYm94",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5yZWRfc2h1bGtlcl9ib3gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 561,
+    "key": "minecraft:black_shulker_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YmxhY2tfc2h1bGtlcl9ib3g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5ibGFja19zaHVsa2VyX2JveAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 562,
+    "key": "minecraft:white_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6d2hpdGVfZ2xhemVkX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC53aGl0ZV9nbGF6ZWRfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 563,
+    "key": "minecraft:orange_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6b3JhbmdlX2dsYXplZF90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfZ2xhemVkX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 564,
+    "key": "minecraft:magenta_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6bWFnZW50YV9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 565,
+    "key": "minecraft:light_blue_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByZtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALGJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 566,
+    "key": "minecraft:yellow_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6eWVsbG93X2dsYXplZF90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfZ2xhemVkX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 567,
+    "key": "minecraft:lime_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bGltZV9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5saW1lX2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 568,
+    "key": "minecraft:pink_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6cGlua19nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5waW5rX2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 569,
+    "key": "minecraft:gray_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Z3JheV9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5ncmF5X2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 570,
+    "key": "minecraft:light_gray_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByZtaW5lY3JhZnQ6bGlnaHRfZ3JheV9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALGJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 571,
+    "key": "minecraft:cyan_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y3lhbl9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jeWFuX2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 572,
+    "key": "minecraft:purple_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6cHVycGxlX2dsYXplZF90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfZ2xhemVkX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 573,
+    "key": "minecraft:blue_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Ymx1ZV9nbGF6ZWRfdGVycmFjb3R0YQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5ibHVlX2dsYXplZF90ZXJyYWNvdHRhAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 574,
+    "key": "minecraft:brown_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6YnJvd25fZ2xhemVkX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5icm93bl9nbGF6ZWRfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 575,
+    "key": "minecraft:green_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Z3JlZW5fZ2xhemVkX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5ncmVlbl9nbGF6ZWRfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 576,
+    "key": "minecraft:red_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cmVkX2dsYXplZF90ZXJyYWNvdHRh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5yZWRfZ2xhemVkX3RlcnJhY290dGEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 577,
+    "key": "minecraft:black_glazed_terracotta",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6YmxhY2tfZ2xhemVkX3RlcnJhY290dGE=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5ibGFja19nbGF6ZWRfdGVycmFjb3R0YQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 578,
+    "key": "minecraft:white_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6d2hpdGVfY29uY3JldGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC53aGl0ZV9jb25jcmV0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 579,
+    "key": "minecraft:orange_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6b3JhbmdlX2NvbmNyZXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfY29uY3JldGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 580,
+    "key": "minecraft:magenta_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bWFnZW50YV9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 581,
+    "key": "minecraft:light_blue_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bGlnaHRfYmx1ZV9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 582,
+    "key": "minecraft:yellow_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6eWVsbG93X2NvbmNyZXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC55ZWxsb3dfY29uY3JldGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 583,
+    "key": "minecraft:lime_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bGltZV9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5saW1lX2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 584,
+    "key": "minecraft:pink_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGlua19jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5waW5rX2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 585,
+    "key": "minecraft:gray_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Z3JheV9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5ncmF5X2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 586,
+    "key": "minecraft:light_gray_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bGlnaHRfZ3JheV9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 587,
+    "key": "minecraft:cyan_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y3lhbl9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jeWFuX2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 588,
+    "key": "minecraft:purple_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cHVycGxlX2NvbmNyZXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wdXJwbGVfY29uY3JldGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 589,
+    "key": "minecraft:blue_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Ymx1ZV9jb25jcmV0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5ibHVlX2NvbmNyZXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 590,
+    "key": "minecraft:brown_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YnJvd25fY29uY3JldGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5icm93bl9jb25jcmV0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 591,
+    "key": "minecraft:green_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Z3JlZW5fY29uY3JldGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5ncmVlbl9jb25jcmV0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 592,
+    "key": "minecraft:red_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cmVkX2NvbmNyZXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5yZWRfY29uY3JldGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 593,
+    "key": "minecraft:black_concrete",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YmxhY2tfY29uY3JldGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5ibGFja19jb25jcmV0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 594,
+    "key": "minecraft:white_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2hpdGVfY29uY3JldGVfcG93ZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53aGl0ZV9jb25jcmV0ZV9wb3dkZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 595,
+    "key": "minecraft:orange_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6b3JhbmdlX2NvbmNyZXRlX3Bvd2Rlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfY29uY3JldGVfcG93ZGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 596,
+    "key": "minecraft:magenta_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6bWFnZW50YV9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 597,
+    "key": "minecraft:light_blue_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 598,
+    "key": "minecraft:yellow_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6eWVsbG93X2NvbmNyZXRlX3Bvd2Rlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfY29uY3JldGVfcG93ZGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 599,
+    "key": "minecraft:lime_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6bGltZV9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5saW1lX2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 600,
+    "key": "minecraft:pink_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cGlua19jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5waW5rX2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 601,
+    "key": "minecraft:gray_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Z3JheV9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5ncmF5X2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 602,
+    "key": "minecraft:light_gray_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6bGlnaHRfZ3JheV9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 603,
+    "key": "minecraft:cyan_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Y3lhbl9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5jeWFuX2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 604,
+    "key": "minecraft:purple_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6cHVycGxlX2NvbmNyZXRlX3Bvd2Rlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfY29uY3JldGVfcG93ZGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 605,
+    "key": "minecraft:blue_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Ymx1ZV9jb25jcmV0ZV9wb3dkZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5ibHVlX2NvbmNyZXRlX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 606,
+    "key": "minecraft:brown_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6YnJvd25fY29uY3JldGVfcG93ZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5icm93bl9jb25jcmV0ZV9wb3dkZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 607,
+    "key": "minecraft:green_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Z3JlZW5fY29uY3JldGVfcG93ZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5ncmVlbl9jb25jcmV0ZV9wb3dkZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 608,
+    "key": "minecraft:red_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cmVkX2NvbmNyZXRlX3Bvd2Rlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5yZWRfY29uY3JldGVfcG93ZGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 609,
+    "key": "minecraft:black_concrete_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6YmxhY2tfY29uY3JldGVfcG93ZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5ibGFja19jb25jcmV0ZV9wb3dkZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 610,
+    "key": "minecraft:turtle_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6dHVydGxlX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC50dXJ0bGVfZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 611,
+    "key": "minecraft:sniffer_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c25pZmZlcl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zbmlmZmVyX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 612,
+    "key": "minecraft:dead_tube_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVhZF90dWJlX2NvcmFsX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWFkX3R1YmVfY29yYWxfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 613,
+    "key": "minecraft:dead_brain_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZGVhZF9icmFpbl9jb3JhbF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5kZWFkX2JyYWluX2NvcmFsX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 614,
+    "key": "minecraft:dead_bubble_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6ZGVhZF9idWJibGVfY29yYWxfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5kZWFkX2J1YmJsZV9jb3JhbF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 615,
+    "key": "minecraft:dead_fire_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVhZF9maXJlX2NvcmFsX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWFkX2ZpcmVfY29yYWxfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 616,
+    "key": "minecraft:dead_horn_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVhZF9ob3JuX2NvcmFsX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWFkX2hvcm5fY29yYWxfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 617,
+    "key": "minecraft:tube_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6dHViZV9jb3JhbF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC50dWJlX2NvcmFsX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 618,
+    "key": "minecraft:brain_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YnJhaW5fY29yYWxfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5icmFpbl9jb3JhbF9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 619,
+    "key": "minecraft:bubble_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6YnViYmxlX2NvcmFsX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5idWJibGVfY29yYWxfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 620,
+    "key": "minecraft:fire_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZmlyZV9jb3JhbF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5maXJlX2NvcmFsX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 621,
+    "key": "minecraft:horn_coral_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6aG9ybl9jb3JhbF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5ob3JuX2NvcmFsX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 622,
+    "key": "minecraft:tube_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6dHViZV9jb3JhbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC50dWJlX2NvcmFsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 623,
+    "key": "minecraft:brain_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YnJhaW5fY29yYWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5icmFpbl9jb3JhbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 624,
+    "key": "minecraft:bubble_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YnViYmxlX2NvcmFs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5idWJibGVfY29yYWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 625,
+    "key": "minecraft:fire_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6ZmlyZV9jb3JhbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5maXJlX2NvcmFsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 626,
+    "key": "minecraft:horn_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aG9ybl9jb3JhbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ob3JuX2NvcmFsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 627,
+    "key": "minecraft:dead_brain_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZGVhZF9icmFpbl9jb3JhbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5kZWFkX2JyYWluX2NvcmFsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 628,
+    "key": "minecraft:dead_bubble_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6ZGVhZF9idWJibGVfY29yYWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5kZWFkX2J1YmJsZV9jb3JhbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 629,
+    "key": "minecraft:dead_fire_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGVhZF9maXJlX2NvcmFs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kZWFkX2ZpcmVfY29yYWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 630,
+    "key": "minecraft:dead_horn_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGVhZF9ob3JuX2NvcmFs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kZWFkX2hvcm5fY29yYWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 631,
+    "key": "minecraft:dead_tube_coral",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGVhZF90dWJlX2NvcmFs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kZWFkX3R1YmVfY29yYWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 632,
+    "key": "minecraft:tube_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6dHViZV9jb3JhbF9mYW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC50dWJlX2NvcmFsX2ZhbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 633,
+    "key": "minecraft:brain_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YnJhaW5fY29yYWxfZmFu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5icmFpbl9jb3JhbF9mYW4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 634,
+    "key": "minecraft:bubble_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YnViYmxlX2NvcmFsX2Zhbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5idWJibGVfY29yYWxfZmFuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 635,
+    "key": "minecraft:fire_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZmlyZV9jb3JhbF9mYW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5maXJlX2NvcmFsX2ZhbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 636,
+    "key": "minecraft:horn_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6aG9ybl9jb3JhbF9mYW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5ob3JuX2NvcmFsX2ZhbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 637,
+    "key": "minecraft:dead_tube_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGVhZF90dWJlX2NvcmFsX2Zhbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kZWFkX3R1YmVfY29yYWxfZmFuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 638,
+    "key": "minecraft:dead_brain_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZGVhZF9icmFpbl9jb3JhbF9mYW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5kZWFkX2JyYWluX2NvcmFsX2ZhbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 639,
+    "key": "minecraft:dead_bubble_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVhZF9idWJibGVfY29yYWxfZmFu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWFkX2J1YmJsZV9jb3JhbF9mYW4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 640,
+    "key": "minecraft:dead_fire_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGVhZF9maXJlX2NvcmFsX2Zhbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kZWFkX2ZpcmVfY29yYWxfZmFuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 641,
+    "key": "minecraft:dead_horn_coral_fan",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGVhZF9ob3JuX2NvcmFsX2Zhbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kZWFkX2hvcm5fY29yYWxfZmFuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 642,
+    "key": "minecraft:blue_ice",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Ymx1ZV9pY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5ibHVlX2ljZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 643,
+    "key": "minecraft:conduit",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6Y29uZHVpdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5jb25kdWl0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 644,
+    "key": "minecraft:polished_granite_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cG9saXNoZWRfZ3Jhbml0ZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ncmFuaXRlX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 645,
+    "key": "minecraft:smooth_red_sandstone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByVtaW5lY3JhZnQ6c21vb3RoX3JlZF9zYW5kc3RvbmVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2Jsb2NrLm1pbmVjcmFmdC5zbW9vdGhfcmVkX3NhbmRzdG9uZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 646,
+    "key": "minecraft:mossy_stone_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6bW9zc3lfc3RvbmVfYnJpY2tfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5tb3NzeV9zdG9uZV9icmlja19zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 647,
+    "key": "minecraft:polished_diorite_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cG9saXNoZWRfZGlvcml0ZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kaW9yaXRlX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 648,
+    "key": "minecraft:mossy_cobblestone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6bW9zc3lfY29iYmxlc3RvbmVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5tb3NzeV9jb2JibGVzdG9uZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 649,
+    "key": "minecraft:end_stone_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZW5kX3N0b25lX2JyaWNrX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5lbmRfc3RvbmVfYnJpY2tfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 650,
+    "key": "minecraft:stone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c3RvbmVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zdG9uZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 651,
+    "key": "minecraft:smooth_sandstone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6c21vb3RoX3NhbmRzdG9uZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5zbW9vdGhfc2FuZHN0b25lX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 652,
+    "key": "minecraft:smooth_quartz_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c21vb3RoX3F1YXJ0el9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfcXVhcnR6X3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 653,
+    "key": "minecraft:granite_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Z3Jhbml0ZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5ncmFuaXRlX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 654,
+    "key": "minecraft:andesite_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YW5kZXNpdGVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5hbmRlc2l0ZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 655,
+    "key": "minecraft:red_nether_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cmVkX25ldGhlcl9icmlja19zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5yZWRfbmV0aGVyX2JyaWNrX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 656,
+    "key": "minecraft:polished_andesite_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6cG9saXNoZWRfYW5kZXNpdGVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9hbmRlc2l0ZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 657,
+    "key": "minecraft:diorite_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZGlvcml0ZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5kaW9yaXRlX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 658,
+    "key": "minecraft:cobbled_deepslate_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6Y29iYmxlZF9kZWVwc2xhdGVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5jb2JibGVkX2RlZXBzbGF0ZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 659,
+    "key": "minecraft:polished_deepslate_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6cG9saXNoZWRfZGVlcHNsYXRlX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kZWVwc2xhdGVfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 660,
+    "key": "minecraft:deepslate_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZGVlcHNsYXRlX2JyaWNrX3N0YWlycw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfYnJpY2tfc3RhaXJzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 661,
+    "key": "minecraft:deepslate_tile_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGVlcHNsYXRlX3RpbGVfc3RhaXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfdGlsZV9zdGFpcnMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 662,
+    "key": "minecraft:polished_granite_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cG9saXNoZWRfZ3Jhbml0ZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ncmFuaXRlX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 663,
+    "key": "minecraft:smooth_red_sandstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6c21vb3RoX3JlZF9zYW5kc3RvbmVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfcmVkX3NhbmRzdG9uZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 664,
+    "key": "minecraft:mossy_stone_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bW9zc3lfc3RvbmVfYnJpY2tfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5tb3NzeV9zdG9uZV9icmlja19zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 665,
+    "key": "minecraft:polished_diorite_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cG9saXNoZWRfZGlvcml0ZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kaW9yaXRlX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 666,
+    "key": "minecraft:mossy_cobblestone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6bW9zc3lfY29iYmxlc3RvbmVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5tb3NzeV9jb2JibGVzdG9uZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 667,
+    "key": "minecraft:end_stone_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZW5kX3N0b25lX2JyaWNrX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5lbmRfc3RvbmVfYnJpY2tfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 668,
+    "key": "minecraft:smooth_sandstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c21vb3RoX3NhbmRzdG9uZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfc2FuZHN0b25lX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 669,
+    "key": "minecraft:smooth_quartz_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6c21vb3RoX3F1YXJ0el9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5zbW9vdGhfcXVhcnR6X3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 670,
+    "key": "minecraft:granite_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z3Jhbml0ZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ncmFuaXRlX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 671,
+    "key": "minecraft:andesite_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YW5kZXNpdGVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hbmRlc2l0ZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 672,
+    "key": "minecraft:red_nether_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cmVkX25ldGhlcl9icmlja19zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5yZWRfbmV0aGVyX2JyaWNrX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 673,
+    "key": "minecraft:polished_andesite_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6cG9saXNoZWRfYW5kZXNpdGVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9hbmRlc2l0ZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 674,
+    "key": "minecraft:diorite_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6ZGlvcml0ZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5kaW9yaXRlX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 675,
+    "key": "minecraft:cobbled_deepslate_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y29iYmxlZF9kZWVwc2xhdGVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jb2JibGVkX2RlZXBzbGF0ZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 676,
+    "key": "minecraft:polished_deepslate_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cG9saXNoZWRfZGVlcHNsYXRlX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9kZWVwc2xhdGVfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 677,
+    "key": "minecraft:deepslate_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZGVlcHNsYXRlX2JyaWNrX3NsYWI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfYnJpY2tfc2xhYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 678,
+    "key": "minecraft:deepslate_tile_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGVlcHNsYXRlX3RpbGVfc2xhYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kZWVwc2xhdGVfdGlsZV9zbGFiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 679,
+    "key": "minecraft:scaffolding",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c2NhZmZvbGRpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zY2FmZm9sZGluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 680,
+    "key": "minecraft:redstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cmVkc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnJlZHN0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 681,
+    "key": "minecraft:redstone_torch",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cmVkc3RvbmVfdG9yY2g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5yZWRzdG9uZV90b3JjaAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 682,
+    "key": "minecraft:redstone_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cmVkc3RvbmVfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5yZWRzdG9uZV9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 683,
+    "key": "minecraft:repeater",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cmVwZWF0ZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5yZXBlYXRlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 684,
+    "key": "minecraft:comparator",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y29tcGFyYXRvcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5jb21wYXJhdG9yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 685,
+    "key": "minecraft:piston",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6cGlzdG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5waXN0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 686,
+    "key": "minecraft:sticky_piston",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3RpY2t5X3Bpc3Rvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zdGlja3lfcGlzdG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 687,
+    "key": "minecraft:slime_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c2xpbWVfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zbGltZV9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 688,
+    "key": "minecraft:honey_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6aG9uZXlfYmxvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ob25leV9ibG9jawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 689,
+    "key": "minecraft:observer",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2JzZXJ2ZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5vYnNlcnZlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 690,
+    "key": "minecraft:hopper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6aG9wcGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5ob3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 691,
+    "key": "minecraft:dispenser",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZGlzcGVuc2Vy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5kaXNwZW5zZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 692,
+    "key": "minecraft:dropper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZHJvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5kcm9wcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 693,
+    "key": "minecraft:lectern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6bGVjdGVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5sZWN0ZXJuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 694,
+    "key": "minecraft:target",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6dGFyZ2V0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC50YXJnZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 695,
+    "key": "minecraft:lever",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6bGV2ZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC5sZXZlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 696,
+    "key": "minecraft:lightning_rod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bGlnaHRuaW5nX3JvZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5saWdodG5pbmdfcm9kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 697,
+    "key": "minecraft:daylight_detector",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6ZGF5bGlnaHRfZGV0ZWN0b3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5kYXlsaWdodF9kZXRlY3RvcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 698,
+    "key": "minecraft:sculk_sensor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c2N1bGtfc2Vuc29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zY3Vsa19zZW5zb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 699,
+    "key": "minecraft:calibrated_sculk_sensor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6Y2FsaWJyYXRlZF9zY3Vsa19zZW5zb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5jYWxpYnJhdGVkX3NjdWxrX3NlbnNvcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 700,
+    "key": "minecraft:tripwire_hook",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6dHJpcHdpcmVfaG9vaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC50cmlwd2lyZV9ob29rAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 701,
+    "key": "minecraft:trapped_chest",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6dHJhcHBlZF9jaGVzdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC50cmFwcGVkX2NoZXN0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 702,
+    "key": "minecraft:tnt",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6dG50",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2Jsb2NrLm1pbmVjcmFmdC50bnQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 703,
+    "key": "minecraft:redstone_lamp",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cmVkc3RvbmVfbGFtcA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5yZWRzdG9uZV9sYW1wAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 704,
+    "key": "minecraft:note_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6bm90ZV9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ub3RlX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 705,
+    "key": "minecraft:stone_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c3RvbmVfYnV0dG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zdG9uZV9idXR0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 706,
+    "key": "minecraft:polished_blackstone_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9idXR0b24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX2J1dHRvbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 707,
+    "key": "minecraft:oak_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6b2FrX2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5vYWtfYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 708,
+    "key": "minecraft:spruce_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3BydWNlX2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 709,
+    "key": "minecraft:birch_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmlyY2hfYnV0dG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5iaXJjaF9idXR0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 710,
+    "key": "minecraft:jungle_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6anVuZ2xlX2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 711,
+    "key": "minecraft:acacia_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YWNhY2lhX2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 712,
+    "key": "minecraft:cherry_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2hlcnJ5X2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5jaGVycnlfYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 713,
+    "key": "minecraft:dark_oak_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGFya19vYWtfYnV0dG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19idXR0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 714,
+    "key": "minecraft:pale_oak_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGFsZV9vYWtfYnV0dG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19idXR0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 715,
+    "key": "minecraft:mangrove_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bWFuZ3JvdmVfYnV0dG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9idXR0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 716,
+    "key": "minecraft:bamboo_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmFtYm9vX2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5iYW1ib29fYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 717,
+    "key": "minecraft:crimson_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y3JpbXNvbl9idXR0b24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2J1dHRvbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 718,
+    "key": "minecraft:warped_button",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d2FycGVkX2J1dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfYnV0dG9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 719,
+    "key": "minecraft:stone_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c3RvbmVfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5zdG9uZV9wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 720,
+    "key": "minecraft:polished_blackstone_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByxtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9wcmVzc3VyZV9wbGF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX3ByZXNzdXJlX3BsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 721,
+    "key": "minecraft:light_weighted_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6bGlnaHRfd2VpZ2h0ZWRfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC5saWdodF93ZWlnaHRlZF9wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 722,
+    "key": "minecraft:heavy_weighted_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6aGVhdnlfd2VpZ2h0ZWRfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC5oZWF2eV93ZWlnaHRlZF9wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 723,
+    "key": "minecraft:oak_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6b2FrX3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5vYWtfcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 724,
+    "key": "minecraft:spruce_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c3BydWNlX3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 725,
+    "key": "minecraft:birch_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6YmlyY2hfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5iaXJjaF9wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 726,
+    "key": "minecraft:jungle_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6anVuZ2xlX3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 727,
+    "key": "minecraft:acacia_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6YWNhY2lhX3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 728,
+    "key": "minecraft:cherry_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Y2hlcnJ5X3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5jaGVycnlfcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 729,
+    "key": "minecraft:dark_oak_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6ZGFya19vYWtfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 730,
+    "key": "minecraft:pale_oak_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6cGFsZV9vYWtfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 731,
+    "key": "minecraft:mangrove_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6bWFuZ3JvdmVfcHJlc3N1cmVfcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9wcmVzc3VyZV9wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 732,
+    "key": "minecraft:bamboo_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6YmFtYm9vX3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5iYW1ib29fcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 733,
+    "key": "minecraft:crimson_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y3JpbXNvbl9wcmVzc3VyZV9wbGF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3ByZXNzdXJlX3BsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 734,
+    "key": "minecraft:warped_pressure_plate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2FycGVkX3ByZXNzdXJlX3BsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfcHJlc3N1cmVfcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 735,
+    "key": "minecraft:iron_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6aXJvbl9kb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5pcm9uX2Rvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 736,
+    "key": "minecraft:oak_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2FrX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5vYWtfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 737,
+    "key": "minecraft:spruce_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3BydWNlX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 738,
+    "key": "minecraft:birch_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmlyY2hfZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5iaXJjaF9kb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 739,
+    "key": "minecraft:jungle_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6anVuZ2xlX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5qdW5nbGVfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 740,
+    "key": "minecraft:acacia_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YWNhY2lhX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5hY2FjaWFfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 741,
+    "key": "minecraft:cherry_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y2hlcnJ5X2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jaGVycnlfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 742,
+    "key": "minecraft:dark_oak_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGFya19vYWtfZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19kb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 743,
+    "key": "minecraft:pale_oak_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGFsZV9vYWtfZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19kb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 744,
+    "key": "minecraft:mangrove_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bWFuZ3JvdmVfZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9kb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 745,
+    "key": "minecraft:bamboo_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YmFtYm9vX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5iYW1ib29fZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 746,
+    "key": "minecraft:crimson_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y3JpbXNvbl9kb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2Rvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 747,
+    "key": "minecraft:warped_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2FycGVkX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC53YXJwZWRfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 748,
+    "key": "minecraft:copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y29wcGVyX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jb3BwZXJfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 749,
+    "key": "minecraft:exposed_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZXhwb3NlZF9jb3BwZXJfZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2NvcHBlcl9kb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 750,
+    "key": "minecraft:weathered_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2VhdGhlcmVkX2NvcHBlcl9kb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY29wcGVyX2Rvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 751,
+    "key": "minecraft:oxidized_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6b3hpZGl6ZWRfY29wcGVyX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jb3BwZXJfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 752,
+    "key": "minecraft:waxed_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6d2F4ZWRfY29wcGVyX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC53YXhlZF9jb3BwZXJfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 753,
+    "key": "minecraft:waxed_exposed_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jb3BwZXJfZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2NvcHBlcl9kb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 754,
+    "key": "minecraft:waxed_weathered_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByVtaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2NvcHBlcl9kb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2Jsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY29wcGVyX2Rvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 755,
+    "key": "minecraft:waxed_oxidized_copper_door",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY29wcGVyX2Rvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jb3BwZXJfZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 756,
+    "key": "minecraft:iron_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6aXJvbl90cmFwZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5pcm9uX3RyYXBkb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 757,
+    "key": "minecraft:oak_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6b2FrX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5vYWtfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 758,
+    "key": "minecraft:spruce_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c3BydWNlX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 759,
+    "key": "minecraft:birch_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YmlyY2hfdHJhcGRvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5iaXJjaF90cmFwZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 760,
+    "key": "minecraft:jungle_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6anVuZ2xlX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5qdW5nbGVfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 761,
+    "key": "minecraft:acacia_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YWNhY2lhX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5hY2FjaWFfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 762,
+    "key": "minecraft:cherry_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y2hlcnJ5X3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5jaGVycnlfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 763,
+    "key": "minecraft:dark_oak_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6ZGFya19vYWtfdHJhcGRvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha190cmFwZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 764,
+    "key": "minecraft:pale_oak_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cGFsZV9vYWtfdHJhcGRvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha190cmFwZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 765,
+    "key": "minecraft:mangrove_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bWFuZ3JvdmVfdHJhcGRvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV90cmFwZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 766,
+    "key": "minecraft:bamboo_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YmFtYm9vX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5iYW1ib29fdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 767,
+    "key": "minecraft:crimson_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Y3JpbXNvbl90cmFwZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3RyYXBkb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 768,
+    "key": "minecraft:warped_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6d2FycGVkX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC53YXJwZWRfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 769,
+    "key": "minecraft:copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y29wcGVyX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5jb3BwZXJfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 770,
+    "key": "minecraft:exposed_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6ZXhwb3NlZF9jb3BwZXJfdHJhcGRvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2Jsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2NvcHBlcl90cmFwZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 771,
+    "key": "minecraft:weathered_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2VhdGhlcmVkX2NvcHBlcl90cmFwZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY29wcGVyX3RyYXBkb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 772,
+    "key": "minecraft:oxidized_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6b3hpZGl6ZWRfY29wcGVyX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jb3BwZXJfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 773,
+    "key": "minecraft:waxed_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2F4ZWRfY29wcGVyX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53YXhlZF9jb3BwZXJfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 774,
+    "key": "minecraft:waxed_exposed_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BydtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jb3BwZXJfdHJhcGRvb3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALWJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2NvcHBlcl90cmFwZG9vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 775,
+    "key": "minecraft:waxed_weathered_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByltaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2NvcHBlcl90cmFwZG9vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2Jsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY29wcGVyX3RyYXBkb29yAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 776,
+    "key": "minecraft:waxed_oxidized_copper_trapdoor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByhtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY29wcGVyX3RyYXBkb29y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALmJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jb3BwZXJfdHJhcGRvb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 777,
+    "key": "minecraft:oak_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6b2FrX2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5vYWtfZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 778,
+    "key": "minecraft:spruce_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c3BydWNlX2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 779,
+    "key": "minecraft:birch_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YmlyY2hfZmVuY2VfZ2F0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5iaXJjaF9mZW5jZV9nYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 780,
+    "key": "minecraft:jungle_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6anVuZ2xlX2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5qdW5nbGVfZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 781,
+    "key": "minecraft:acacia_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YWNhY2lhX2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5hY2FjaWFfZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 782,
+    "key": "minecraft:cherry_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y2hlcnJ5X2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5jaGVycnlfZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 783,
+    "key": "minecraft:dark_oak_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGFya19vYWtfZmVuY2VfZ2F0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19mZW5jZV9nYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 784,
+    "key": "minecraft:pale_oak_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cGFsZV9vYWtfZmVuY2VfZ2F0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19mZW5jZV9nYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 785,
+    "key": "minecraft:mangrove_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bWFuZ3JvdmVfZmVuY2VfZ2F0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9mZW5jZV9nYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 786,
+    "key": "minecraft:bamboo_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YmFtYm9vX2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5iYW1ib29fZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 787,
+    "key": "minecraft:crimson_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y3JpbXNvbl9mZW5jZV9nYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2ZlbmNlX2dhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 788,
+    "key": "minecraft:warped_fence_gate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6d2FycGVkX2ZlbmNlX2dhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC53YXJwZWRfZmVuY2VfZ2F0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 789,
+    "key": "minecraft:powered_rail",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cG93ZXJlZF9yYWls",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5wb3dlcmVkX3JhaWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 790,
+    "key": "minecraft:detector_rail",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGV0ZWN0b3JfcmFpbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kZXRlY3Rvcl9yYWlsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 791,
+    "key": "minecraft:rail",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6cmFpbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5yYWlsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 792,
+    "key": "minecraft:activator_rail",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YWN0aXZhdG9yX3JhaWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5hY3RpdmF0b3JfcmFpbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 793,
+    "key": "minecraft:saddle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c2FkZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnNhZGRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 794,
+    "key": "minecraft:minecart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6bWluZWNhcnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0Lm1pbmVjYXJ0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 795,
+    "key": "minecraft:chest_minecart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y2hlc3RfbWluZWNhcnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmNoZXN0X21pbmVjYXJ0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 796,
+    "key": "minecraft:furnace_minecart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZnVybmFjZV9taW5lY2FydA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmZ1cm5hY2VfbWluZWNhcnQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 797,
+    "key": "minecraft:tnt_minecart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6dG50X21pbmVjYXJ0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LnRudF9taW5lY2FydAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 798,
+    "key": "minecraft:hopper_minecart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6aG9wcGVyX21pbmVjYXJ0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmhvcHBlcl9taW5lY2FydAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 799,
+    "key": "minecraft:carrot_on_a_stick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y2Fycm90X29uX2Ffc3RpY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmNhcnJvdF9vbl9hX3N0aWNrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ahk=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 800,
+    "key": "minecraft:warped_fungus_on_a_stick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6d2FycGVkX2Z1bmd1c19vbl9hX3N0aWNr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2l0ZW0ubWluZWNyYWZ0LndhcnBlZF9mdW5ndXNfb25fYV9zdGljawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AmQ=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 801,
+    "key": "minecraft:phantom_membrane",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cGhhbnRvbV9tZW1icmFuZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnBoYW50b21fbWVtYnJhbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 802,
+    "key": "minecraft:elytra",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANGARBtaW5lY3JhZnQ6ZWx5dHJhAAABAQA=",
+      "minecraft:glider": "Hg==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6ZWx5dHJh",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LmVseXRyYQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ArAD",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQKhBg=="
+    }
+  },
+  {
+    "id": 803,
+    "key": "minecraft:oak_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2FrX2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0Lm9ha19ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 804,
+    "key": "minecraft:oak_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6b2FrX2NoZXN0X2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm9ha19jaGVzdF9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 805,
+    "key": "minecraft:spruce_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3BydWNlX2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnNwcnVjZV9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 806,
+    "key": "minecraft:spruce_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c3BydWNlX2NoZXN0X2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnNwcnVjZV9jaGVzdF9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 807,
+    "key": "minecraft:birch_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmlyY2hfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmJpcmNoX2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 808,
+    "key": "minecraft:birch_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YmlyY2hfY2hlc3RfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmJpcmNoX2NoZXN0X2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 809,
+    "key": "minecraft:jungle_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6anVuZ2xlX2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lmp1bmdsZV9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 810,
+    "key": "minecraft:jungle_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6anVuZ2xlX2NoZXN0X2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0Lmp1bmdsZV9jaGVzdF9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 811,
+    "key": "minecraft:acacia_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YWNhY2lhX2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmFjYWNpYV9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 812,
+    "key": "minecraft:acacia_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YWNhY2lhX2NoZXN0X2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmFjYWNpYV9jaGVzdF9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 813,
+    "key": "minecraft:cherry_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y2hlcnJ5X2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmNoZXJyeV9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 814,
+    "key": "minecraft:cherry_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y2hlcnJ5X2NoZXN0X2JvYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmNoZXJyeV9jaGVzdF9ib2F0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 815,
+    "key": "minecraft:dark_oak_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGFya19vYWtfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmRhcmtfb2FrX2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 816,
+    "key": "minecraft:dark_oak_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGFya19vYWtfY2hlc3RfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmRhcmtfb2FrX2NoZXN0X2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 817,
+    "key": "minecraft:pale_oak_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGFsZV9vYWtfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnBhbGVfb2FrX2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 818,
+    "key": "minecraft:pale_oak_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cGFsZV9vYWtfY2hlc3RfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnBhbGVfb2FrX2NoZXN0X2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 819,
+    "key": "minecraft:mangrove_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bWFuZ3JvdmVfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm1hbmdyb3ZlX2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 820,
+    "key": "minecraft:mangrove_chest_boat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bWFuZ3JvdmVfY2hlc3RfYm9hdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0Lm1hbmdyb3ZlX2NoZXN0X2JvYXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 821,
+    "key": "minecraft:bamboo_raft",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YmFtYm9vX3JhZnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmJhbWJvb19yYWZ0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 822,
+    "key": "minecraft:bamboo_chest_raft",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YmFtYm9vX2NoZXN0X3JhZnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmJhbWJvb19jaGVzdF9yYWZ0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 823,
+    "key": "minecraft:structure_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c3RydWN0dXJlX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5zdHJ1Y3R1cmVfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 824,
+    "key": "minecraft:jigsaw",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6amlnc2F3",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5qaWdzYXcA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 825,
+    "key": "minecraft:turtle_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFm1pbmVjcmFmdDphcm1vci5oZWxtZXRAAAAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0AAAAAAAAAAAABwE=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARMARZtaW5lY3JhZnQ6dHVydGxlX3NjdXRlAAABAQE=",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6dHVydGxlX2hlbG1ldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnR1cnRsZV9oZWxtZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApMC",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfdHVydGxlX2hlbG1ldA=="
+    }
+  },
+  {
+    "id": 826,
+    "key": "minecraft:turtle_scute",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6dHVydGxlX3NjdXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LnR1cnRsZV9zY3V0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 827,
+    "key": "minecraft:armadillo_scute",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YXJtYWRpbGxvX3NjdXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmFybWFkaWxsb19zY3V0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 828,
+    "key": "minecraft:wolf_armor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFG1pbmVjcmFmdDphcm1vci5ib2R5QCYAAAAAAAAACQEUbWluZWNyYWZ0OmFybW9yLmJvZHkAAAAAAAAAAAAJAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAZNARltaW5lY3JhZnQ6YXJtYWRpbGxvX3NjdXRlAAECjQEBAQE=",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6d29sZl9hcm1vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LndvbGZfYXJtb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AkA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfd29sZl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 829,
+    "key": "minecraft:flint_and_steel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZmxpbnRfYW5kX3N0ZWVs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmZsaW50X2FuZF9zdGVlbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AkA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 830,
+    "key": "minecraft:bowl",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6Ym93bA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0LmJvd2wA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 831,
+    "key": "minecraft:apple",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQRAGZmaAA==",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6YXBwbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmFwcGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 832,
+    "key": "minecraft:bow",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6Ym93",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAEml0ZW0ubWluZWNyYWZ0LmJvdwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AoAD",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 833,
+    "key": "minecraft:arrow",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6YXJyb3c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmFycm93AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 834,
+    "key": "minecraft:coal",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6Y29hbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0LmNvYWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 835,
+    "key": "minecraft:charcoal",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y2hhcmNvYWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmNoYXJjb2FsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 836,
+    "key": "minecraft:diamond",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZGlhbW9uZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LmRpYW1vbmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 837,
+    "key": "minecraft:emerald",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZW1lcmFsZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LmVtZXJhbGQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 838,
+    "key": "minecraft:lapis_lazuli",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6bGFwaXNfbGF6dWxp",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmxhcGlzX2xhenVsaQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 839,
+    "key": "minecraft:quartz",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6cXVhcnR6",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnF1YXJ0egA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 840,
+    "key": "minecraft:amethyst_shard",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YW1ldGh5c3Rfc2hhcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmFtZXRoeXN0X3NoYXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 841,
+    "key": "minecraft:raw_iron",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cmF3X2lyb24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnJhd19pcm9uAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 842,
+    "key": "minecraft:iron_ingot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aXJvbl9pbmdvdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lmlyb25faW5nb3QA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 843,
+    "key": "minecraft:raw_copper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cmF3X2NvcHBlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnJhd19jb3BwZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 844,
+    "key": "minecraft:copper_ingot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y29wcGVyX2luZ290",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmNvcHBlcl9pbmdvdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 845,
+    "key": "minecraft:raw_gold",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cmF3X2dvbGQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnJhd19nb2xkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 846,
+    "key": "minecraft:gold_ingot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z29sZF9pbmdvdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmdvbGRfaW5nb3QA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 847,
+    "key": "minecraft:netherite_ingot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bmV0aGVyaXRlX2luZ290",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9pbmdvdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 848,
+    "key": "minecraft:netherite_scrap",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bmV0aGVyaXRlX3NjcmFw",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9zY3JhcAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 849,
+    "key": "minecraft:wooden_sword",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VACAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d29vZGVuX3N3b3Jk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0Lndvb2Rlbl9zd29yZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ajs=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0Ondvb2Rlbl90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgICgQEBQXAAAAEBABltaW5lY3JhZnQ6c3dvcmRfZWZmaWNpZW50AT/AAAAAP4AAAAI="
+    }
+  },
+  {
+    "id": 850,
+    "key": "minecraft:wooden_shovel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2U/+AAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d29vZGVuX3Nob3ZlbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lndvb2Rlbl9zaG92ZWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ajs=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0Ondvb2Rlbl90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAI21pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3dvb2Rlbl90b29sAAEAABltaW5lY3JhZnQ6bWluZWFibGUvc2hvdmVsAUAAAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 851,
+    "key": "minecraft:wooden_pickaxe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2U/8AAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABmZmYAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6d29vZGVuX3BpY2theGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lndvb2Rlbl9waWNrYXhlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ajs=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0Ondvb2Rlbl90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAI21pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3dvb2Rlbl90b29sAAEAABptaW5lY3JhZnQ6bWluZWFibGUvcGlja2F4ZQFAAAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 852,
+    "key": "minecraft:wooden_axe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAGAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACZmZoAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6d29vZGVuX2F4ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lndvb2Rlbl9heGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ajs=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0Ondvb2Rlbl90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAI21pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3dvb2Rlbl90b29sAAEAABZtaW5lY3JhZnQ6bWluZWFibGUvYXhlAUAAAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 853,
+    "key": "minecraft:wooden_hoe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2UAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6d29vZGVuX2hvZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lndvb2Rlbl9ob2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ajs=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0Ondvb2Rlbl90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAI21pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3dvb2Rlbl90b29sAAEAABZtaW5lY3JhZnQ6bWluZWFibGUvaG9lAUAAAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 854,
+    "key": "minecraft:stone_sword",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAEAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwU=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3RvbmVfc3dvcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnN0b25lX3N3b3JkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AoMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAebWluZWNyYWZ0OnN0b25lX3Rvb2xfbWF0ZXJpYWxz",
+      "minecraft:tool": "GgICgQEBQXAAAAEBABltaW5lY3JhZnQ6c3dvcmRfZWZmaWNpZW50AT/AAAAAP4AAAAI="
+    }
+  },
+  {
+    "id": 855,
+    "key": "minecraft:stone_shovel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VABAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwU=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c3RvbmVfc2hvdmVs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LnN0b25lX3Nob3ZlbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AoMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAebWluZWNyYWZ0OnN0b25lX3Rvb2xfbWF0ZXJpYWxz",
+      "minecraft:tool": "GgIAIm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3N0b25lX3Rvb2wAAQAAGW1pbmVjcmFmdDptaW5lYWJsZS9zaG92ZWwBQIAAAAEBP4AAAAE="
+    }
+  },
+  {
+    "id": 856,
+    "key": "minecraft:stone_pickaxe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABmZmYAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwU=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3RvbmVfcGlja2F4ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnN0b25lX3BpY2theGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AoMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAebWluZWNyYWZ0OnN0b25lX3Rvb2xfbWF0ZXJpYWxz",
+      "minecraft:tool": "GgIAIm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3N0b25lX3Rvb2wAAQAAGm1pbmVjcmFmdDptaW5lYWJsZS9waWNrYXhlAUCAAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 857,
+    "key": "minecraft:stone_axe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAIAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACZmZoAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwU=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6c3RvbmVfYXhl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LnN0b25lX2F4ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AoMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAebWluZWNyYWZ0OnN0b25lX3Rvb2xfbWF0ZXJpYWxz",
+      "minecraft:tool": "GgIAIm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3N0b25lX3Rvb2wAAQAAFm1pbmVjcmFmdDptaW5lYWJsZS9heGUBQIAAAAEBP4AAAAE="
+    }
+  },
+  {
+    "id": 858,
+    "key": "minecraft:stone_hoe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2UAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwU=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6c3RvbmVfaG9l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LnN0b25lX2hvZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AoMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAebWluZWNyYWZ0OnN0b25lX3Rvb2xfbWF0ZXJpYWxz",
+      "minecraft:tool": "GgIAIm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX3N0b25lX3Rvb2wAAQAAFm1pbmVjcmFmdDptaW5lYWJsZS9ob2UBQIAAAAEBP4AAAAE="
+    }
+  },
+  {
+    "id": 859,
+    "key": "minecraft:golden_sword",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VACAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GxY=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z29sZGVuX3N3b3Jk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmdvbGRlbl9zd29yZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AiA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OmdvbGRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgICgQEBQXAAAAEBABltaW5lY3JhZnQ6c3dvcmRfZWZmaWNpZW50AT/AAAAAP4AAAAI="
+    }
+  },
+  {
+    "id": 860,
+    "key": "minecraft:golden_shovel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2U/+AAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GxY=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Z29sZGVuX3Nob3ZlbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9zaG92ZWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AiA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OmdvbGRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2dvbGRfdG9vbAABAAAZbWluZWNyYWZ0Om1pbmVhYmxlL3Nob3ZlbAFBQAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 861,
+    "key": "minecraft:golden_pickaxe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2U/8AAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABmZmYAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GxY=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Z29sZGVuX3BpY2theGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9waWNrYXhlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AiA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OmdvbGRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2dvbGRfdG9vbAABAAAabWluZWNyYWZ0Om1pbmVhYmxlL3BpY2theGUBQUAAAAEBP4AAAAE="
+    }
+  },
+  {
+    "id": 862,
+    "key": "minecraft:golden_axe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAGAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GxY=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z29sZGVuX2F4ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9heGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AiA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OmdvbGRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2dvbGRfdG9vbAABAAAWbWluZWNyYWZ0Om1pbmVhYmxlL2F4ZQFBQAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 863,
+    "key": "minecraft:golden_hoe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2UAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GxY=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z29sZGVuX2hvZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9ob2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AiA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OmdvbGRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2dvbGRfdG9vbAABAAAWbWluZWNyYWZ0Om1pbmVhYmxlL2hvZQFBQAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 864,
+    "key": "minecraft:iron_sword",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAFAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw4=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aXJvbl9zd29yZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lmlyb25fc3dvcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvoB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0Omlyb25fdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgICgQEBQXAAAAEBABltaW5lY3JhZnQ6c3dvcmRfZWZmaWNpZW50AT/AAAAAP4AAAAI="
+    }
+  },
+  {
+    "id": 865,
+    "key": "minecraft:iron_shovel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VADAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw4=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6aXJvbl9zaG92ZWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lmlyb25fc2hvdmVsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvoB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0Omlyb25fdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2lyb25fdG9vbAABAAAZbWluZWNyYWZ0Om1pbmVhYmxlL3Nob3ZlbAFAwAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 866,
+    "key": "minecraft:iron_pickaxe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VACAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABmZmYAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw4=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6aXJvbl9waWNrYXhl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0Lmlyb25fcGlja2F4ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvoB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0Omlyb25fdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2lyb25fdG9vbAABAAAabWluZWNyYWZ0Om1pbmVhYmxlL3BpY2theGUBQMAAAAEBP4AAAAE="
+    }
+  },
+  {
+    "id": 867,
+    "key": "minecraft:iron_axe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAIAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACMzMwAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw4=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6aXJvbl9heGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0Lmlyb25fYXhlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvoB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0Omlyb25fdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2lyb25fdG9vbAABAAAWbWluZWNyYWZ0Om1pbmVhYmxlL2F4ZQFAwAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 868,
+    "key": "minecraft:iron_hoe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2UAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWS/8AAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw4=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6aXJvbl9ob2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0Lmlyb25faG9lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvoB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0Omlyb25fdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAIW1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2lyb25fdG9vbAABAAAWbWluZWNyYWZ0Om1pbmVhYmxlL2hvZQFAwAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 869,
+    "key": "minecraft:diamond_sword",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAGAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGlhbW9uZF9zd29yZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfc3dvcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApkM",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAgbWluZWNyYWZ0OmRpYW1vbmRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgICgQEBQXAAAAEBABltaW5lY3JhZnQ6c3dvcmRfZWZmaWNpZW50AT/AAAAAP4AAAAI="
+    }
+  },
+  {
+    "id": 870,
+    "key": "minecraft:diamond_shovel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAEgAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZGlhbW9uZF9zaG92ZWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfc2hvdmVsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApkM",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAgbWluZWNyYWZ0OmRpYW1vbmRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAJG1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2RpYW1vbmRfdG9vbAABAAAZbWluZWNyYWZ0Om1pbmVhYmxlL3Nob3ZlbAFBAAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 871,
+    "key": "minecraft:diamond_pickaxe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAEAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABmZmYAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGlhbW9uZF9waWNrYXhl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfcGlja2F4ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApkM",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAgbWluZWNyYWZ0OmRpYW1vbmRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAJG1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2RpYW1vbmRfdG9vbAABAAAabWluZWNyYWZ0Om1pbmVhYmxlL3BpY2theGUBQQAAAAEBP4AAAAE="
+    }
+  },
+  {
+    "id": 872,
+    "key": "minecraft:diamond_axe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAIAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZGlhbW9uZF9heGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfYXhlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApkM",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAgbWluZWNyYWZ0OmRpYW1vbmRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAJG1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2RpYW1vbmRfdG9vbAABAAAWbWluZWNyYWZ0Om1pbmVhYmxlL2F4ZQFBAAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 873,
+    "key": "minecraft:diamond_hoe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2UAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWQAAAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZGlhbW9uZF9ob2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfaG9lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApkM",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAgbWluZWNyYWZ0OmRpYW1vbmRfdG9vbF9tYXRlcmlhbHM=",
+      "minecraft:tool": "GgIAJG1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX2RpYW1vbmRfdG9vbAABAAAWbWluZWNyYWZ0Om1pbmVhYmxlL2hvZQFBAAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 874,
+    "key": "minecraft:netherite_sword",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAHAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTAAzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bmV0aGVyaXRlX3N3b3Jk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9zd29yZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au8P",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAibWluZWNyYWZ0Om5ldGhlcml0ZV90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgICgQEBQXAAAAEBABltaW5lY3JhZnQ6c3dvcmRfZWZmaWNpZW50AT/AAAAAP4AAAAI="
+    }
+  },
+  {
+    "id": 875,
+    "key": "minecraft:netherite_shovel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAFgAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bmV0aGVyaXRlX3Nob3ZlbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9zaG92ZWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au8P",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAibWluZWNyYWZ0Om5ldGhlcml0ZV90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAJm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX25ldGhlcml0ZV90b29sAAEAABltaW5lY3JhZnQ6bWluZWFibGUvc2hvdmVsAUEQAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 876,
+    "key": "minecraft:netherite_pickaxe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAFAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABmZmYAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bmV0aGVyaXRlX3BpY2theGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9waWNrYXhlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au8P",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAibWluZWNyYWZ0Om5ldGhlcml0ZV90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAJm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX25ldGhlcml0ZV90b29sAAEAABptaW5lY3JhZnQ6bWluZWFibGUvcGlja2F4ZQFBEAAAAQE/gAAAAQ=="
+    }
+  },
+  {
+    "id": 877,
+    "key": "minecraft:netherite_axe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAIgAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bmV0aGVyaXRlX2F4ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9heGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au8P",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAibWluZWNyYWZ0Om5ldGhlcml0ZV90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAJm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX25ldGhlcml0ZV90b29sAAEAABZtaW5lY3JhZnQ6bWluZWFibGUvYXhlAUEQAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 878,
+    "key": "minecraft:netherite_hoe",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2UAAAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWQAAAAAAAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bmV0aGVyaXRlX2hvZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9ob2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au8P",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAibWluZWNyYWZ0Om5ldGhlcml0ZV90b29sX21hdGVyaWFscw==",
+      "minecraft:tool": "GgIAJm1pbmVjcmFmdDppbmNvcnJlY3RfZm9yX25ldGhlcml0ZV90b29sAAEAABZtaW5lY3JhZnQ6bWluZWFibGUvaG9lAUEQAAABAT+AAAAB"
+    }
+  },
+  {
+    "id": 879,
+    "key": "minecraft:stick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6c3RpY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LnN0aWNrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 880,
+    "key": "minecraft:mushroom_stew",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZA5mZnAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bXVzaHJvb21fc3Rldw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm11c2hyb29tX3N0ZXcA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_remainder": "FwG+BgAA"
+    }
+  },
+  {
+    "id": 881,
+    "key": "minecraft:string",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c3RyaW5n",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnN0cmluZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 882,
+    "key": "minecraft:feather",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6ZmVhdGhlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LmZlYXRoZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 883,
+    "key": "minecraft:gunpowder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Z3VucG93ZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0Lmd1bnBvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 884,
+    "key": "minecraft:wheat_seeds",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2hlYXRfc2VlZHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LndoZWF0X3NlZWRzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 885,
+    "key": "minecraft:wheat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6d2hlYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LndoZWF0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 886,
+    "key": "minecraft:bread",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQVAwAAAAA==",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6YnJlYWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmJyZWFkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 887,
+    "key": "minecraft:leather_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFm1pbmVjcmFmdDphcm1vci5oZWxtZXQ/8AAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0AAAAAAAAAAAABwE=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARKARFtaW5lY3JhZnQ6bGVhdGhlcgAAAQEB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bGVhdGhlcl9oZWxtZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmxlYXRoZXJfaGVsbWV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ajc=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfbGVhdGhlcl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 888,
+    "key": "minecraft:leather_chestplate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGm1pbmVjcmFmdDphcm1vci5jaGVzdHBsYXRlQAgAAAAAAAAABgEabWluZWNyYWZ0OmFybW9yLmNoZXN0cGxhdGUAAAAAAAAAAAAGAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANKARFtaW5lY3JhZnQ6bGVhdGhlcgAAAQEB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bGVhdGhlcl9jaGVzdHBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmxlYXRoZXJfY2hlc3RwbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AlA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfbGVhdGhlcl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 889,
+    "key": "minecraft:leather_leggings",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AAAAAAAAAAAAUBGG1pbmVjcmFmdDphcm1vci5sZWdnaW5ncwAAAAAAAAAAAAUB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAJKARFtaW5lY3JhZnQ6bGVhdGhlcgAAAQEB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bGVhdGhlcl9sZWdnaW5ncw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmxlYXRoZXJfbGVnZ2luZ3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Aks=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfbGVhdGhlcl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 890,
+    "key": "minecraft:leather_boots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFW1pbmVjcmFmdDphcm1vci5ib290cz/wAAAAAAAAAAQBFW1pbmVjcmFmdDphcm1vci5ib290cwAAAAAAAAAAAAQB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAFKARFtaW5lY3JhZnQ6bGVhdGhlcgAAAQEB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bGVhdGhlcl9ib290cw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmxlYXRoZXJfYm9vdHMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AkE=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfbGVhdGhlcl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 891,
+    "key": "minecraft:chainmail_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFm1pbmVjcmFmdDphcm1vci5oZWxtZXRAAAAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0AAAAAAAAAAAABwE=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gww=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAREARNtaW5lY3JhZnQ6Y2hhaW5tYWlsAAABAQE=",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Y2hhaW5tYWlsX2hlbG1ldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmNoYWlubWFpbF9oZWxtZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AqUB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OnJlcGFpcnNfY2hhaW5fYXJtb3I="
+    }
+  },
+  {
+    "id": 892,
+    "key": "minecraft:chainmail_chestplate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGm1pbmVjcmFmdDphcm1vci5jaGVzdHBsYXRlQBQAAAAAAAAABgEabWluZWNyYWZ0OmFybW9yLmNoZXN0cGxhdGUAAAAAAAAAAAAGAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gww=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANEARNtaW5lY3JhZnQ6Y2hhaW5tYWlsAAABAQE=",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Y2hhaW5tYWlsX2NoZXN0cGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmNoYWlubWFpbF9jaGVzdHBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvAB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OnJlcGFpcnNfY2hhaW5fYXJtb3I="
+    }
+  },
+  {
+    "id": 893,
+    "key": "minecraft:chainmail_leggings",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AQAAAAAAAAAAUBGG1pbmVjcmFmdDphcm1vci5sZWdnaW5ncwAAAAAAAAAAAAUB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gww=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAJEARNtaW5lY3JhZnQ6Y2hhaW5tYWlsAAABAQE=",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y2hhaW5tYWlsX2xlZ2dpbmdz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmNoYWlubWFpbF9sZWdnaW5ncwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AuEB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OnJlcGFpcnNfY2hhaW5fYXJtb3I="
+    }
+  },
+  {
+    "id": 894,
+    "key": "minecraft:chainmail_boots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFW1pbmVjcmFmdDphcm1vci5ib290cz/wAAAAAAAAAAQBFW1pbmVjcmFmdDphcm1vci5ib290cwAAAAAAAAAAAAQB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gww=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAFEARNtaW5lY3JhZnQ6Y2hhaW5tYWlsAAABAQE=",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y2hhaW5tYWlsX2Jvb3Rz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmNoYWlubWFpbF9ib290cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AsMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAdbWluZWNyYWZ0OnJlcGFpcnNfY2hhaW5fYXJtb3I="
+    }
+  },
+  {
+    "id": 895,
+    "key": "minecraft:iron_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFm1pbmVjcmFmdDphcm1vci5oZWxtZXRAAAAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0AAAAAAAAAAAABwE=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARJAQ5taW5lY3JhZnQ6aXJvbgAAAQEB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6aXJvbl9oZWxtZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lmlyb25faGVsbWV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AqUB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfaXJvbl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 896,
+    "key": "minecraft:iron_chestplate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGm1pbmVjcmFmdDphcm1vci5jaGVzdHBsYXRlQBgAAAAAAAAABgEabWluZWNyYWZ0OmFybW9yLmNoZXN0cGxhdGUAAAAAAAAAAAAGAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANJAQ5taW5lY3JhZnQ6aXJvbgAAAQEB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6aXJvbl9jaGVzdHBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lmlyb25fY2hlc3RwbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvAB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfaXJvbl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 897,
+    "key": "minecraft:iron_leggings",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AUAAAAAAAAAAUBGG1pbmVjcmFmdDphcm1vci5sZWdnaW5ncwAAAAAAAAAAAAUB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAJJAQ5taW5lY3JhZnQ6aXJvbgAAAQEB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6aXJvbl9sZWdnaW5ncw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lmlyb25fbGVnZ2luZ3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AuEB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfaXJvbl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 898,
+    "key": "minecraft:iron_boots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFW1pbmVjcmFmdDphcm1vci5ib290c0AAAAAAAAAAAAQBFW1pbmVjcmFmdDphcm1vci5ib290cwAAAAAAAAAAAAQB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAFJAQ5taW5lY3JhZnQ6aXJvbgAAAQEB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aXJvbl9ib290cw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lmlyb25fYm9vdHMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AsMB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfaXJvbl9hcm1vcg=="
+    }
+  },
+  {
+    "id": 899,
+    "key": "minecraft:diamond_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFm1pbmVjcmFmdDphcm1vci5oZWxtZXRACAAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0QAAAAAAAAAAABwE=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARFARFtaW5lY3JhZnQ6ZGlhbW9uZAAAAQEB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZGlhbW9uZF9oZWxtZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfaGVsbWV0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AusC",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfZGlhbW9uZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 900,
+    "key": "minecraft:diamond_chestplate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGm1pbmVjcmFmdDphcm1vci5jaGVzdHBsYXRlQCAAAAAAAAAABgEabWluZWNyYWZ0OmFybW9yLmNoZXN0cGxhdGVAAAAAAAAAAAAGAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANFARFtaW5lY3JhZnQ6ZGlhbW9uZAAAAQEB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6ZGlhbW9uZF9jaGVzdHBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfY2hlc3RwbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApAE",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfZGlhbW9uZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 901,
+    "key": "minecraft:diamond_leggings",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AYAAAAAAAAAAUBGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AAAAAAAAAAAAUB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAJFARFtaW5lY3JhZnQ6ZGlhbW9uZAAAAQEB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZGlhbW9uZF9sZWdnaW5ncw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfbGVnZ2luZ3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au8D",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfZGlhbW9uZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 902,
+    "key": "minecraft:diamond_boots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFW1pbmVjcmFmdDphcm1vci5ib290c0AIAAAAAAAAAAQBFW1pbmVjcmFmdDphcm1vci5ib290c0AAAAAAAAAAAAQB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gwo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAFFARFtaW5lY3JhZnQ6ZGlhbW9uZAAAAQEB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGlhbW9uZF9ib290cw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfYm9vdHMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Aq0D",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0OnJlcGFpcnNfZGlhbW9uZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 903,
+    "key": "minecraft:golden_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFm1pbmVjcmFmdDphcm1vci5oZWxtZXRAAAAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0AAAAAAAAAAAABwE=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gxk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARIAQ5taW5lY3JhZnQ6Z29sZAAAAQEB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Z29sZGVuX2hlbG1ldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9oZWxtZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Ak0=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfZ29sZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 904,
+    "key": "minecraft:golden_chestplate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGm1pbmVjcmFmdDphcm1vci5jaGVzdHBsYXRlQBQAAAAAAAAABgEabWluZWNyYWZ0OmFybW9yLmNoZXN0cGxhdGUAAAAAAAAAAAAGAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gxk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANIAQ5taW5lY3JhZnQ6Z29sZAAAAQEB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Z29sZGVuX2NoZXN0cGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9jaGVzdHBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AnA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfZ29sZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 905,
+    "key": "minecraft:golden_leggings",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AIAAAAAAAAAAUBGG1pbmVjcmFmdDphcm1vci5sZWdnaW5ncwAAAAAAAAAAAAUB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gxk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAJIAQ5taW5lY3JhZnQ6Z29sZAAAAQEB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Z29sZGVuX2xlZ2dpbmdz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmdvbGRlbl9sZWdnaW5ncwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Amk=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfZ29sZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 906,
+    "key": "minecraft:golden_boots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFW1pbmVjcmFmdDphcm1vci5ib290cz/wAAAAAAAAAAQBFW1pbmVjcmFmdDphcm1vci5ib290cwAAAAAAAAAAAAQB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gxk=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAFIAQ5taW5lY3JhZnQ6Z29sZAAAAQEB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z29sZGVuX2Jvb3Rz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmdvbGRlbl9ib290cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Als=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAcbWluZWNyYWZ0OnJlcGFpcnNfZ29sZF9hcm1vcg=="
+    }
+  },
+  {
+    "id": 907,
+    "key": "minecraft:netherite_helmet",
+    "components": {
+      "minecraft:attribute_modifiers": "DQMAFm1pbmVjcmFmdDphcm1vci5oZWxtZXRACAAAAAAAAAAHARZtaW5lY3JhZnQ6YXJtb3IuaGVsbWV0QAgAAAAAAAAABw8WbWluZWNyYWZ0OmFybW9yLmhlbG1ldD+5mZmgAAAAAAcB",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARLARNtaW5lY3JhZnQ6bmV0aGVyaXRlAAABAQE=",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bmV0aGVyaXRlX2hlbG1ldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9oZWxtZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "ApcD",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAhbWluZWNyYWZ0OnJlcGFpcnNfbmV0aGVyaXRlX2FybW9y"
+    }
+  },
+  {
+    "id": 908,
+    "key": "minecraft:netherite_chestplate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQMAGm1pbmVjcmFmdDphcm1vci5jaGVzdHBsYXRlQCAAAAAAAAAABgEabWluZWNyYWZ0OmFybW9yLmNoZXN0cGxhdGVACAAAAAAAAAAGDxptaW5lY3JhZnQ6YXJtb3IuY2hlc3RwbGF0ZT+5mZmgAAAAAAYB",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HANLARNtaW5lY3JhZnQ6bmV0aGVyaXRlAAABAQE=",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6bmV0aGVyaXRlX2NoZXN0cGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9jaGVzdHBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AtAE",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAhbWluZWNyYWZ0OnJlcGFpcnNfbmV0aGVyaXRlX2FybW9y"
+    }
+  },
+  {
+    "id": 909,
+    "key": "minecraft:netherite_leggings",
+    "components": {
+      "minecraft:attribute_modifiers": "DQMAGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AYAAAAAAAAAAUBGG1pbmVjcmFmdDphcm1vci5sZWdnaW5nc0AIAAAAAAAAAAUPGG1pbmVjcmFmdDphcm1vci5sZWdnaW5ncz+5mZmgAAAAAAUB",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAJLARNtaW5lY3JhZnQ6bmV0aGVyaXRlAAABAQE=",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bmV0aGVyaXRlX2xlZ2dpbmdz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9sZWdnaW5ncwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AqsE",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAhbWluZWNyYWZ0OnJlcGFpcnNfbmV0aGVyaXRlX2FybW9y"
+    }
+  },
+  {
+    "id": 910,
+    "key": "minecraft:netherite_boots",
+    "components": {
+      "minecraft:attribute_modifiers": "DQMAFW1pbmVjcmFmdDphcm1vci5ib290c0AIAAAAAAAAAAQBFW1pbmVjcmFmdDphcm1vci5ib290c0AIAAAAAAAAAAQPFW1pbmVjcmFmdDphcm1vci5ib290cz+5mZmgAAAAAAQB",
+      "minecraft:damage": "AwA=",
+      "minecraft:damage_resistant": "GRFtaW5lY3JhZnQ6aXNfZmlyZQ==",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAFLARNtaW5lY3JhZnQ6bmV0aGVyaXRlAAABAQE=",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bmV0aGVyaXRlX2Jvb3Rz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV9ib290cwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AuED",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAhbWluZWNyYWZ0OnJlcGFpcnNfbmV0aGVyaXRlX2FybW9y"
+    }
+  },
+  {
+    "id": 911,
+    "key": "minecraft:flint",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6ZmxpbnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmZsaW50AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 912,
+    "key": "minecraft:porkchop",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQM/5mZnAA==",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cG9ya2Nob3A=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnBvcmtjaG9wAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 913,
+    "key": "minecraft:cooked_porkchop",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQhBTMzNAA==",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y29va2VkX3BvcmtjaG9w",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmNvb2tlZF9wb3JrY2hvcAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 914,
+    "key": "minecraft:painting",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cGFpbnRpbmc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnBhaW50aW5nAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 915,
+    "key": "minecraft:golden_apple",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQACCQFkAAEBABUA4BIAAQEAP4AAAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQRBGZmaAQ==",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z29sZGVuX2FwcGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmdvbGRlbl9hcHBsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 916,
+    "key": "minecraft:enchanted_golden_apple",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQAECQGQAwABAQAKAPAuAAEBAAsA8C4AAQEAFQPgEgABAQA/gAAA",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQRBGZmaAQ==",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZW5jaGFudGVkX2dvbGRlbl9hcHBsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LmVuY2hhbnRlZF9nb2xkZW5fYXBwbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 917,
+    "key": "minecraft:oak_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6b2FrX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5vYWtfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 918,
+    "key": "minecraft:spruce_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3BydWNlX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zcHJ1Y2Vfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 919,
+    "key": "minecraft:birch_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmlyY2hfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5iaXJjaF9zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 920,
+    "key": "minecraft:jungle_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6anVuZ2xlX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5qdW5nbGVfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 921,
+    "key": "minecraft:acacia_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YWNhY2lhX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5hY2FjaWFfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 922,
+    "key": "minecraft:cherry_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y2hlcnJ5X3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jaGVycnlfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 923,
+    "key": "minecraft:dark_oak_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZGFya19vYWtfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 924,
+    "key": "minecraft:pale_oak_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGFsZV9vYWtfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 925,
+    "key": "minecraft:mangrove_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bWFuZ3JvdmVfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 926,
+    "key": "minecraft:bamboo_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YmFtYm9vX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5iYW1ib29fc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 927,
+    "key": "minecraft:crimson_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y3JpbXNvbl9zaWdu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jcmltc29uX3NpZ24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 928,
+    "key": "minecraft:warped_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2FycGVkX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC53YXJwZWRfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 929,
+    "key": "minecraft:oak_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6b2FrX2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5vYWtfaGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 930,
+    "key": "minecraft:spruce_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c3BydWNlX2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5zcHJ1Y2VfaGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 931,
+    "key": "minecraft:birch_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6YmlyY2hfaGFuZ2luZ19zaWdu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5iaXJjaF9oYW5naW5nX3NpZ24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 932,
+    "key": "minecraft:jungle_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6anVuZ2xlX2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5qdW5nbGVfaGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 933,
+    "key": "minecraft:acacia_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6YWNhY2lhX2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5hY2FjaWFfaGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 934,
+    "key": "minecraft:cherry_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6Y2hlcnJ5X2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5jaGVycnlfaGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 935,
+    "key": "minecraft:dark_oak_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6ZGFya19vYWtfaGFuZ2luZ19zaWdu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5kYXJrX29ha19oYW5naW5nX3NpZ24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 936,
+    "key": "minecraft:pale_oak_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cGFsZV9vYWtfaGFuZ2luZ19zaWdu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5wYWxlX29ha19oYW5naW5nX3NpZ24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 937,
+    "key": "minecraft:mangrove_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6bWFuZ3JvdmVfaGFuZ2luZ19zaWdu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5tYW5ncm92ZV9oYW5naW5nX3NpZ24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 938,
+    "key": "minecraft:bamboo_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6YmFtYm9vX2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5iYW1ib29faGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 939,
+    "key": "minecraft:crimson_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Y3JpbXNvbl9oYW5naW5nX3NpZ24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5jcmltc29uX2hhbmdpbmdfc2lnbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 940,
+    "key": "minecraft:warped_hanging_sign",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6d2FycGVkX2hhbmdpbmdfc2lnbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC53YXJwZWRfaGFuZ2luZ19zaWduAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 941,
+    "key": "minecraft:bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YnVja2V0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LmJ1Y2tldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 942,
+    "key": "minecraft:water_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2F0ZXJfYnVja2V0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LndhdGVyX2J1Y2tldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 943,
+    "key": "minecraft:lava_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bGF2YV9idWNrZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmxhdmFfYnVja2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 944,
+    "key": "minecraft:powder_snow_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cG93ZGVyX3Nub3dfYnVja2V0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LnBvd2Rlcl9zbm93X2J1Y2tldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 945,
+    "key": "minecraft:snowball",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6c25vd2JhbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnNub3diYWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 946,
+    "key": "minecraft:leather",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6bGVhdGhlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LmxlYXRoZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 947,
+    "key": "minecraft:milk_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0C2QQAAQI=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWlsa19idWNrZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm1pbGtfYnVja2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_remainder": "FwGtBwAA"
+    }
+  },
+  {
+    "id": 948,
+    "key": "minecraft:pufferfish_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bucket_entity_data": "MAoA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cHVmZmVyZmlzaF9idWNrZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnB1ZmZlcmZpc2hfYnVja2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 949,
+    "key": "minecraft:salmon_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bucket_entity_data": "MAoA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c2FsbW9uX2J1Y2tldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnNhbG1vbl9idWNrZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 950,
+    "key": "minecraft:cod_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bucket_entity_data": "MAoA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y29kX2J1Y2tldA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmNvZF9idWNrZXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 951,
+    "key": "minecraft:tropical_fish_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bucket_entity_data": "MAoA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6dHJvcGljYWxfZmlzaF9idWNrZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnRyb3BpY2FsX2Zpc2hfYnVja2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 952,
+    "key": "minecraft:axolotl_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bucket_entity_data": "MAoA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YXhvbG90bF9idWNrZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmF4b2xvdGxfYnVja2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 953,
+    "key": "minecraft:tadpole_bucket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bucket_entity_data": "MAoA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6dGFkcG9sZV9idWNrZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LnRhZHBvbGVfYnVja2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 954,
+    "key": "minecraft:brick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6YnJpY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmJyaWNrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 955,
+    "key": "minecraft:clay_ball",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Y2xheV9iYWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmNsYXlfYmFsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 956,
+    "key": "minecraft:dried_kelp_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZHJpZWRfa2VscF9ibG9jaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5kcmllZF9rZWxwX2Jsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 957,
+    "key": "minecraft:paper",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6cGFwZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LnBhcGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 958,
+    "key": "minecraft:book",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantable": "GwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6Ym9vaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0LmJvb2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 959,
+    "key": "minecraft:slime_ball",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c2xpbWVfYmFsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnNsaW1lX2JhbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 960,
+    "key": "minecraft:egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6ZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAEml0ZW0ubWluZWNyYWZ0LmVnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 961,
+    "key": "minecraft:compass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6Y29tcGFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LmNvbXBhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 962,
+    "key": "minecraft:recovery_compass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cmVjb3ZlcnlfY29tcGFzcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnJlY292ZXJ5X2NvbXBhc3MA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 963,
+    "key": "minecraft:bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YnVuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LmJ1bmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 964,
+    "key": "minecraft:white_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2hpdGVfYnVuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LndoaXRlX2J1bmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 965,
+    "key": "minecraft:orange_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6b3JhbmdlX2J1bmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm9yYW5nZV9idW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 966,
+    "key": "minecraft:magenta_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bWFnZW50YV9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm1hZ2VudGFfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 967,
+    "key": "minecraft:light_blue_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfYmx1ZV9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmxpZ2h0X2JsdWVfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 968,
+    "key": "minecraft:yellow_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6eWVsbG93X2J1bmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnllbGxvd19idW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 969,
+    "key": "minecraft:lime_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bGltZV9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmxpbWVfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 970,
+    "key": "minecraft:pink_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGlua19idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnBpbmtfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 971,
+    "key": "minecraft:gray_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z3JheV9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmdyYXlfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 972,
+    "key": "minecraft:light_gray_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfZ3JheV9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmxpZ2h0X2dyYXlfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 973,
+    "key": "minecraft:cyan_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y3lhbl9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmN5YW5fYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 974,
+    "key": "minecraft:purple_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVycGxlX2J1bmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnB1cnBsZV9idW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 975,
+    "key": "minecraft:blue_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Ymx1ZV9idW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmJsdWVfYnVuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 976,
+    "key": "minecraft:brown_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YnJvd25fYnVuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmJyb3duX2J1bmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 977,
+    "key": "minecraft:green_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z3JlZW5fYnVuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmdyZWVuX2J1bmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 978,
+    "key": "minecraft:red_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cmVkX2J1bmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnJlZF9idW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 979,
+    "key": "minecraft:black_bundle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bundle_contents": "KAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmxhY2tfYnVuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmJsYWNrX2J1bmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 980,
+    "key": "minecraft:fishing_rod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZmlzaGluZ19yb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmZpc2hpbmdfcm9kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AkA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 981,
+    "key": "minecraft:clock",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6Y2xvY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmNsb2NrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 982,
+    "key": "minecraft:spyglass",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6c3B5Z2xhc3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnNweWdsYXNzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 983,
+    "key": "minecraft:glowstone_dust",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Z2xvd3N0b25lX2R1c3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lmdsb3dzdG9uZV9kdXN0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 984,
+    "key": "minecraft:cod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI+zMzNAA==",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6Y29k",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAEml0ZW0ubWluZWNyYWZ0LmNvZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 985,
+    "key": "minecraft:salmon",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI+zMzNAA==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c2FsbW9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnNhbG1vbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 986,
+    "key": "minecraft:tropical_fish",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQE+TMzNAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6dHJvcGljYWxfZmlzaA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnRyb3BpY2FsX2Zpc2gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 987,
+    "key": "minecraft:pufferfish",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQADEgGwCQABAQAQAqwCAAEBAAgArAIAAQEAP4AAAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQE+TMzNAA==",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cHVmZmVyZmlzaA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnB1ZmZlcmZpc2gA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 988,
+    "key": "minecraft:cooked_cod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQVAwAAAAA==",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Y29va2VkX2NvZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmNvb2tlZF9jb2QA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 989,
+    "key": "minecraft:cooked_salmon",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZBGZmaAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y29va2VkX3NhbG1vbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmNvb2tlZF9zYWxtb24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 990,
+    "key": "minecraft:ink_sac",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6aW5rX3NhYw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0Lmlua19zYWMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 991,
+    "key": "minecraft:glow_ink_sac",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z2xvd19pbmtfc2Fj",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0Lmdsb3dfaW5rX3NhYwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 992,
+    "key": "minecraft:cocoa_beans",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y29jb2FfYmVhbnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmNvY29hX2JlYW5zAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 993,
+    "key": "minecraft:white_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6d2hpdGVfZHll",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LndoaXRlX2R5ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 994,
+    "key": "minecraft:orange_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6b3JhbmdlX2R5ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lm9yYW5nZV9keWUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 995,
+    "key": "minecraft:magenta_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWFnZW50YV9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm1hZ2VudGFfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 996,
+    "key": "minecraft:light_blue_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmxpZ2h0X2JsdWVfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 997,
+    "key": "minecraft:yellow_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6eWVsbG93X2R5ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnllbGxvd19keWUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 998,
+    "key": "minecraft:lime_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6bGltZV9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmxpbWVfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 999,
+    "key": "minecraft:pink_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cGlua19keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LnBpbmtfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1000,
+    "key": "minecraft:gray_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Z3JheV9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmdyYXlfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1001,
+    "key": "minecraft:light_gray_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bGlnaHRfZ3JheV9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmxpZ2h0X2dyYXlfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1002,
+    "key": "minecraft:cyan_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y3lhbl9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmN5YW5fZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1003,
+    "key": "minecraft:purple_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cHVycGxlX2R5ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnB1cnBsZV9keWUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1004,
+    "key": "minecraft:blue_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Ymx1ZV9keWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmJsdWVfZHllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1005,
+    "key": "minecraft:brown_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6YnJvd25fZHll",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmJyb3duX2R5ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1006,
+    "key": "minecraft:green_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Z3JlZW5fZHll",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmdyZWVuX2R5ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1007,
+    "key": "minecraft:red_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6cmVkX2R5ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LnJlZF9keWUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1008,
+    "key": "minecraft:black_dye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6YmxhY2tfZHll",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmJsYWNrX2R5ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1009,
+    "key": "minecraft:bone_meal",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Ym9uZV9tZWFs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmJvbmVfbWVhbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1010,
+    "key": "minecraft:bone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6Ym9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0LmJvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1011,
+    "key": "minecraft:sugar",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6c3VnYXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LnN1Z2FyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1012,
+    "key": "minecraft:cake",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6Y2FrZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5jYWtlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1013,
+    "key": "minecraft:white_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6d2hpdGVfYmVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC53aGl0ZV9iZWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1014,
+    "key": "minecraft:orange_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6b3JhbmdlX2JlZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfYmVkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1015,
+    "key": "minecraft:magenta_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWFnZW50YV9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1016,
+    "key": "minecraft:light_blue_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bGlnaHRfYmx1ZV9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1017,
+    "key": "minecraft:yellow_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6eWVsbG93X2JlZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfYmVkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1018,
+    "key": "minecraft:lime_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6bGltZV9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5saW1lX2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1019,
+    "key": "minecraft:pink_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6cGlua19iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5waW5rX2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1020,
+    "key": "minecraft:gray_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Z3JheV9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5ncmF5X2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1021,
+    "key": "minecraft:light_gray_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bGlnaHRfZ3JheV9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1022,
+    "key": "minecraft:cyan_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y3lhbl9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5jeWFuX2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1023,
+    "key": "minecraft:purple_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cHVycGxlX2JlZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfYmVkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1024,
+    "key": "minecraft:blue_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Ymx1ZV9iZWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5ibHVlX2JlZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1025,
+    "key": "minecraft:brown_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6YnJvd25fYmVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5icm93bl9iZWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1026,
+    "key": "minecraft:green_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Z3JlZW5fYmVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5ncmVlbl9iZWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1027,
+    "key": "minecraft:red_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6cmVkX2JlZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5yZWRfYmVkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1028,
+    "key": "minecraft:black_bed",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6YmxhY2tfYmVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5ibGFja19iZWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1029,
+    "key": "minecraft:cookie",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI+zMzNAA==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6Y29va2ll",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LmNvb2tpZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1030,
+    "key": "minecraft:crafter",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6Y3JhZnRlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5jcmFmdGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1031,
+    "key": "minecraft:filled_map",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6ZmlsbGVkX21hcA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmZpbGxlZF9tYXAA",
+      "minecraft:lore": "CAA=",
+      "minecraft:map_color": "IwBGQC4=",
+      "minecraft:map_decorations": "JQoA",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1032,
+    "key": "minecraft:shears",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c2hlYXJz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnNoZWFycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "Au4B",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:tool": "GgQCgQEBQXAAAAEBABBtaW5lY3JhZnQ6bGVhdmVzAUFwAAAAAA5taW5lY3JhZnQ6d29vbAFAoAAAAAPLAswCAUAAAAAAP4AAAAE="
+    }
+  },
+  {
+    "id": 1033,
+    "key": "minecraft:melon_slice",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI/mZmaAA==",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWVsb25fc2xpY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm1lbG9uX3NsaWNlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1034,
+    "key": "minecraft:dried_kelp",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj9MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQE/GZmaAA==",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6ZHJpZWRfa2VscA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmRyaWVkX2tlbHAA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1035,
+    "key": "minecraft:pumpkin_seeds",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVtcGtpbl9zZWVkcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnB1bXBraW5fc2VlZHMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1036,
+    "key": "minecraft:melon_seeds",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWVsb25fc2VlZHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm1lbG9uX3NlZWRzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1037,
+    "key": "minecraft:beef",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQM/5mZnAA==",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6YmVlZg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0LmJlZWYA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1038,
+    "key": "minecraft:cooked_beef",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQhBTMzNAA==",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y29va2VkX2JlZWY=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmNvb2tlZF9iZWVmAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1039,
+    "key": "minecraft:chicken",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQABEADYBAABAQA+mZma",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI/mZmaAA==",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6Y2hpY2tlbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LmNoaWNrZW4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1040,
+    "key": "minecraft:cooked_chicken",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZA5mZnAA==",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Y29va2VkX2NoaWNrZW4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmNvb2tlZF9jaGlja2VuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1041,
+    "key": "minecraft:rotten_flesh",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQABEADYBAABAQA/TMzN",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQQ/TMzNAA==",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6cm90dGVuX2ZsZXNo",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LnJvdHRlbl9mbGVzaAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1042,
+    "key": "minecraft:ender_pearl",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZW5kZXJfcGVhcmw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmVuZGVyX3BlYXJsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_cooldown": "GD+AAAAA"
+    }
+  },
+  {
+    "id": 1043,
+    "key": "minecraft:blaze_rod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6YmxhemVfcm9k",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmJsYXplX3JvZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1044,
+    "key": "minecraft:ghast_tear",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z2hhc3RfdGVhcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmdoYXN0X3RlYXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1045,
+    "key": "minecraft:gold_nugget",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z29sZF9udWdnZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmdvbGRfbnVnZ2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1046,
+    "key": "minecraft:nether_wart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bmV0aGVyX3dhcnQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm5ldGhlcl93YXJ0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1047,
+    "key": "minecraft:glass_bottle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z2xhc3NfYm90dGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmdsYXNzX2JvdHRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1048,
+    "key": "minecraft:potion",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0C2QQAAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6cG90aW9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnBvdGlvbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:potion_contents": "KQAAAAA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_remainder": "FwGXCAAA"
+    }
+  },
+  {
+    "id": 1049,
+    "key": "minecraft:spider_eye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQABEgBkAAEBAD+AAAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQJATMzNAA==",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6c3BpZGVyX2V5ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LnNwaWRlcl9leWUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1050,
+    "key": "minecraft:fermented_spider_eye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZmVybWVudGVkX3NwaWRlcl9leWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmZlcm1lbnRlZF9zcGlkZXJfZXllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1051,
+    "key": "minecraft:blaze_powder",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmxhemVfcG93ZGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmJsYXplX3Bvd2RlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1052,
+    "key": "minecraft:magma_cream",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bWFnbWFfY3JlYW0=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm1hZ21hX2NyZWFtAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1053,
+    "key": "minecraft:brewing_stand",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YnJld2luZ19zdGFuZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5icmV3aW5nX3N0YW5kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1054,
+    "key": "minecraft:cauldron",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y2F1bGRyb24=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5jYXVsZHJvbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1055,
+    "key": "minecraft:ender_eye",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZW5kZXJfZXll",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmVuZGVyX2V5ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1056,
+    "key": "minecraft:glistering_melon_slice",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Z2xpc3RlcmluZ19tZWxvbl9zbGljZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LmdsaXN0ZXJpbmdfbWVsb25fc2xpY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1057,
+    "key": "minecraft:armadillo_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6YXJtYWRpbGxvX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmFybWFkaWxsb19zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1058,
+    "key": "minecraft:allay_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YWxsYXlfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmFsbGF5X3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1059,
+    "key": "minecraft:axolotl_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YXhvbG90bF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmF4b2xvdGxfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1060,
+    "key": "minecraft:bat_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmF0X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmJhdF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1061,
+    "key": "minecraft:bee_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmVlX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmJlZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1062,
+    "key": "minecraft:blaze_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YmxhemVfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmJsYXplX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1063,
+    "key": "minecraft:bogged_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6Ym9nZ2VkX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmJvZ2dlZF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1064,
+    "key": "minecraft:breeze_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YnJlZXplX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmJyZWV6ZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1065,
+    "key": "minecraft:cat_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y2F0X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmNhdF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1066,
+    "key": "minecraft:camel_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y2FtZWxfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmNhbWVsX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1067,
+    "key": "minecraft:cave_spider_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Y2F2ZV9zcGlkZXJfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0LmNhdmVfc3BpZGVyX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1068,
+    "key": "minecraft:chicken_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y2hpY2tlbl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmNoaWNrZW5fc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1069,
+    "key": "minecraft:cod_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y29kX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmNvZF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1070,
+    "key": "minecraft:cow_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y293X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmNvd19zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1071,
+    "key": "minecraft:creeper_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y3JlZXBlcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmNyZWVwZXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1072,
+    "key": "minecraft:dolphin_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6ZG9scGhpbl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmRvbHBoaW5fc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1073,
+    "key": "minecraft:donkey_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZG9ua2V5X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmRvbmtleV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1074,
+    "key": "minecraft:drowned_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6ZHJvd25lZF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmRyb3duZWRfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1075,
+    "key": "minecraft:elder_guardian_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6ZWxkZXJfZ3VhcmRpYW5fc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2l0ZW0ubWluZWNyYWZ0LmVsZGVyX2d1YXJkaWFuX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1076,
+    "key": "minecraft:ender_dragon_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZW5kZXJfZHJhZ29uX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LmVuZGVyX2RyYWdvbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1077,
+    "key": "minecraft:enderman_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6ZW5kZXJtYW5fc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmVuZGVybWFuX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1078,
+    "key": "minecraft:endermite_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZW5kZXJtaXRlX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmVuZGVybWl0ZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1079,
+    "key": "minecraft:evoker_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6ZXZva2VyX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmV2b2tlcl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1080,
+    "key": "minecraft:fox_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Zm94X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmZveF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1081,
+    "key": "minecraft:frog_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZnJvZ19zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmZyb2dfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1082,
+    "key": "minecraft:ghast_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Z2hhc3Rfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmdoYXN0X3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1083,
+    "key": "minecraft:glow_squid_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Z2xvd19zcXVpZF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lmdsb3dfc3F1aWRfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1084,
+    "key": "minecraft:goat_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6Z29hdF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmdvYXRfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1085,
+    "key": "minecraft:guardian_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Z3VhcmRpYW5fc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0Lmd1YXJkaWFuX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1086,
+    "key": "minecraft:hoglin_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6aG9nbGluX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmhvZ2xpbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1087,
+    "key": "minecraft:horse_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6aG9yc2Vfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmhvcnNlX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1088,
+    "key": "minecraft:husk_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6aHVza19zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lmh1c2tfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1089,
+    "key": "minecraft:iron_golem_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6aXJvbl9nb2xlbV9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lmlyb25fZ29sZW1fc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1090,
+    "key": "minecraft:llama_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bGxhbWFfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmxsYW1hX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1091,
+    "key": "minecraft:magma_cube_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6bWFnbWFfY3ViZV9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lm1hZ21hX2N1YmVfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1092,
+    "key": "minecraft:mooshroom_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bW9vc2hyb29tX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0Lm1vb3Nocm9vbV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1093,
+    "key": "minecraft:mule_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bXVsZV9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm11bGVfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1094,
+    "key": "minecraft:ocelot_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6b2NlbG90X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lm9jZWxvdF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1095,
+    "key": "minecraft:panda_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6cGFuZGFfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LnBhbmRhX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1096,
+    "key": "minecraft:parrot_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cGFycm90X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnBhcnJvdF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1097,
+    "key": "minecraft:phantom_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cGhhbnRvbV9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnBoYW50b21fc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1098,
+    "key": "minecraft:pig_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cGlnX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnBpZ19zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1099,
+    "key": "minecraft:piglin_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cGlnbGluX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnBpZ2xpbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1100,
+    "key": "minecraft:piglin_brute_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6cGlnbGluX2JydXRlX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LnBpZ2xpbl9icnV0ZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1101,
+    "key": "minecraft:pillager_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6cGlsbGFnZXJfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LnBpbGxhZ2VyX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1102,
+    "key": "minecraft:polar_bear_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cG9sYXJfYmVhcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnBvbGFyX2JlYXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1103,
+    "key": "minecraft:pufferfish_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cHVmZmVyZmlzaF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnB1ZmZlcmZpc2hfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1104,
+    "key": "minecraft:rabbit_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cmFiYml0X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnJhYmJpdF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1105,
+    "key": "minecraft:ravager_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cmF2YWdlcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnJhdmFnZXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1106,
+    "key": "minecraft:salmon_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c2FsbW9uX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnNhbG1vbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1107,
+    "key": "minecraft:sheep_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c2hlZXBfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LnNoZWVwX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1108,
+    "key": "minecraft:shulker_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c2h1bGtlcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnNodWxrZXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1109,
+    "key": "minecraft:silverfish_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c2lsdmVyZmlzaF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnNpbHZlcmZpc2hfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1110,
+    "key": "minecraft:skeleton_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6c2tlbGV0b25fc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LnNrZWxldG9uX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1111,
+    "key": "minecraft:skeleton_horse_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6c2tlbGV0b25faG9yc2Vfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2l0ZW0ubWluZWNyYWZ0LnNrZWxldG9uX2hvcnNlX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1112,
+    "key": "minecraft:slime_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c2xpbWVfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LnNsaW1lX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1113,
+    "key": "minecraft:sniffer_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c25pZmZlcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnNuaWZmZXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1114,
+    "key": "minecraft:snow_golem_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c25vd19nb2xlbV9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnNub3dfZ29sZW1fc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1115,
+    "key": "minecraft:spider_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6c3BpZGVyX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnNwaWRlcl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1116,
+    "key": "minecraft:squid_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c3F1aWRfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LnNxdWlkX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1117,
+    "key": "minecraft:stray_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c3RyYXlfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LnN0cmF5X3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1118,
+    "key": "minecraft:strider_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6c3RyaWRlcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnN0cmlkZXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1119,
+    "key": "minecraft:tadpole_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6dGFkcG9sZV9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnRhZHBvbGVfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1120,
+    "key": "minecraft:trader_llama_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6dHJhZGVyX2xsYW1hX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LnRyYWRlcl9sbGFtYV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1121,
+    "key": "minecraft:tropical_fish_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByFtaW5lY3JhZnQ6dHJvcGljYWxfZmlzaF9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJml0ZW0ubWluZWNyYWZ0LnRyb3BpY2FsX2Zpc2hfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1122,
+    "key": "minecraft:turtle_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6dHVydGxlX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnR1cnRsZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1123,
+    "key": "minecraft:vex_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6dmV4X3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnZleF9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1124,
+    "key": "minecraft:villager_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6dmlsbGFnZXJfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LnZpbGxhZ2VyX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1125,
+    "key": "minecraft:vindicator_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6dmluZGljYXRvcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnZpbmRpY2F0b3Jfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1126,
+    "key": "minecraft:wandering_trader_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6d2FuZGVyaW5nX3RyYWRlcl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWl0ZW0ubWluZWNyYWZ0LndhbmRlcmluZ190cmFkZXJfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1127,
+    "key": "minecraft:warden_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6d2FyZGVuX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LndhcmRlbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1128,
+    "key": "minecraft:witch_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6d2l0Y2hfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LndpdGNoX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1129,
+    "key": "minecraft:wither_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6d2l0aGVyX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LndpdGhlcl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1130,
+    "key": "minecraft:wither_skeleton_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2l0aGVyX3NrZWxldG9uX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGl0ZW0ubWluZWNyYWZ0LndpdGhlcl9za2VsZXRvbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1131,
+    "key": "minecraft:wolf_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6d29sZl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LndvbGZfc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1132,
+    "key": "minecraft:zoglin_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6em9nbGluX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnpvZ2xpbl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1133,
+    "key": "minecraft:creaking_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Y3JlYWtpbmdfc3Bhd25fZWdn",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmNyZWFraW5nX3NwYXduX2VnZwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1134,
+    "key": "minecraft:zombie_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6em9tYmllX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnpvbWJpZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1135,
+    "key": "minecraft:zombie_horse_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6em9tYmllX2hvcnNlX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LnpvbWJpZV9ob3JzZV9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1136,
+    "key": "minecraft:zombie_villager_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6em9tYmllX3ZpbGxhZ2VyX3NwYXduX2VnZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGl0ZW0ubWluZWNyYWZ0LnpvbWJpZV92aWxsYWdlcl9zcGF3bl9lZ2cA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1137,
+    "key": "minecraft:zombified_piglin_spawn_egg",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6em9tYmlmaWVkX3BpZ2xpbl9zcGF3bl9lZ2c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWl0ZW0ubWluZWNyYWZ0LnpvbWJpZmllZF9waWdsaW5fc3Bhd25fZWdnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1138,
+    "key": "minecraft:experience_bottle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6ZXhwZXJpZW5jZV9ib3R0bGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LmV4cGVyaWVuY2VfYm90dGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1139,
+    "key": "minecraft:fire_charge",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZmlyZV9jaGFyZ2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmZpcmVfY2hhcmdlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1140,
+    "key": "minecraft:wind_charge",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6d2luZF9jaGFyZ2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LndpbmRfY2hhcmdlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_cooldown": "GD8AAAAA"
+    }
+  },
+  {
+    "id": 1141,
+    "key": "minecraft:writable_book",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6d3JpdGFibGVfYm9vaw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LndyaXRhYmxlX2Jvb2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:writable_book_content": "KwA="
+    }
+  },
+  {
+    "id": 1142,
+    "key": "minecraft:written_book",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d3JpdHRlbl9ib29r",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LndyaXR0ZW5fYm9vawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1143,
+    "key": "minecraft:breeze_rod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YnJlZXplX3JvZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmJyZWV6ZV9yb2QA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1144,
+    "key": "minecraft:mace",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAFAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTACzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "Gw8=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6bWFjZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0Lm1hY2UA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvQD",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQL3CA==",
+      "minecraft:tool": "GgA/gAAAAg=="
+    }
+  },
+  {
+    "id": 1145,
+    "key": "minecraft:item_frame",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6aXRlbV9mcmFtZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0Lml0ZW1fZnJhbWUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1146,
+    "key": "minecraft:glow_item_frame",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Z2xvd19pdGVtX2ZyYW1l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lmdsb3dfaXRlbV9mcmFtZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1147,
+    "key": "minecraft:flower_pot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Zmxvd2VyX3BvdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5mbG93ZXJfcG90AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1148,
+    "key": "minecraft:carrot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQNAZmZnAA==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6Y2Fycm90",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LmNhcnJvdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1149,
+    "key": "minecraft:potato",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQE/GZmaAA==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6cG90YXRv",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnBvdGF0bwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1150,
+    "key": "minecraft:baked_potato",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQVAwAAAAA==",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmFrZWRfcG90YXRv",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmJha2VkX3BvdGF0bwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1151,
+    "key": "minecraft:poisonous_potato",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQABEgBkAAEBAD8ZmZo=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI/mZmaAA==",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cG9pc29ub3VzX3BvdGF0bw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnBvaXNvbm91c19wb3RhdG8A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1152,
+    "key": "minecraft:map",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw1taW5lY3JhZnQ6bWFw",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAEml0ZW0ubWluZWNyYWZ0Lm1hcAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1153,
+    "key": "minecraft:golden_carrot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZBZmZnAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Z29sZGVuX2NhcnJvdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9jYXJyb3QA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1154,
+    "key": "minecraft:skeleton_skull",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c2tlbGV0b25fc2t1bGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5za2VsZXRvbl9za3VsbAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1155,
+    "key": "minecraft:wither_skeleton_skull",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2l0aGVyX3NrZWxldG9uX3NrdWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53aXRoZXJfc2tlbGV0b25fc2t1bGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1156,
+    "key": "minecraft:player_head",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGxheWVyX2hlYWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5wbGF5ZXJfaGVhZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1157,
+    "key": "minecraft:zombie_head",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6em9tYmllX2hlYWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC56b21iaWVfaGVhZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1158,
+    "key": "minecraft:creeper_head",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y3JlZXBlcl9oZWFk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jcmVlcGVyX2hlYWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1159,
+    "key": "minecraft:dragon_head",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZHJhZ29uX2hlYWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5kcmFnb25faGVhZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1160,
+    "key": "minecraft:piglin_head",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HARHAAAAAQAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGlnbGluX2hlYWQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5waWdsaW5faGVhZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1161,
+    "key": "minecraft:nether_star",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage_resistant": "GRZtaW5lY3JhZnQ6aXNfZXhwbG9zaW9u",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bmV0aGVyX3N0YXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lm5ldGhlcl9zdGFyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1162,
+    "key": "minecraft:pumpkin_pie",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQhAmZmaAA==",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cHVtcGtpbl9waWU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnB1bXBraW5fcGllAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1163,
+    "key": "minecraft:firework_rocket",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:fireworks": "OAEA",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZmlyZXdvcmtfcm9ja2V0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmZpcmV3b3JrX3JvY2tldAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1164,
+    "key": "minecraft:firework_star",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZmlyZXdvcmtfc3Rhcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmZpcmV3b3JrX3N0YXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1165,
+    "key": "minecraft:enchanted_book",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6ZW5jaGFudGVkX2Jvb2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmVuY2hhbnRlZF9ib29rAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:stored_enchantments": "IQAB"
+    }
+  },
+  {
+    "id": 1166,
+    "key": "minecraft:nether_brick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6bmV0aGVyX2JyaWNr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0Lm5ldGhlcl9icmljawA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1167,
+    "key": "minecraft:resin_brick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cmVzaW5fYnJpY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnJlc2luX2JyaWNrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1168,
+    "key": "minecraft:prismarine_shard",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6cHJpc21hcmluZV9zaGFyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnByaXNtYXJpbmVfc2hhcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1169,
+    "key": "minecraft:prismarine_crystals",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cHJpc21hcmluZV9jcnlzdGFscw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnByaXNtYXJpbmVfY3J5c3RhbHMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1170,
+    "key": "minecraft:rabbit",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQM/5mZnAA==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6cmFiYml0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnJhYmJpdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1171,
+    "key": "minecraft:cooked_rabbit",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQVAwAAAAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y29va2VkX3JhYmJpdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmNvb2tlZF9yYWJiaXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1172,
+    "key": "minecraft:rabbit_stew",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQpBQAAAAA==",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cmFiYml0X3N0ZXc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnJhYmJpdF9zdGV3AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_remainder": "FwG+BgAA"
+    }
+  },
+  {
+    "id": 1173,
+    "key": "minecraft:rabbit_foot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cmFiYml0X2Zvb3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnJhYmJpdF9mb290AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1174,
+    "key": "minecraft:rabbit_hide",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cmFiYml0X2hpZGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnJhYmJpdF9oaWRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1175,
+    "key": "minecraft:armor_stand",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6YXJtb3Jfc3RhbmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmFybW9yX3N0YW5kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1176,
+    "key": "minecraft:iron_horse_armor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFG1pbmVjcmFmdDphcm1vci5ib2R5QBQAAAAAAAAACQEUbWluZWNyYWZ0OmFybW9yLmJvZHkAAAAAAAAAAAAJAQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAblBQEObWluZWNyYWZ0Omlyb24AAQI/AQEA",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6aXJvbl9ob3JzZV9hcm1vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lmlyb25faG9yc2VfYXJtb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1177,
+    "key": "minecraft:golden_horse_armor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFG1pbmVjcmFmdDphcm1vci5ib2R5QBwAAAAAAAAACQEUbWluZWNyYWZ0OmFybW9yLmJvZHkAAAAAAAAAAAAJAQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAblBQEObWluZWNyYWZ0OmdvbGQAAQI/AQEA",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Z29sZGVuX2hvcnNlX2FybW9y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmdvbGRlbl9ob3JzZV9hcm1vcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1178,
+    "key": "minecraft:diamond_horse_armor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFG1pbmVjcmFmdDphcm1vci5ib2R5QCYAAAAAAAAACQEUbWluZWNyYWZ0OmFybW9yLmJvZHlAAAAAAAAAAAAJAQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAblBQERbWluZWNyYWZ0OmRpYW1vbmQAAQI/AQEA",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZGlhbW9uZF9ob3JzZV9hcm1vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmRpYW1vbmRfaG9yc2VfYXJtb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1179,
+    "key": "minecraft:leather_horse_armor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQIAFG1pbmVjcmFmdDphcm1vci5ib2R5QAgAAAAAAAAACQEUbWluZWNyYWZ0OmFybW9yLmJvZHkAAAAAAAAAAAAJAQ==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAblBQERbWluZWNyYWZ0OmxlYXRoZXIAAQI/AQEA",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bGVhdGhlcl9ob3JzZV9hcm1vcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmxlYXRoZXJfaG9yc2VfYXJtb3IA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1180,
+    "key": "minecraft:lead",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6bGVhZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAE2l0ZW0ubWluZWNyYWZ0LmxlYWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1181,
+    "key": "minecraft:name_tag",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6bmFtZV90YWc=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0Lm5hbWVfdGFnAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1182,
+    "key": "minecraft:command_block_minecart",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y29tbWFuZF9ibG9ja19taW5lY2FydA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LmNvbW1hbmRfYmxvY2tfbWluZWNhcnQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1183,
+    "key": "minecraft:mutton",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI/mZmaAA==",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6bXV0dG9u",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0Lm11dHRvbgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1184,
+    "key": "minecraft:cooked_mutton",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZBGZmaAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Y29va2VkX211dHRvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmNvb2tlZF9tdXR0b24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1185,
+    "key": "minecraft:white_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2hpdGVfYmFubmVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC53aGl0ZV9iYW5uZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1186,
+    "key": "minecraft:orange_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6b3JhbmdlX2Jhbm5lcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfYmFubmVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1187,
+    "key": "minecraft:magenta_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bWFnZW50YV9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1188,
+    "key": "minecraft:light_blue_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfYmx1ZV9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1189,
+    "key": "minecraft:yellow_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6eWVsbG93X2Jhbm5lcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfYmFubmVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1190,
+    "key": "minecraft:lime_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bGltZV9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5saW1lX2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1191,
+    "key": "minecraft:pink_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGlua19iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5waW5rX2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1192,
+    "key": "minecraft:gray_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z3JheV9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ncmF5X2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1193,
+    "key": "minecraft:light_gray_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfZ3JheV9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1194,
+    "key": "minecraft:cyan_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y3lhbl9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jeWFuX2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1195,
+    "key": "minecraft:purple_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVycGxlX2Jhbm5lcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfYmFubmVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1196,
+    "key": "minecraft:blue_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Ymx1ZV9iYW5uZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ibHVlX2Jhbm5lcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1197,
+    "key": "minecraft:brown_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YnJvd25fYmFubmVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5icm93bl9iYW5uZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1198,
+    "key": "minecraft:green_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z3JlZW5fYmFubmVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ncmVlbl9iYW5uZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1199,
+    "key": "minecraft:red_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cmVkX2Jhbm5lcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5yZWRfYmFubmVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1200,
+    "key": "minecraft:black_banner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmxhY2tfYmFubmVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ibGFja19iYW5uZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1201,
+    "key": "minecraft:end_crystal",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZW5kX2NyeXN0YWw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmVuZF9jcnlzdGFsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1202,
+    "key": "minecraft:chorus_fruit",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAQNBgAAA",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQRAGZmaAQ==",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y2hvcnVzX2ZydWl0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmNob3J1c19mcnVpdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_cooldown": "GD+AAAAA"
+    }
+  },
+  {
+    "id": 1203,
+    "key": "minecraft:popped_chorus_fruit",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cG9wcGVkX2Nob3J1c19mcnVpdA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnBvcHBlZF9jaG9ydXNfZnJ1aXQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1204,
+    "key": "minecraft:torchflower_seeds",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6dG9yY2hmbG93ZXJfc2VlZHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0LnRvcmNoZmxvd2VyX3NlZWRzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1205,
+    "key": "minecraft:pitcher_pod",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGl0Y2hlcl9wb2Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LnBpdGNoZXJfcG9kAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1206,
+    "key": "minecraft:beetroot",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQE/mZmaAA==",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6YmVldHJvb3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmJlZXRyb290AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1207,
+    "key": "minecraft:beetroot_seeds",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6YmVldHJvb3Rfc2VlZHM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LmJlZXRyb290X3NlZWRzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1208,
+    "key": "minecraft:beetroot_soup",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZA5mZnAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6YmVldHJvb3Rfc291cA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmJlZXRyb290X3NvdXAA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_remainder": "FwG+BgAA"
+    }
+  },
+  {
+    "id": 1209,
+    "key": "minecraft:dragon_breath",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6ZHJhZ29uX2JyZWF0aA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LmRyYWdvbl9icmVhdGgA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1210,
+    "key": "minecraft:splash_potion",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3BsYXNoX3BvdGlvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnNwbGFzaF9wb3Rpb24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:potion_contents": "KQAAAAA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1211,
+    "key": "minecraft:spectral_arrow",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c3BlY3RyYWxfYXJyb3c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0LnNwZWN0cmFsX2Fycm93AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1212,
+    "key": "minecraft:tipped_arrow",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6dGlwcGVkX2Fycm93",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LnRpcHBlZF9hcnJvdwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:potion_contents": "KQAAAAA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1213,
+    "key": "minecraft:lingering_potion",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bGluZ2VyaW5nX3BvdGlvbg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmxpbmdlcmluZ19wb3Rpb24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:potion_contents": "KQAAAAA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1214,
+    "key": "minecraft:shield",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:banner_patterns": "OwA=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:equippable": "HAVHAAAAAQAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c2hpZWxk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWl0ZW0ubWluZWNyYWZ0LnNoaWVsZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AtAC",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:repairable": "HQAfbWluZWNyYWZ0Ondvb2Rlbl90b29sX21hdGVyaWFscw=="
+    }
+  },
+  {
+    "id": 1215,
+    "key": "minecraft:totem_of_undying",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:death_protection": "IAICAAMJAYQHAAEBABUBZAABAQALAKAGAAEBAD+AAAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6dG90ZW1fb2ZfdW5keWluZw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LnRvdGVtX29mX3VuZHlpbmcA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1216,
+    "key": "minecraft:shulker_shell",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c2h1bGtlcl9zaGVsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnNodWxrZXJfc2hlbGwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1217,
+    "key": "minecraft:iron_nugget",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6aXJvbl9udWdnZXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0Lmlyb25fbnVnZ2V0AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1218,
+    "key": "minecraft:knowledge_book",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6a25vd2xlZGdlX2Jvb2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lmtub3dsZWRnZV9ib29rAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:recipes": "NQkAAAAAAA==",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1219,
+    "key": "minecraft:debug_stick",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:debug_stick_state": "LgoA",
+      "minecraft:enchantment_glint_override": "EwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6ZGVidWdfc3RpY2s=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGml0ZW0ubWluZWNyYWZ0LmRlYnVnX3N0aWNrAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1220,
+    "key": "minecraft:music_disc_13",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bXVzaWNfZGlzY18xMw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfMTMA",
+      "minecraft:jukebox_playable": "NAAMbWluZWNyYWZ0OjEzAQ==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1221,
+    "key": "minecraft:music_disc_cat",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bXVzaWNfZGlzY19jYXQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfY2F0AA==",
+      "minecraft:jukebox_playable": "NAANbWluZWNyYWZ0OmNhdAE=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1222,
+    "key": "minecraft:music_disc_blocks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bXVzaWNfZGlzY19ibG9ja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfYmxvY2tzAA==",
+      "minecraft:jukebox_playable": "NAAQbWluZWNyYWZ0OmJsb2NrcwE=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1223,
+    "key": "minecraft:music_disc_chirp",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bXVzaWNfZGlzY19jaGlycA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfY2hpcnAA",
+      "minecraft:jukebox_playable": "NAAPbWluZWNyYWZ0OmNoaXJwAQ==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1224,
+    "key": "minecraft:music_disc_creator",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bXVzaWNfZGlzY19jcmVhdG9y",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfY3JlYXRvcgA=",
+      "minecraft:jukebox_playable": "NAARbWluZWNyYWZ0OmNyZWF0b3IB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1225,
+    "key": "minecraft:music_disc_creator_music_box",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByZtaW5lY3JhZnQ6bXVzaWNfZGlzY19jcmVhdG9yX211c2ljX2JveA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfY3JlYXRvcl9tdXNpY19ib3gA",
+      "minecraft:jukebox_playable": "NAAbbWluZWNyYWZ0OmNyZWF0b3JfbXVzaWNfYm94AQ==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1226,
+    "key": "minecraft:music_disc_far",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bXVzaWNfZGlzY19mYXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfZmFyAA==",
+      "minecraft:jukebox_playable": "NAANbWluZWNyYWZ0OmZhcgE=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1227,
+    "key": "minecraft:music_disc_mall",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bXVzaWNfZGlzY19tYWxs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfbWFsbAA=",
+      "minecraft:jukebox_playable": "NAAObWluZWNyYWZ0Om1hbGwB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1228,
+    "key": "minecraft:music_disc_mellohi",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bXVzaWNfZGlzY19tZWxsb2hp",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfbWVsbG9oaQA=",
+      "minecraft:jukebox_playable": "NAARbWluZWNyYWZ0Om1lbGxvaGkB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1229,
+    "key": "minecraft:music_disc_stal",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bXVzaWNfZGlzY19zdGFs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2Nfc3RhbAA=",
+      "minecraft:jukebox_playable": "NAAObWluZWNyYWZ0OnN0YWwB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1230,
+    "key": "minecraft:music_disc_strad",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bXVzaWNfZGlzY19zdHJhZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2Nfc3RyYWQA",
+      "minecraft:jukebox_playable": "NAAPbWluZWNyYWZ0OnN0cmFkAQ==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1231,
+    "key": "minecraft:music_disc_ward",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bXVzaWNfZGlzY193YXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2Nfd2FyZAA=",
+      "minecraft:jukebox_playable": "NAAObWluZWNyYWZ0OndhcmQB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1232,
+    "key": "minecraft:music_disc_11",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6bXVzaWNfZGlzY18xMQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfMTEA",
+      "minecraft:jukebox_playable": "NAAMbWluZWNyYWZ0OjExAQ==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1233,
+    "key": "minecraft:music_disc_wait",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6bXVzaWNfZGlzY193YWl0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2Nfd2FpdAA=",
+      "minecraft:jukebox_playable": "NAAObWluZWNyYWZ0OndhaXQB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1234,
+    "key": "minecraft:music_disc_otherside",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6bXVzaWNfZGlzY19vdGhlcnNpZGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2Nfb3RoZXJzaWRlAA==",
+      "minecraft:jukebox_playable": "NAATbWluZWNyYWZ0Om90aGVyc2lkZQE=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1235,
+    "key": "minecraft:music_disc_relic",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6bXVzaWNfZGlzY19yZWxpYw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfcmVsaWMA",
+      "minecraft:jukebox_playable": "NAAPbWluZWNyYWZ0OnJlbGljAQ==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1236,
+    "key": "minecraft:music_disc_5",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6bXVzaWNfZGlzY181",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfNQA=",
+      "minecraft:jukebox_playable": "NAALbWluZWNyYWZ0OjUB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1237,
+    "key": "minecraft:music_disc_pigstep",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bXVzaWNfZGlzY19waWdzdGVw",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfcGlnc3RlcAA=",
+      "minecraft:jukebox_playable": "NAARbWluZWNyYWZ0OnBpZ3N0ZXAB",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1238,
+    "key": "minecraft:music_disc_precipice",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6bXVzaWNfZGlzY19wcmVjaXBpY2U=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lm11c2ljX2Rpc2NfcHJlY2lwaWNlAA==",
+      "minecraft:jukebox_playable": "NAATbWluZWNyYWZ0OnByZWNpcGljZQE=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1239,
+    "key": "minecraft:disc_fragment_5",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZGlzY19mcmFnbWVudF81",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LmRpc2NfZnJhZ21lbnRfNQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1240,
+    "key": "minecraft:trident",
+    "components": {
+      "minecraft:attribute_modifiers": "DQICHG1pbmVjcmFmdDpiYXNlX2F0dGFja19kYW1hZ2VAIAAAAAAAAAABBBttaW5lY3JhZnQ6YmFzZV9hdHRhY2tfc3BlZWTABzMzQAAAAAABAQ==",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6dHJpZGVudA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFml0ZW0ubWluZWNyYWZ0LnRyaWRlbnQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AvoB",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:tool": "GgA/gAAAAg=="
+    }
+  },
+  {
+    "id": 1241,
+    "key": "minecraft:nautilus_shell",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bmF1dGlsdXNfc2hlbGw=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm5hdXRpbHVzX3NoZWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1242,
+    "key": "minecraft:heart_of_the_sea",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6aGVhcnRfb2ZfdGhlX3NlYQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2l0ZW0ubWluZWNyYWZ0LmhlYXJ0X29mX3RoZV9zZWEA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1243,
+    "key": "minecraft:crossbow",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:charged_projectiles": "JwA=",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantable": "GwE=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y3Jvc3Nib3c=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2l0ZW0ubWluZWNyYWZ0LmNyb3NzYm93AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AtED",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1244,
+    "key": "minecraft:suspicious_stew",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQZA5mZnAQ==",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6c3VzcGljaW91c19zdGV3",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHml0ZW0ubWluZWNyYWZ0LnN1c3BpY2lvdXNfc3RldwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:suspicious_stew_effects": "KgA=",
+      "minecraft:use_remainder": "FwG+BgAA"
+    }
+  },
+  {
+    "id": 1245,
+    "key": "minecraft:loom",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6bG9vbQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5sb29tAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1246,
+    "key": "minecraft:flower_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Zmxvd2VyX2Jhbm5lcl9wYXR0ZXJu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0LmZsb3dlcl9iYW5uZXJfcGF0dGVybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1247,
+    "key": "minecraft:creeper_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6Y3JlZXBlcl9iYW5uZXJfcGF0dGVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LmNyZWVwZXJfYmFubmVyX3BhdHRlcm4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1248,
+    "key": "minecraft:skull_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c2t1bGxfYmFubmVyX3BhdHRlcm4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnNrdWxsX2Jhbm5lcl9wYXR0ZXJuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1249,
+    "key": "minecraft:mojang_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6bW9qYW5nX2Jhbm5lcl9wYXR0ZXJu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0Lm1vamFuZ19iYW5uZXJfcGF0dGVybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1250,
+    "key": "minecraft:globe_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Z2xvYmVfYmFubmVyX3BhdHRlcm4=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lmdsb2JlX2Jhbm5lcl9wYXR0ZXJuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1251,
+    "key": "minecraft:piglin_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cGlnbGluX2Jhbm5lcl9wYXR0ZXJu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0LnBpZ2xpbl9iYW5uZXJfcGF0dGVybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1252,
+    "key": "minecraft:flow_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6Zmxvd19iYW5uZXJfcGF0dGVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmZsb3dfYmFubmVyX3BhdHRlcm4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1253,
+    "key": "minecraft:guster_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6Z3VzdGVyX2Jhbm5lcl9wYXR0ZXJu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0Lmd1c3Rlcl9iYW5uZXJfcGF0dGVybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1254,
+    "key": "minecraft:field_masoned_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByZtaW5lY3JhZnQ6ZmllbGRfbWFzb25lZF9iYW5uZXJfcGF0dGVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2l0ZW0ubWluZWNyYWZ0LmZpZWxkX21hc29uZWRfYmFubmVyX3BhdHRlcm4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1255,
+    "key": "minecraft:bordure_indented_banner_pattern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByltaW5lY3JhZnQ6Ym9yZHVyZV9pbmRlbnRlZF9iYW5uZXJfcGF0dGVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALml0ZW0ubWluZWNyYWZ0LmJvcmR1cmVfaW5kZW50ZWRfYmFubmVyX3BhdHRlcm4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1256,
+    "key": "minecraft:goat_horn",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Z29hdF9ob3Ju",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmdvYXRfaG9ybgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1257,
+    "key": "minecraft:composter",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6Y29tcG9zdGVy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5jb21wb3N0ZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1258,
+    "key": "minecraft:barrel",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6YmFycmVs",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5iYXJyZWwA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1259,
+    "key": "minecraft:smoker",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6c21va2Vy",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5zbW9rZXIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1260,
+    "key": "minecraft:blast_furnace",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6Ymxhc3RfZnVybmFjZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5ibGFzdF9mdXJuYWNlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1261,
+    "key": "minecraft:cartography_table",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Y2FydG9ncmFwaHlfdGFibGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5jYXJ0b2dyYXBoeV90YWJsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1262,
+    "key": "minecraft:fletching_table",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6ZmxldGNoaW5nX3RhYmxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5mbGV0Y2hpbmdfdGFibGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1263,
+    "key": "minecraft:grindstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6Z3JpbmRzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ncmluZHN0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1264,
+    "key": "minecraft:smithing_table",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6c21pdGhpbmdfdGFibGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5zbWl0aGluZ190YWJsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1265,
+    "key": "minecraft:stonecutter",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c3RvbmVjdXR0ZXI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zdG9uZWN1dHRlcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1266,
+    "key": "minecraft:bell",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw5taW5lY3JhZnQ6YmVsbA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGJsb2NrLm1pbmVjcmFmdC5iZWxsAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1267,
+    "key": "minecraft:lantern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6bGFudGVybg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5sYW50ZXJuAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1268,
+    "key": "minecraft:soul_lantern",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6c291bF9sYW50ZXJu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5zb3VsX2xhbnRlcm4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1269,
+    "key": "minecraft:sweet_berries",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI+zMzNAA==",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c3dlZXRfYmVycmllcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGl0ZW0ubWluZWNyYWZ0LnN3ZWV0X2JlcnJpZXMA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1270,
+    "key": "minecraft:glow_berries",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0B2gQBAA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQI+zMzNAA==",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z2xvd19iZXJyaWVz",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0Lmdsb3dfYmVycmllcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1271,
+    "key": "minecraft:campfire",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6Y2FtcGZpcmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5jYW1wZmlyZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1272,
+    "key": "minecraft:soul_campfire",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:container": "PgA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6c291bF9jYW1wZmlyZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5zb3VsX2NhbXBmaXJlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1273,
+    "key": "minecraft:shroomlight",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6c2hyb29tbGlnaHQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5zaHJvb21saWdodAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1274,
+    "key": "minecraft:honeycomb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6aG9uZXljb21i",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LmhvbmV5Y29tYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1275,
+    "key": "minecraft:bee_nest",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bees": "QAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxJtaW5lY3JhZnQ6YmVlX25lc3Q=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGJsb2NrLm1pbmVjcmFmdC5iZWVfbmVzdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1276,
+    "key": "minecraft:beehive",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:bees": "QAA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxFtaW5lY3JhZnQ6YmVlaGl2ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAF2Jsb2NrLm1pbmVjcmFmdC5iZWVoaXZlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1277,
+    "key": "minecraft:honey_bottle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "FkAAAAAC2gUAAQECEg==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:food": "FQY/mZmaAQ==",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6aG9uZXlfYm90dGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2l0ZW0ubWluZWNyYWZ0LmhvbmV5X2JvdHRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "ARA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA=",
+      "minecraft:use_remainder": "FwGXCAAA"
+    }
+  },
+  {
+    "id": 1278,
+    "key": "minecraft:honeycomb_block",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6aG9uZXljb21iX2Jsb2Nr",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5ob25leWNvbWJfYmxvY2sA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1279,
+    "key": "minecraft:lodestone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6bG9kZXN0b25l",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5sb2Rlc3RvbmUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1280,
+    "key": "minecraft:crying_obsidian",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6Y3J5aW5nX29ic2lkaWFu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5jcnlpbmdfb2JzaWRpYW4A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1281,
+    "key": "minecraft:blackstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6YmxhY2tzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5ibGFja3N0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1282,
+    "key": "minecraft:blackstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6YmxhY2tzdG9uZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5ibGFja3N0b25lX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1283,
+    "key": "minecraft:blackstone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6YmxhY2tzdG9uZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5ibGFja3N0b25lX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1284,
+    "key": "minecraft:gilded_blackstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6Z2lsZGVkX2JsYWNrc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5naWxkZWRfYmxhY2tzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1285,
+    "key": "minecraft:polished_blackstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1286,
+    "key": "minecraft:polished_blackstone_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1287,
+    "key": "minecraft:polished_blackstone_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1288,
+    "key": "minecraft:chiseled_polished_blackstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByZtaW5lY3JhZnQ6Y2hpc2VsZWRfcG9saXNoZWRfYmxhY2tzdG9uZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALGJsb2NrLm1pbmVjcmFmdC5jaGlzZWxlZF9wb2xpc2hlZF9ibGFja3N0b25lAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1289,
+    "key": "minecraft:polished_blackstone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3M=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX2JyaWNrcwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1290,
+    "key": "minecraft:polished_blackstone_brick_slab",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByhtaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9icmlja19zbGFi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALmJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX2JyaWNrX3NsYWIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1291,
+    "key": "minecraft:polished_blackstone_brick_stairs",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByptaW5lY3JhZnQ6cG9saXNoZWRfYmxhY2tzdG9uZV9icmlja19zdGFpcnM=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGJsb2NrLm1pbmVjcmFmdC5wb2xpc2hlZF9ibGFja3N0b25lX2JyaWNrX3N0YWlycwA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1292,
+    "key": "minecraft:cracked_polished_blackstone_bricks",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByxtaW5lY3JhZnQ6Y3JhY2tlZF9wb2xpc2hlZF9ibGFja3N0b25lX2JyaWNrcw==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMmJsb2NrLm1pbmVjcmFmdC5jcmFja2VkX3BvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1293,
+    "key": "minecraft:respawn_anchor",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6cmVzcGF3bl9hbmNob3I=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5yZXNwYXduX2FuY2hvcgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1294,
+    "key": "minecraft:candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxBtaW5lY3JhZnQ6Y2FuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFmJsb2NrLm1pbmVjcmFmdC5jYW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1295,
+    "key": "minecraft:white_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6d2hpdGVfY2FuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC53aGl0ZV9jYW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1296,
+    "key": "minecraft:orange_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6b3JhbmdlX2NhbmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5vcmFuZ2VfY2FuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1297,
+    "key": "minecraft:magenta_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6bWFnZW50YV9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHmJsb2NrLm1pbmVjcmFmdC5tYWdlbnRhX2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1298,
+    "key": "minecraft:light_blue_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfYmx1ZV9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5saWdodF9ibHVlX2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1299,
+    "key": "minecraft:yellow_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6eWVsbG93X2NhbmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC55ZWxsb3dfY2FuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1300,
+    "key": "minecraft:lime_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6bGltZV9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5saW1lX2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1301,
+    "key": "minecraft:pink_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6cGlua19jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5waW5rX2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1302,
+    "key": "minecraft:gray_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Z3JheV9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ncmF5X2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1303,
+    "key": "minecraft:light_gray_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6bGlnaHRfZ3JheV9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5saWdodF9ncmF5X2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1304,
+    "key": "minecraft:cyan_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y3lhbl9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jeWFuX2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1305,
+    "key": "minecraft:purple_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6cHVycGxlX2NhbmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC5wdXJwbGVfY2FuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1306,
+    "key": "minecraft:blue_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Ymx1ZV9jYW5kbGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5ibHVlX2NhbmRsZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1307,
+    "key": "minecraft:brown_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YnJvd25fY2FuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5icm93bl9jYW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1308,
+    "key": "minecraft:green_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Z3JlZW5fY2FuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ncmVlbl9jYW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1309,
+    "key": "minecraft:red_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6cmVkX2NhbmRsZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGmJsb2NrLm1pbmVjcmFmdC5yZWRfY2FuZGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1310,
+    "key": "minecraft:black_candle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6YmxhY2tfY2FuZGxl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5ibGFja19jYW5kbGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1311,
+    "key": "minecraft:small_amethyst_bud",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6c21hbGxfYW1ldGh5c3RfYnVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5zbWFsbF9hbWV0aHlzdF9idWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1312,
+    "key": "minecraft:medium_amethyst_bud",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bWVkaXVtX2FtZXRoeXN0X2J1ZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5tZWRpdW1fYW1ldGh5c3RfYnVkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1313,
+    "key": "minecraft:large_amethyst_bud",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6bGFyZ2VfYW1ldGh5c3RfYnVk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC5sYXJnZV9hbWV0aHlzdF9idWQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1314,
+    "key": "minecraft:amethyst_cluster",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxptaW5lY3JhZnQ6YW1ldGh5c3RfY2x1c3Rlcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGJsb2NrLm1pbmVjcmFmdC5hbWV0aHlzdF9jbHVzdGVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1315,
+    "key": "minecraft:pointed_dripstone",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6cG9pbnRlZF9kcmlwc3RvbmU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC5wb2ludGVkX2RyaXBzdG9uZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1316,
+    "key": "minecraft:ochre_froglight",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxltaW5lY3JhZnQ6b2NocmVfZnJvZ2xpZ2h0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAH2Jsb2NrLm1pbmVjcmFmdC5vY2hyZV9mcm9nbGlnaHQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1317,
+    "key": "minecraft:verdant_froglight",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6dmVyZGFudF9mcm9nbGlnaHQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC52ZXJkYW50X2Zyb2dsaWdodAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1318,
+    "key": "minecraft:pearlescent_froglight",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6cGVhcmxlc2NlbnRfZnJvZ2xpZ2h0",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5wZWFybGVzY2VudF9mcm9nbGlnaHQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1319,
+    "key": "minecraft:frogspawn",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6ZnJvZ3NwYXdu",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWJsb2NrLm1pbmVjcmFmdC5mcm9nc3Bhd24A",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1320,
+    "key": "minecraft:echo_shard",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxRtaW5lY3JhZnQ6ZWNob19zaGFyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGWl0ZW0ubWluZWNyYWZ0LmVjaG9fc2hhcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1321,
+    "key": "minecraft:brush",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:damage": "AwA=",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6YnJ1c2g=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFGl0ZW0ubWluZWNyYWZ0LmJydXNoAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_damage": "AkA=",
+      "minecraft:max_stack_size": "AQE=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1322,
+    "key": "minecraft:netherite_upgrade_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "By1taW5lY3JhZnQ6bmV0aGVyaXRlX3VwZ3JhZGVfc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMml0ZW0ubWluZWNyYWZ0Lm5ldGhlcml0ZV91cGdyYWRlX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1323,
+    "key": "minecraft:sentry_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "By1taW5lY3JhZnQ6c2VudHJ5X2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMml0ZW0ubWluZWNyYWZ0LnNlbnRyeV9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1324,
+    "key": "minecraft:dune_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6ZHVuZV9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0LmR1bmVfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1325,
+    "key": "minecraft:coast_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByxtaW5lY3JhZnQ6Y29hc3RfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMWl0ZW0ubWluZWNyYWZ0LmNvYXN0X2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1326,
+    "key": "minecraft:wild_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6d2lsZF9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0LndpbGRfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1327,
+    "key": "minecraft:ward_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6d2FyZF9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0LndhcmRfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1328,
+    "key": "minecraft:eye_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByptaW5lY3JhZnQ6ZXllX2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2l0ZW0ubWluZWNyYWZ0LmV5ZV9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1329,
+    "key": "minecraft:vex_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByptaW5lY3JhZnQ6dmV4X2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2l0ZW0ubWluZWNyYWZ0LnZleF9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1330,
+    "key": "minecraft:tide_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6dGlkZV9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0LnRpZGVfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1331,
+    "key": "minecraft:snout_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByxtaW5lY3JhZnQ6c25vdXRfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMWl0ZW0ubWluZWNyYWZ0LnNub3V0X2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1332,
+    "key": "minecraft:rib_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByptaW5lY3JhZnQ6cmliX2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAL2l0ZW0ubWluZWNyYWZ0LnJpYl9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1333,
+    "key": "minecraft:spire_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByxtaW5lY3JhZnQ6c3BpcmVfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMWl0ZW0ubWluZWNyYWZ0LnNwaXJlX2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQI=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1334,
+    "key": "minecraft:wayfinder_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BzBtaW5lY3JhZnQ6d2F5ZmluZGVyX2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUANWl0ZW0ubWluZWNyYWZ0LndheWZpbmRlcl9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1335,
+    "key": "minecraft:shaper_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "By1taW5lY3JhZnQ6c2hhcGVyX2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMml0ZW0ubWluZWNyYWZ0LnNoYXBlcl9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1336,
+    "key": "minecraft:silence_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "By5taW5lY3JhZnQ6c2lsZW5jZV9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAM2l0ZW0ubWluZWNyYWZ0LnNpbGVuY2VfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQM=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1337,
+    "key": "minecraft:raiser_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "By1taW5lY3JhZnQ6cmFpc2VyX2FybW9yX3RyaW1fc21pdGhpbmdfdGVtcGxhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMml0ZW0ubWluZWNyYWZ0LnJhaXNlcl9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1338,
+    "key": "minecraft:host_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6aG9zdF9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0Lmhvc3RfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1339,
+    "key": "minecraft:flow_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6Zmxvd19hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0LmZsb3dfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1340,
+    "key": "minecraft:bolt_armor_trim_smithing_template",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByttaW5lY3JhZnQ6Ym9sdF9hcm1vcl90cmltX3NtaXRoaW5nX3RlbXBsYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAMGl0ZW0ubWluZWNyYWZ0LmJvbHRfYXJtb3JfdHJpbV9zbWl0aGluZ190ZW1wbGF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1341,
+    "key": "minecraft:angler_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6YW5nbGVyX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmFuZ2xlcl9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1342,
+    "key": "minecraft:archer_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6YXJjaGVyX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmFyY2hlcl9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1343,
+    "key": "minecraft:arms_up_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6YXJtc191cF9wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0LmFybXNfdXBfcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1344,
+    "key": "minecraft:blade_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6YmxhZGVfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmJsYWRlX3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1345,
+    "key": "minecraft:brewer_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6YnJld2VyX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmJyZXdlcl9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1346,
+    "key": "minecraft:burn_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6YnVybl9wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmJ1cm5fcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1347,
+    "key": "minecraft:danger_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZGFuZ2VyX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmRhbmdlcl9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1348,
+    "key": "minecraft:explorer_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6ZXhwbG9yZXJfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWl0ZW0ubWluZWNyYWZ0LmV4cGxvcmVyX3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1349,
+    "key": "minecraft:flow_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6Zmxvd19wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0LmZsb3dfcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1350,
+    "key": "minecraft:friend_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZnJpZW5kX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LmZyaWVuZF9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1351,
+    "key": "minecraft:guster_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6Z3VzdGVyX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0Lmd1c3Rlcl9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1352,
+    "key": "minecraft:heart_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6aGVhcnRfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LmhlYXJ0X3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1353,
+    "key": "minecraft:heartbreak_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByJtaW5lY3JhZnQ6aGVhcnRicmVha19wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJ2l0ZW0ubWluZWNyYWZ0LmhlYXJ0YnJlYWtfcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1354,
+    "key": "minecraft:howl_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6aG93bF9wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWl0ZW0ubWluZWNyYWZ0Lmhvd2xfcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1355,
+    "key": "minecraft:miner_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6bWluZXJfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0Lm1pbmVyX3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1356,
+    "key": "minecraft:mourner_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6bW91cm5lcl9wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0Lm1vdXJuZXJfcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1357,
+    "key": "minecraft:plenty_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6cGxlbnR5X3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnBsZW50eV9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1358,
+    "key": "minecraft:prize_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6cHJpemVfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnByaXplX3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1359,
+    "key": "minecraft:scrape_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6c2NyYXBlX3BvdHRlcnlfc2hlcmQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2l0ZW0ubWluZWNyYWZ0LnNjcmFwZV9wb3R0ZXJ5X3NoZXJkAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1360,
+    "key": "minecraft:sheaf_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c2hlYWZfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnNoZWFmX3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1361,
+    "key": "minecraft:shelter_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6c2hlbHRlcl9wb3R0ZXJ5X3NoZXJk",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGl0ZW0ubWluZWNyYWZ0LnNoZWx0ZXJfcG90dGVyeV9zaGVyZAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1362,
+    "key": "minecraft:skull_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c2t1bGxfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnNrdWxsX3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1363,
+    "key": "minecraft:snort_pottery_sherd",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6c25vcnRfcG90dGVyeV9zaGVyZA==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIml0ZW0ubWluZWNyYWZ0LnNub3J0X3BvdHRlcnlfc2hlcmQA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1364,
+    "key": "minecraft:copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxZtaW5lY3JhZnQ6Y29wcGVyX2dyYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHGJsb2NrLm1pbmVjcmFmdC5jb3BwZXJfZ3JhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1365,
+    "key": "minecraft:exposed_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6ZXhwb3NlZF9jb3BwZXJfZ3JhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2NvcHBlcl9ncmF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1366,
+    "key": "minecraft:weathered_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByBtaW5lY3JhZnQ6d2VhdGhlcmVkX2NvcHBlcl9ncmF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJmJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY29wcGVyX2dyYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1367,
+    "key": "minecraft:oxidized_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6b3hpZGl6ZWRfY29wcGVyX2dyYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jb3BwZXJfZ3JhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1368,
+    "key": "minecraft:waxed_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxxtaW5lY3JhZnQ6d2F4ZWRfY29wcGVyX2dyYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAImJsb2NrLm1pbmVjcmFmdC53YXhlZF9jb3BwZXJfZ3JhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1369,
+    "key": "minecraft:waxed_exposed_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jb3BwZXJfZ3JhdGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2NvcHBlcl9ncmF0ZQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1370,
+    "key": "minecraft:waxed_weathered_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByZtaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2NvcHBlcl9ncmF0ZQ==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUALGJsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY29wcGVyX2dyYXRlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1371,
+    "key": "minecraft:waxed_oxidized_copper_grate",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByVtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY29wcGVyX2dyYXRl",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2Jsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jb3BwZXJfZ3JhdGUA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1372,
+    "key": "minecraft:copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxVtaW5lY3JhZnQ6Y29wcGVyX2J1bGI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAG2Jsb2NrLm1pbmVjcmFmdC5jb3BwZXJfYnVsYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1373,
+    "key": "minecraft:exposed_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx1taW5lY3JhZnQ6ZXhwb3NlZF9jb3BwZXJfYnVsYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAI2Jsb2NrLm1pbmVjcmFmdC5leHBvc2VkX2NvcHBlcl9idWxiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1374,
+    "key": "minecraft:weathered_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx9taW5lY3JhZnQ6d2VhdGhlcmVkX2NvcHBlcl9idWxi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJWJsb2NrLm1pbmVjcmFmdC53ZWF0aGVyZWRfY29wcGVyX2J1bGIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1375,
+    "key": "minecraft:oxidized_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bx5taW5lY3JhZnQ6b3hpZGl6ZWRfY29wcGVyX2J1bGI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAJGJsb2NrLm1pbmVjcmFmdC5veGlkaXplZF9jb3BwZXJfYnVsYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1376,
+    "key": "minecraft:waxed_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6d2F4ZWRfY29wcGVyX2J1bGI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIWJsb2NrLm1pbmVjcmFmdC53YXhlZF9jb3BwZXJfYnVsYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1377,
+    "key": "minecraft:waxed_exposed_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByNtaW5lY3JhZnQ6d2F4ZWRfZXhwb3NlZF9jb3BwZXJfYnVsYg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKWJsb2NrLm1pbmVjcmFmdC53YXhlZF9leHBvc2VkX2NvcHBlcl9idWxiAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1378,
+    "key": "minecraft:waxed_weathered_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByVtaW5lY3JhZnQ6d2F4ZWRfd2VhdGhlcmVkX2NvcHBlcl9idWxi",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAK2Jsb2NrLm1pbmVjcmFmdC53YXhlZF93ZWF0aGVyZWRfY29wcGVyX2J1bGIA",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1379,
+    "key": "minecraft:waxed_oxidized_copper_bulb",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "ByRtaW5lY3JhZnQ6d2F4ZWRfb3hpZGl6ZWRfY29wcGVyX2J1bGI=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAKmJsb2NrLm1pbmVjcmFmdC53YXhlZF9veGlkaXplZF9jb3BwZXJfYnVsYgA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1380,
+    "key": "minecraft:trial_spawner",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxdtaW5lY3JhZnQ6dHJpYWxfc3Bhd25lcg==",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWJsb2NrLm1pbmVjcmFmdC50cmlhbF9zcGF3bmVyAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1381,
+    "key": "minecraft:trial_key",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxNtaW5lY3JhZnQ6dHJpYWxfa2V5",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAGGl0ZW0ubWluZWNyYWZ0LnRyaWFsX2tleQA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1382,
+    "key": "minecraft:ominous_trial_key",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxttaW5lY3JhZnQ6b21pbm91c190cmlhbF9rZXk=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAIGl0ZW0ubWluZWNyYWZ0Lm9taW5vdXNfdHJpYWxfa2V5AA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1383,
+    "key": "minecraft:vault",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "Bw9taW5lY3JhZnQ6dmF1bHQ=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAFWJsb2NrLm1pbmVjcmFmdC52YXVsdAA=",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:rarity": "CQA=",
+      "minecraft:repair_cost": "EQA="
+    }
+  },
+  {
+    "id": 1384,
+    "key": "minecraft:ominous_bottle",
+    "components": {
+      "minecraft:attribute_modifiers": "DQAB",
+      "minecraft:consumable": "Fj/MzM0C2QQAAQSMCA==",
+      "minecraft:enchantments": "CgAB",
+      "minecraft:item_model": "BxhtaW5lY3JhZnQ6b21pbm91c19ib3R0bGU=",
+      "minecraft:item_name": "BgoIAAl0cmFuc2xhdGUAHWl0ZW0ubWluZWNyYWZ0Lm9taW5vdXNfYm90dGxlAA==",
+      "minecraft:lore": "CAA=",
+      "minecraft:max_stack_size": "AUA=",
+      "minecraft:ominous_bottle_amplifier": "MwA=",
+      "minecraft:rarity": "CQE=",
+      "minecraft:repair_cost": "EQA="
+    }
+  }
+]
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index e1eafe2c5..452312f88 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit e1eafe2c5304012d23acba80659459f7868fe2b1
+Subproject commit 452312f88317cce019b8f336f485ffa7b2c19557

From 2019e53bad109d79077b544cd9d9ec15e8f69472 Mon Sep 17 00:00:00 2001
From: Alex <40795980+AlexProgrammerDE@users.noreply.github.com>
Date: Thu, 5 Dec 2024 11:35:03 +0100
Subject: [PATCH 098/165] Feature: Accurate Java packet ticking (#5121)

* Use proposed mcpl ticking PR

* Remove more not needed overrides

* Bump mcpl

* Fix missing import

* Bump mcpl

* Switch to official version

---------

Co-authored-by: chris <github@onechris.mozmail.com>
---
 .../platform/spigot/GeyserSpigotInjector.java |  2 +-
 .../java/org/geysermc/geyser/GeyserImpl.java  |  3 --
 .../geyser/network/UpstreamPacketHandler.java |  2 +-
 .../geyser/network/netty/LocalSession.java    |  7 +--
 .../registry/PacketTranslatorRegistry.java    |  6 +--
 .../geyser/session/GeyserSession.java         | 49 +++++++++----------
 .../entity/SkullBlockEntityTranslator.java    |  7 +--
 .../translator/protocol/PacketTranslator.java |  1 +
 .../entity/player/BedrockEmoteTranslator.java |  7 +--
 .../java/JavaCustomPayloadTranslator.java     |  6 ---
 .../java/JavaDisconnectTranslator.java        |  5 --
 .../java/JavaKeepAliveTranslator.java         |  5 --
 .../java/JavaLoginDisconnectTranslator.java   |  5 --
 .../java/JavaSelectKnownPacksTranslator.java  |  6 ---
 .../JavaStartConfigurationTranslator.java     |  6 ---
 .../player/JavaCookieRequestTranslator.java   |  4 +-
 gradle/libs.versions.toml                     |  2 +-
 17 files changed, 41 insertions(+), 82 deletions(-)

diff --git a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
index a3402a752..9f7e21579 100644
--- a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
+++ b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
@@ -178,7 +178,7 @@ public class GeyserSpigotInjector extends GeyserInjector {
         MinecraftProtocol protocol = new MinecraftProtocol();
         LocalSession session = new LocalSession(bootstrap.getGeyserConfig().getRemote().address(),
                 bootstrap.getGeyserConfig().getRemote().port(), this.serverSocketAddress,
-                InetAddress.getLoopbackAddress().getHostAddress(), protocol, protocol.createHelper());
+                InetAddress.getLoopbackAddress().getHostAddress(), protocol, Runnable::run);
         session.connect();
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
index 0a8222f8d..065c1f0cc 100644
--- a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
@@ -414,9 +414,6 @@ public class GeyserImpl implements GeyserApi, EventRegistrar {
             }
         }
 
-        // Ensure that PacketLib does not create an event loop for handling packets; we'll do that ourselves
-        TcpSession.USE_EVENT_LOOP_FOR_PACKETS = false;
-
         pendingMicrosoftAuthentication = new PendingMicrosoftAuthentication(config.getPendingAuthenticationTimeout());
 
         this.newsHandler = new NewsHandler(BRANCH, this.buildNumber());
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index 0cf161c6a..dfebb93dc 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -96,7 +96,7 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
     }
 
     private PacketSignal translateAndDefault(BedrockPacket packet) {
-        Registries.BEDROCK_PACKET_TRANSLATORS.translate(packet.getClass(), packet, session);
+        Registries.BEDROCK_PACKET_TRANSLATORS.translate(packet.getClass(), packet, session, false);
         return PacketSignal.HANDLED; // PacketSignal.UNHANDLED will log a WARN publicly
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
index 739c1c25e..3b86a0bf9 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
@@ -59,6 +59,7 @@ import java.net.Inet4Address;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.Executor;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -72,11 +73,11 @@ public final class LocalSession extends TcpSession {
     private final String clientIp;
     private final PacketCodecHelper codecHelper;
 
-    public LocalSession(String host, int port, SocketAddress targetAddress, String clientIp, PacketProtocol protocol, MinecraftCodecHelper codecHelper) {
-        super(host, port, protocol);
+    public LocalSession(String host, int port, SocketAddress targetAddress, String clientIp, PacketProtocol protocol, Executor packetHandlerExecutor) {
+        super(host, port, protocol, packetHandlerExecutor);
         this.targetAddress = targetAddress;
         this.clientIp = clientIp;
-        this.codecHelper = codecHelper;
+        this.codecHelper = protocol.createHelper();
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java
index b31f2b4f0..e81935edf 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java
@@ -56,15 +56,15 @@ public class PacketTranslatorRegistry<T> extends AbstractMappedRegistry<Class<?
     }
 
     @SuppressWarnings("unchecked")
-    public <P extends T> boolean translate(Class<? extends P> clazz, P packet, GeyserSession session) {
+    public <P extends T> boolean translate(Class<? extends P> clazz, P packet, GeyserSession session, boolean canRunImmediately) {
         if (session.getUpstream().isClosed() || session.isClosed()) {
             return false;
         }
 
         PacketTranslator<P> translator = (PacketTranslator<P>) this.mappings.get(clazz);
         if (translator != null) {
-            EventLoop eventLoop = session.getEventLoop();
-            if (!translator.shouldExecuteInEventLoop() || eventLoop.inEventLoop()) {
+            EventLoop eventLoop = session.getTickEventLoop();
+            if (canRunImmediately || !translator.shouldExecuteInEventLoop() || eventLoop.inEventLoop()) {
                 translate0(session, translator, packet);
             } else {
                 eventLoop.execute(() -> translate0(session, translator, packet));
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index cfb981b7d..b4a8e6203 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -253,7 +253,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      * The loop where all packets and ticking is processed to prevent concurrency issues.
      * If this is manually called, ensure that any exceptions are properly handled.
      */
-    private final EventLoop eventLoop;
+    private final EventLoop tickEventLoop;
     @Setter
     private AuthData authData;
     private BedrockClientData clientData;
@@ -653,10 +653,10 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     private MinecraftProtocol protocol;
 
-    public GeyserSession(GeyserImpl geyser, BedrockServerSession bedrockServerSession, EventLoop eventLoop) {
+    public GeyserSession(GeyserImpl geyser, BedrockServerSession bedrockServerSession, EventLoop tickEventLoop) {
         this.geyser = geyser;
         this.upstream = new UpstreamSession(bedrockServerSession);
-        this.eventLoop = eventLoop;
+        this.tickEventLoop = tickEventLoop;
 
         this.erosionHandler = new GeyserboundHandshakePacketHandler(this);
 
@@ -947,17 +947,17 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         boolean floodgate = this.remoteServer.authType() == AuthType.FLOODGATE;
 
         // Start ticking
-        tickThread = eventLoop.scheduleAtFixedRate(this::tick, 50, 50, TimeUnit.MILLISECONDS);
+        tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, 50, 50, TimeUnit.MILLISECONDS);
 
         TcpSession downstream;
         if (geyser.getBootstrap().getSocketAddress() != null) {
             // We're going to connect through the JVM and not through TCP
             downstream = new LocalSession(this.remoteServer.address(), this.remoteServer.port(),
                     geyser.getBootstrap().getSocketAddress(), upstream.getAddress().getAddress().getHostAddress(),
-                    this.protocol, this.protocol.createHelper());
+                    this.protocol, tickEventLoop);
             this.downstream = new DownstreamSession(downstream);
         } else {
-            downstream = new TcpClientSession(this.remoteServer.address(), this.remoteServer.port(), this.protocol);
+            downstream = new TcpClientSession(this.remoteServer.address(), this.remoteServer.port(), "0.0.0.0", 0, this.protocol, null, tickEventLoop);
             this.downstream = new DownstreamSession(downstream);
 
             boolean resolveSrv = false;
@@ -1143,7 +1143,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
             @Override
             public void packetReceived(Session session, Packet packet) {
-                Registries.JAVA_PACKET_TRANSLATORS.translate(packet.getClass(), packet, GeyserSession.this);
+                Registries.JAVA_PACKET_TRANSLATORS.translate(packet.getClass(), packet, GeyserSession.this, true);
             }
 
             @Override
@@ -1213,10 +1213,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      * Moves task to the session event loop if already not in it. Otherwise, the task is automatically ran.
      */
     public void ensureInEventLoop(Runnable runnable) {
-        if (eventLoop.inEventLoop()) {
-            runnable.run();
+        if (tickEventLoop.inEventLoop()) {
+            executeRunnable(runnable);
             return;
         }
+
         executeInEventLoop(runnable);
     }
 
@@ -1224,15 +1225,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      * Executes a task and prints a stack trace if an error occurs.
      */
     public void executeInEventLoop(Runnable runnable) {
-        eventLoop.execute(() -> {
-            try {
-                runnable.run();
-            } catch (ErosionCancellationException e) {
-                geyser.getLogger().debug("Caught ErosionCancellationException");
-            } catch (Throwable e) {
-                geyser.getLogger().error("Error thrown in " + this.bedrockUsername() + "'s event loop!", e);
-            }
-        });
+        tickEventLoop.execute(() -> executeRunnable(runnable));
     }
 
     /**
@@ -1241,19 +1234,25 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      * The task will not run if the session is closed.
      */
     public ScheduledFuture<?> scheduleInEventLoop(Runnable runnable, long duration, TimeUnit timeUnit) {
-        return eventLoop.schedule(() -> {
-            try {
+        return tickEventLoop.schedule(() -> {
+            executeRunnable(() -> {
                 if (!closed) {
                     runnable.run();
                 }
-            } catch (ErosionCancellationException e) {
-                geyser.getLogger().debug("Caught ErosionCancellationException");
-            } catch (Throwable e) {
-                geyser.getLogger().error("Error thrown in " + this.bedrockUsername() + "'s event loop!", e);
-            }
+            });
         }, duration, timeUnit);
     }
 
+    private void executeRunnable(Runnable runnable) {
+        try {
+            runnable.run();
+        } catch (ErosionCancellationException e) {
+            geyser.getLogger().debug("Caught ErosionCancellationException");
+        } catch (Throwable e) {
+            geyser.getLogger().error("Error thrown in " + this.bedrockUsername() + "'s event loop!", e);
+        }
+    }
+
     /**
      * Called every 50 milliseconds - one Minecraft tick.
      */
diff --git a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
index be0f8560f..10d45658e 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/SkullBlockEntityTranslator.java
@@ -131,11 +131,8 @@ public class SkullBlockEntityTranslator extends BlockEntityTranslator implements
                 session.getGeyser().getLogger().debug("Custom skull with invalid profile tag: " + blockPosition + " " + javaNbt);
                 return;
             }
-            if (session.getEventLoop().inEventLoop()) {
-                putSkull(session, blockPosition, uuid, texturesProperty, blockState);
-            } else {
-                session.executeInEventLoop(() -> putSkull(session, blockPosition, uuid, texturesProperty, blockState));
-            }
+
+            session.ensureInEventLoop(() -> putSkull(session, blockPosition, uuid, texturesProperty, blockState));
         });
 
         // We don't have the textures yet, so we can't determine if a custom block was defined for this skull
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/PacketTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/PacketTranslator.java
index d49cdd6d0..da5cd5cb0 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/PacketTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/PacketTranslator.java
@@ -34,6 +34,7 @@ public abstract class PacketTranslator<T> {
     /**
      * Determines if this packet should be handled in the session's event loop. This should generally be true -
      * only when the packet has to be executed immediately should it be false.
+     * This method is only used for bedrock packets, java packets have a more sophisticated system through MCProtocolLib.
      */
     public boolean shouldExecuteInEventLoop() {
         return true;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockEmoteTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockEmoteTranslator.java
index 7a37aa72e..07af4ddc4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockEmoteTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/BedrockEmoteTranslator.java
@@ -61,11 +61,8 @@ public class BedrockEmoteTranslator extends PacketTranslator<EmotePacket> {
         for (GeyserSession otherSession : session.getGeyser().getSessionManager().getSessions().values()) {
             if (otherSession != session) {
                 if (otherSession.isClosed()) continue;
-                if (otherSession.getEventLoop().inEventLoop()) {
-                    playEmote(otherSession, javaId, xuid, emote);
-                } else {
-                    otherSession.executeInEventLoop(() -> playEmote(otherSession, javaId, xuid, emote));
-                }
+
+                otherSession.ensureInEventLoop(() -> playEmote(otherSession, javaId, xuid, emote));
             }
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java
index 811449a99..c3108167b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java
@@ -140,10 +140,4 @@ public class JavaCustomPayloadTranslator extends PacketTranslator<ClientboundCus
             });
         }
     }
-
-    @Override
-    public boolean shouldExecuteInEventLoop() {
-        // For Erosion packets
-        return false;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java
index 2eb08fb92..0012390cb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java
@@ -38,9 +38,4 @@ public class JavaDisconnectTranslator extends PacketTranslator<ClientboundDiscon
     public void translate(GeyserSession session, ClientboundDisconnectPacket packet) {
         session.disconnect(MessageTranslator.convertMessage(packet.getReason(), session.locale()));
     }
-
-    @Override
-    public boolean shouldExecuteInEventLoop() {
-        return false;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaKeepAliveTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaKeepAliveTranslator.java
index 399c23080..ba57758da 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaKeepAliveTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaKeepAliveTranslator.java
@@ -67,9 +67,4 @@ public class JavaKeepAliveTranslator extends PacketTranslator<ClientboundKeepAli
         latencyPacket.setTimestamp(timestamp);
         session.sendUpstreamPacketImmediately(latencyPacket);
     }
-
-    @Override
-    public boolean shouldExecuteInEventLoop() {
-        return false;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java
index e92ae1bbd..0dd843dfa 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java
@@ -98,9 +98,4 @@ public class JavaLoginDisconnectTranslator extends PacketTranslator<ClientboundL
     private boolean testForMissingProfilePublicKey(Component disconnectReason) {
         return disconnectReason instanceof TranslatableComponent component && "multiplayer.disconnect.missing_public_key".equals(component.key());
     }
-
-    @Override
-    public boolean shouldExecuteInEventLoop() {
-        return false;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
index 5420bee90..67717febb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
@@ -59,10 +59,4 @@ public class JavaSelectKnownPacksTranslator extends PacketTranslator<Clientbound
         }
         session.sendDownstreamPacket(new ServerboundSelectKnownPacks(knownPacks));
     }
-
-    @Override
-    public boolean shouldExecuteInEventLoop() {
-        // This technically isn't correct behavior, but it prevents race conditions between MCProtocolLib's packet handler and ours.
-        return false;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaStartConfigurationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaStartConfigurationTranslator.java
index ea9a7c9d5..08d147a26 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaStartConfigurationTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaStartConfigurationTranslator.java
@@ -43,10 +43,4 @@ public class JavaStartConfigurationTranslator extends PacketTranslator<Clientbou
             erosionHandler.close();
         }
     }
-
-    @Override
-    public boolean shouldExecuteInEventLoop() {
-        // Execute outside of event loop to cancel any pending erosion futures
-        return false;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java
index a44faed29..d19bff010 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaCookieRequestTranslator.java
@@ -28,8 +28,8 @@ package org.geysermc.geyser.translator.protocol.java.entity.player;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
-import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ClientboundCookieRequestPacket;
-import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ServerboundCookieResponsePacket;
+import org.geysermc.mcprotocollib.protocol.packet.cookie.clientbound.ClientboundCookieRequestPacket;
+import org.geysermc.mcprotocollib.protocol.packet.cookie.serverbound.ServerboundCookieResponsePacket;
 
 @Translator(packet = ClientboundCookieRequestPacket.class)
 public class JavaCookieRequestTranslator extends PacketTranslator<ClientboundCookieRequestPacket> {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 029e444a5..ebd378d57 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241203.200249-19"
 protocol-codec = "3.0.0.Beta5-20241203.200249-19"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.2-20241107.110329-3"
+mcprotocollib = "1.21.2-20241127.160724-5"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From 92c7f9895b7fb0055d93433e04727c90ce9d37f6 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 5 Dec 2024 20:45:56 +0800
Subject: [PATCH 099/165] Implement new boat types

---
 .../org/geysermc/geyser/entity/EntityDefinitions.java    | 4 ++++
 .../java/org/geysermc/geyser/entity/type/BoatEntity.java | 9 ++++++++-
 .../java/org/geysermc/geyser/network/GameProtocol.java   | 5 +++++
 .../protocol/java/level/JavaBlockEventTranslator.java    | 5 +++++
 gradle/libs.versions.toml                                | 2 +-
 5 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index f48cf4053..8e485e14b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -238,6 +238,8 @@ public final class EntityDefinitions {
     public static final EntityDefinition<ChestBoatEntity> OAK_CHEST_BOAT;
     public static final EntityDefinition<OcelotEntity> OCELOT;
     public static final EntityDefinition<PaintingEntity> PAINTING;
+    public static final EntityDefinition<BoatEntity> PALE_OAK_BOAT;
+    public static final EntityDefinition<ChestBoatEntity> PALE_OAK_CHEST_BOAT;
     public static final EntityDefinition<PandaEntity> PANDA;
     public static final EntityDefinition<ParrotEntity> PARROT;
     public static final EntityDefinition<PhantomEntity> PHANTOM;
@@ -593,6 +595,7 @@ public final class EntityDefinitions {
             MANGROVE_BOAT = buildBoat(boatBase, EntityType.MANGROVE_BOAT, BoatEntity.BoatVariant.MANGROVE);
             OAK_BOAT = buildBoat(boatBase, EntityType.OAK_BOAT, BoatEntity.BoatVariant.OAK);
             SPRUCE_BOAT = buildBoat(boatBase, EntityType.SPRUCE_BOAT, BoatEntity.BoatVariant.SPRUCE);
+            PALE_OAK_BOAT = buildBoat(boatBase, EntityType.PALE_OAK_BOAT, BoatEntity.BoatVariant.PALE_OAK);
 
             EntityDefinition<ChestBoatEntity> chestBoatBase = EntityDefinition.<ChestBoatEntity>inherited(null, boatBase)
                 .build();
@@ -606,6 +609,7 @@ public final class EntityDefinitions {
             MANGROVE_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.MANGROVE_CHEST_BOAT, BoatEntity.BoatVariant.MANGROVE);
             OAK_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.OAK_CHEST_BOAT, BoatEntity.BoatVariant.OAK);
             SPRUCE_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.SPRUCE_CHEST_BOAT, BoatEntity.BoatVariant.SPRUCE);
+            PALE_OAK_CHEST_BOAT = buildChestBoat(chestBoatBase, EntityType.PALE_OAK_CHEST_BOAT, BoatEntity.BoatVariant.PALE_OAK);
         }
 
         EntityDefinition<LivingEntity> livingEntityBase = EntityDefinition.inherited(LivingEntity::new, entityBase)
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
index 86accea17..6c7b6e122 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
@@ -34,6 +34,7 @@ import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
@@ -77,6 +78,11 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
         super(session, entityId, geyserId, uuid, definition, position.add(0d, definition.offset(), 0d), motion, yaw + 90, 0, yaw + 90);
         this.variant = variant;
 
+        // TODO remove once 1.21.40 is dropped
+        if (variant == BoatVariant.PALE_OAK && GameProtocol.isPreWinterDrop(session)) {
+            variant = BoatVariant.BIRCH;
+        }
+
         dirtyMetadata.put(EntityDataTypes.VARIANT, variant.ordinal());
 
         // Required to be able to move on land 1.16.200+ or apply gravity not in the water 1.16.100+
@@ -238,7 +244,8 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
         DARK_OAK(Items.DARK_OAK_BOAT, Items.DARK_OAK_CHEST_BOAT),
         MANGROVE(Items.MANGROVE_BOAT, Items.MANGROVE_CHEST_BOAT),
         BAMBOO(Items.BAMBOO_RAFT, Items.BAMBOO_CHEST_RAFT),
-        CHERRY(Items.CHERRY_BOAT, Items.CHERRY_CHEST_BOAT);
+        CHERRY(Items.CHERRY_BOAT, Items.CHERRY_CHEST_BOAT),
+        PALE_OAK(Items.PALE_OAK_BOAT, Items.PALE_OAK_CHEST_BOAT);
 
         private final Item pickItem;
         final Item chestPickItem;
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index c762cf5d3..bb7032d25 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -30,6 +30,7 @@ import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
 import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
+import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodec;
 import org.geysermc.mcprotocollib.protocol.codec.PacketCodec;
 
@@ -84,6 +85,10 @@ public final class GameProtocol {
 
     /* Bedrock convenience methods to gatekeep features and easily remove the check on version removal */
 
+    public static boolean isPreWinterDrop(GeyserSession session) {
+        return session.getUpstream().getProtocolVersion() == Bedrock_v748.CODEC.getProtocolVersion();
+    }
+
     /**
      * Gets the {@link PacketCodec} for Minecraft: Java Edition.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockEventTranslator.java
index c94468c17..917075976 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockEventTranslator.java
@@ -62,6 +62,11 @@ public class JavaBlockEventTranslator extends PacketTranslator<ClientboundBlockE
         Vector3i position = packet.getPosition();
         BlockValue value = packet.getValue();
 
+        if (value == null) {
+            session.getGeyser().getLogger().debug("Unable to handle packet %s - null value! ".formatted(packet.toString()));
+            return;
+        }
+
         BlockEventPacket blockEventPacket = new BlockEventPacket();
         blockEventPacket.setBlockPosition(position);
 
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 686064926..e9b922eae 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241203.200249-19"
 protocol-codec = "3.0.0.Beta5-20241203.200249-19"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-SNAPSHOT"
+mcprotocollib = "1.21.4-20241205.121506-8"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From a2184e4faeb04e76d4bee216776dca876d701c0c Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Fri, 6 Dec 2024 21:18:42 +0800
Subject: [PATCH 100/165] start on implementing creaking

---
 README.md                                     |  2 +-
 .../fabric/src/main/resources/fabric.mod.json |  2 +-
 ....modrinth-uploading-conventions.gradle.kts |  2 +-
 .../geyser/entity/EntityDefinitions.java      |  9 ++
 .../type/living/monster/CreakingEntity.java   | 87 +++++++++++++++++++
 .../geyser/session/GeyserSession.java         |  5 +-
 .../entity/JavaEntityEventTranslator.java     |  6 ++
 gradle/libs.versions.toml                     |  2 +-
 8 files changed, 110 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index 83a1d5c0b..9f5c9d8d5 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.21.40 - 1.21.50 and Minecraft Java 1.21.2/1.21.3. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.21.40 - 1.21.50 and Minecraft Java 1.21.4. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/bootstrap/mod/fabric/src/main/resources/fabric.mod.json b/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
index a801eb207..4f50768f4 100644
--- a/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
+++ b/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
@@ -25,6 +25,6 @@
   "depends": {
     "fabricloader": ">=0.16.7",
     "fabric": "*",
-    "minecraft": ">=1.21.2"
+    "minecraft": ">=1.21.4"
   }
 }
diff --git a/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts b/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
index 59f85d182..4f445f455 100644
--- a/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
+++ b/build-logic/src/main/kotlin/geyser.modrinth-uploading-conventions.gradle.kts
@@ -13,7 +13,7 @@ modrinth {
     versionNumber.set(projectVersion(project))
     versionType.set("beta")
     changelog.set(System.getenv("CHANGELOG") ?: "")
-    gameVersions.addAll("1.21.2", libs.minecraft.get().version as String)
+    gameVersions.add(libs.minecraft.get().version as String)
     failSilently.set(true)
 
     syncBodyFrom.set(rootProject.file("README.md").readText())
diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 8e485e14b..d284cba3f 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -684,6 +684,15 @@ public final class EntityDefinitions {
                     .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setActive)
                     .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setIsTearingDown)
                     .addTranslator(MetadataType.OPTIONAL_POSITION, CreakingEntity::setHomePos)
+                    .properties(new GeyserEntityProperties.Builder()
+                        .addEnum("minecraft:creaking_state",
+                            "neutral",
+                            "hostile_observed",
+                            "hostile_unobserved",
+                            "twitching",
+                            "crumbling")
+                        .addInt("minecraft:creaking_swaying_ticks", 0, 6)
+                        .build())
                     .build();
             CREEPER = EntityDefinition.inherited(CreeperEntity::new, mobEntityBase)
                     .type(EntityType.CREEPER)
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
index 8cfaf7428..a1861ca69 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
@@ -27,6 +27,12 @@ package org.geysermc.geyser.entity.type.living.monster;
 
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.math.vector.Vector3i;
+import org.cloudburstmc.nbt.NbtMap;
+import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
+import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
+import org.cloudburstmc.protocol.bedrock.packet.AddEntityPacket;
+import org.cloudburstmc.protocol.bedrock.packet.LevelEventGenericPacket;
+import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
@@ -36,19 +42,100 @@ import java.util.Optional;
 import java.util.UUID;
 
 public class CreakingEntity extends MonsterEntity {
+
+    private Vector3i homePosition;
+
     public CreakingEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
     }
 
+    @Override
+    protected void initializeMetadata() {
+        super.initializeMetadata();
+        setFlag(EntityFlag.HIDDEN_WHEN_INVISIBLE, true);
+        setFlag(EntityFlag.FIRE_IMMUNE, true);
+    }
+
+    @Override
+    public void addAdditionalSpawnData(AddEntityPacket addEntityPacket) {
+        propertyManager.add("minecraft:creaking_state", "neutral");
+        propertyManager.add("minecraft:creaking_swaying_ticks", 0);
+        propertyManager.applyIntProperties(addEntityPacket.getProperties().getIntProperties());
+    }
+
     public void setCanMove(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
+        if (booleanEntityMetadata.getValue()) {
+            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, false);
+
+            // unfreeze sound? SoundEvent.UNFREEZE
+            propertyManager.add("minecraft:creaking_state", "hostile_unobserved");
+            updateBedrockEntityProperties();
+        } else {
+            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, true);
+            propertyManager.add("minecraft:creaking_state", "hostile_observed");
+            updateBedrockEntityProperties();
+        }
+
+        GeyserImpl.getInstance().getLogger().warning("set can move; " + booleanEntityMetadata.toString());
     }
 
     public void setActive(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
+        if (booleanEntityMetadata.getValue()) {
+//            LevelSoundEvent2Packet addEntityPacket = new LevelSoundEvent2Packet();
+//            addEntityPacket.setIdentifier("minecraft:creaking");
+//            addEntityPacket.setPosition(position);
+//            addEntityPacket.setBabySound(false);
+//            addEntityPacket.setSound(SoundEvent.ACTIVATE);
+//            addEntityPacket.setExtraData(-1);
+//            session.sendUpstreamPacket(addEntityPacket);
+
+//            setFlag(EntityFlag.HIDDEN_WHEN_INVISIBLE, true);
+//            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, true);
+        } else {
+            propertyManager.add("minecraft:creaking_state", "neutral");
+        }
+        GeyserImpl.getInstance().getLogger().warning("set active; " + booleanEntityMetadata.toString());
     }
 
     public void setIsTearingDown(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
+        GeyserImpl.getInstance().getLogger().warning("set isTearingDown; " + booleanEntityMetadata.toString());
+        if (booleanEntityMetadata.getValue()) {
+            propertyManager.add("minecraft:creaking_state", "crumbling");
+            updateBedrockEntityProperties();
+//            LevelEventPacket levelEventPacket = new LevelEventPacket();
+//            levelEventPacket.setType(ParticleType.CREAKING_CRUMBLE);
+//            levelEventPacket.setPosition(position);
+//            levelEventPacket.setData(0);
+        }
     }
 
     public void setHomePos(EntityMetadata<Optional<Vector3i>,? extends MetadataType<Optional<Vector3i>>> optionalEntityMetadata) {
+        if (optionalEntityMetadata.getValue().isPresent()) {
+            this.homePosition = optionalEntityMetadata.getValue().get();
+        } else {
+            this.homePosition = null;
+        }
+    }
+
+    public void createParticleBeam() {
+        if (this.homePosition != null) {
+            LevelEventGenericPacket levelEventGenericPacket = new LevelEventGenericPacket();
+            levelEventGenericPacket.setType(LevelEvent.PARTICLE_CREAKING_HEART_TRIAL);
+            levelEventGenericPacket.setTag(
+                NbtMap.builder()
+                    .putInt("CreakingAmount", 0)
+                    .putFloat("CreakingX", position.getX())
+                    .putFloat("CreakingY", position.getY())
+                    .putFloat("CreakingZ", position.getZ())
+                    .putInt("HeartAmount", 20)
+                    .putFloat("HeartX", homePosition.getX())
+                    .putFloat("HeartY", homePosition.getY())
+                    .putFloat("HeartZ", homePosition.getZ())
+                    .build()
+            );
+
+            GeyserImpl.getInstance().getLogger().warning(levelEventGenericPacket.toString());
+            session.sendUpstreamPacket(levelEventGenericPacket);
+        }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index d6fe6739b..cedf9ab66 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -1153,7 +1153,10 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
             @Override
             public void packetError(PacketErrorEvent event) {
-                geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.downstream_error", event.getCause().getMessage()));
+                geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.downstream_error",
+                    (event.getPacketClass() != null ? "(" + event.getPacketClass().getSimpleName() + ")" : "") +
+                    event.getCause().getMessage())
+                );
                 if (geyser.getConfig().isDebugMode())
                     event.getCause().printStackTrace();
                 event.setSuppress(true);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
index 6c2e02cd3..d52a2b501 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
@@ -43,6 +43,7 @@ import org.geysermc.geyser.entity.type.EvokerFangsEntity;
 import org.geysermc.geyser.entity.type.FishingHookEntity;
 import org.geysermc.geyser.entity.type.LivingEntity;
 import org.geysermc.geyser.entity.type.living.animal.ArmadilloEntity;
+import org.geysermc.geyser.entity.type.living.monster.CreakingEntity;
 import org.geysermc.geyser.entity.type.living.monster.WardenEntity;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
@@ -288,6 +289,11 @@ public class JavaEntityEventTranslator extends PacketTranslator<ClientboundEntit
                     armadilloEntity.onPeeking();
                 }
                 break;
+            case SHAKE:
+                if (entity instanceof CreakingEntity creakingEntity) {
+                    creakingEntity.createParticleBeam();
+                }
+                break;
         }
 
         if (entityEventPacket.getType() != null) {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e9b922eae..686064926 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241203.200249-19"
 protocol-codec = "3.0.0.Beta5-20241203.200249-19"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-20241205.121506-8"
+mcprotocollib = "1.21.4-SNAPSHOT"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From a41d705c42eeaa00789c5633448fc7de46c9f69a Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 8 Dec 2024 04:18:07 +0800
Subject: [PATCH 101/165] Some minor fixes, fix own block breaking progress not
 showing on the player's end

---
 .../geyser/entity/EntityDefinitions.java      |  4 +-
 .../living/animal/tameable/WolfEntity.java    |  9 ++--
 .../type/living/monster/CreakingEntity.java   | 21 +++++++---
 .../updater/AnvilInventoryUpdater.java        |  6 +--
 .../geyser/session/cache/TagCache.java        | 31 ++++++++++++++
 .../session/cache/tags/GeyserHolderSet.java   | 22 ----------
 .../player/input/BedrockBlockActions.java     |  4 +-
 .../java/JavaSelectKnownPacksTranslator.java  |  2 +-
 .../entity/JavaEntityEventTranslator.java     |  3 ++
 .../level/JavaBlockDestructionTranslator.java |  7 +++-
 .../org/geysermc/geyser/util/BlockUtils.java  | 41 +++++++------------
 11 files changed, 79 insertions(+), 71 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index d284cba3f..dab8cb6e7 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -685,13 +685,13 @@ public final class EntityDefinitions {
                     .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setIsTearingDown)
                     .addTranslator(MetadataType.OPTIONAL_POSITION, CreakingEntity::setHomePos)
                     .properties(new GeyserEntityProperties.Builder()
-                        .addEnum("minecraft:creaking_state",
+                        .addEnum(CreakingEntity.CREAKING_STATE,
                             "neutral",
                             "hostile_observed",
                             "hostile_unobserved",
                             "twitching",
                             "crumbling")
-                        .addInt("minecraft:creaking_swaying_ticks", 0, 6)
+                        .addInt(CreakingEntity.CREAKING_SWAYING_TICKS, 0, 6)
                         .build())
                     .build();
             CREEPER = EntityDefinition.inherited(CreeperEntity::new, mobEntityBase)
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index 67e5788c6..1b06f3860 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -38,8 +38,6 @@ import org.geysermc.geyser.item.enchantment.EnchantmentComponent;
 import org.geysermc.geyser.item.type.DyeItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.session.cache.registry.JavaRegistries;
-import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
 import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.InteractionResult;
@@ -62,7 +60,7 @@ import java.util.UUID;
 
 public class WolfEntity extends TameableEntity {
     private byte collarColor = 14; // Red - default
-    private GeyserHolderSet<Item> repairableItems = null;
+    private HolderSet repairableItems = null;
     private boolean isCurseOfBinding = false;
 
     public WolfEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
@@ -130,8 +128,7 @@ public class WolfEntity extends TameableEntity {
     public void setBody(ItemStack stack) {
         super.setBody(stack);
         isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
-        HolderSet set = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
-        repairableItems = GeyserHolderSet.convertHolderSet(JavaRegistries.ITEM, set);
+        repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
     }
 
     @Override
@@ -166,7 +163,7 @@ public class WolfEntity extends TameableEntity {
                 return InteractiveTag.REMOVE_WOLF_ARMOR;
             }
             if (getFlag(EntityFlag.SITTING) &&
-                    session.getTagCache().is(repairableItems, itemInHand.asItem()) &&
+                    session.getTagCache().isItem(repairableItems, itemInHand.asItem()) &&
                     this.body.isValid() && this.body.getTag() != null &&
                     this.body.getTag().getInt("Damage") > 0) {
                 return InteractiveTag.REPAIR_WOLF_ARMOR;
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
index a1861ca69..1f2ddc37c 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
@@ -41,10 +41,21 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataTyp
 import java.util.Optional;
 import java.util.UUID;
 
+/*
+ * Relevant bits:
+ * - LevelSoundEvent2Packet(sound=SPAWN, position=(233.5, 112.295, 4717.5), extraData=-1, identifier=minecraft:creaking, babySound=false, relativeVolumeDisabled=false)
+ * - [11:29:34:768] [CLIENT BOUND] - LevelSoundEvent2Packet(sound=CREAKING_HEART_SPAWN, position=(233.0, 110.0, 4717.0), extraData=-1, identifier=minecraft:creaking, babySound=false, relativeVolumeDisabled=false)
+ * - [11:29:34:768] [CLIENT BOUND] - LevelSoundEvent2Packet(sound=CREAKING_HEART_SPAWN, position=(235.0, 113.0, 4722.0), extraData=13734, identifier=, babySound=false, relativeVolumeDisabled=false)
+ * - [11:29:34:768] [CLIENT BOUND] - LevelEventPacket(type=PARTICLE_MOB_BLOCK_SPAWN, position=(233.0, 110.0, 4717.0), data=769)
+ *
+ */
 public class CreakingEntity extends MonsterEntity {
 
     private Vector3i homePosition;
 
+    public static final String CREAKING_STATE = "minecraft:creaking_state";
+    public static final String CREAKING_SWAYING_TICKS = "minecraft:creaking_swaying_ticks";
+
     public CreakingEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
     }
@@ -58,7 +69,7 @@ public class CreakingEntity extends MonsterEntity {
 
     @Override
     public void addAdditionalSpawnData(AddEntityPacket addEntityPacket) {
-        propertyManager.add("minecraft:creaking_state", "neutral");
+        propertyManager.add(CREAKING_STATE, "neutral");
         propertyManager.add("minecraft:creaking_swaying_ticks", 0);
         propertyManager.applyIntProperties(addEntityPacket.getProperties().getIntProperties());
     }
@@ -68,11 +79,11 @@ public class CreakingEntity extends MonsterEntity {
             setFlag(EntityFlag.BODY_ROTATION_BLOCKED, false);
 
             // unfreeze sound? SoundEvent.UNFREEZE
-            propertyManager.add("minecraft:creaking_state", "hostile_unobserved");
+            propertyManager.add(CREAKING_STATE, "hostile_unobserved");
             updateBedrockEntityProperties();
         } else {
             setFlag(EntityFlag.BODY_ROTATION_BLOCKED, true);
-            propertyManager.add("minecraft:creaking_state", "hostile_observed");
+            propertyManager.add(CREAKING_STATE, "hostile_observed");
             updateBedrockEntityProperties();
         }
 
@@ -92,7 +103,7 @@ public class CreakingEntity extends MonsterEntity {
 //            setFlag(EntityFlag.HIDDEN_WHEN_INVISIBLE, true);
 //            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, true);
         } else {
-            propertyManager.add("minecraft:creaking_state", "neutral");
+            propertyManager.add(CREAKING_STATE, "neutral");
         }
         GeyserImpl.getInstance().getLogger().warning("set active; " + booleanEntityMetadata.toString());
     }
@@ -100,7 +111,7 @@ public class CreakingEntity extends MonsterEntity {
     public void setIsTearingDown(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
         GeyserImpl.getInstance().getLogger().warning("set isTearingDown; " + booleanEntityMetadata.toString());
         if (booleanEntityMetadata.getValue()) {
-            propertyManager.add("minecraft:creaking_state", "crumbling");
+            propertyManager.add(CREAKING_STATE, "crumbling");
             updateBedrockEntityProperties();
 //            LevelEventPacket levelEventPacket = new LevelEventPacket();
 //            levelEventPacket.setType(ParticleType.CREAKING_CRUMBLE);
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index 459d8adf8..3ea78a942 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -40,10 +40,7 @@ import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.enchantment.Enchantment;
-import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.session.cache.registry.JavaRegistries;
-import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
@@ -403,8 +400,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
             return false;
         }
 
-        GeyserHolderSet<Item> set = GeyserHolderSet.convertHolderSet(JavaRegistries.ITEM, repairable);
-        return session.getTagCache().is(set, material.asItem());
+        return session.getTagCache().isItem(repairable, material.asItem());
     }
 
     private boolean isRenaming(GeyserSession session, AnvilContainer anvilContainer, boolean bedrock) {
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
index 26b6aad96..c77081eb0 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/TagCache.java
@@ -28,16 +28,19 @@ package org.geysermc.geyser.session.cache;
 import it.unimi.dsi.fastutil.ints.IntArrays;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
+import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.type.Item;
+import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.registry.JavaRegistries;
 import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
 import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.session.cache.tags.Tag;
 import org.geysermc.geyser.util.MinecraftKey;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ClientboundUpdateTagsPacket;
 
 import javax.annotation.ParametersAreNonnullByDefault;
@@ -127,6 +130,34 @@ public final class TagCache {
         return contains(holderSet.resolveRaw(this), holderSet.getRegistry().toNetworkId(session, object));
     }
 
+    /**
+     * Accessible via the {@link #isItem(HolderSet, Item)} method.
+     * @return true if the specified network ID is in the given {@link HolderSet} set.
+     */
+    private  <T> boolean is(@Nullable HolderSet holderSet, @NonNull JavaRegistryKey<T> registry, int id) {
+        if (holderSet == null) {
+            return false;
+        }
+
+        int[] entries = holderSet.resolve(key -> {
+            if (key.value().startsWith("#")) {
+                key = Key.key(key.namespace(), key.value().substring(1));
+            }
+            return getRaw(new Tag<>(registry, key));
+        });
+
+        return contains(entries, id);
+    }
+
+    public boolean isItem(@Nullable HolderSet holderSet, @NonNull Item item) {
+        return is(holderSet, JavaRegistries.ITEM, item.javaId());
+    }
+
+    public boolean isBlock(@Nullable HolderSet holderSet, @NonNull Block block) {
+        return is(holderSet, JavaRegistries.BLOCK, block.javaId());
+    }
+
+
     public <T> List<T> get(Tag<T> tag) {
         return mapRawArray(session, getRaw(tag), tag.registry());
     }
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
index 0e0d117a4..c77f0a642 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
@@ -33,7 +33,6 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.TagCache;
 import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 
 import java.util.List;
 import java.util.Objects;
@@ -88,27 +87,6 @@ public final class GeyserHolderSet<T> {
         return tagCache.getRaw(Objects.requireNonNull(tag, "HolderSet must have a tag if it doesn't have a list of IDs"));
     }
 
-    /**
-     * Reads a MCPL {@link HolderSet} and turns it into a GeyserHolderSet.
-     * @param registry the registry the HolderSet contains IDs from.
-     * @param holderSet the HolderSet as the MCPL HolderSet object
-     */
-    public static <T> GeyserHolderSet<T> convertHolderSet(@NonNull JavaRegistryKey<T> registry, @Nullable HolderSet holderSet) {
-        if (holderSet == null) {
-            return new GeyserHolderSet<>(registry, IntArrays.EMPTY_ARRAY);
-        }
-
-        if (holderSet.getHolders() != null) {
-            return new GeyserHolderSet<>(registry, holderSet.getHolders());
-        }
-
-        if (holderSet.getLocation() != null) {
-            return new GeyserHolderSet<>(registry, new Tag<>(registry, holderSet.getLocation()));
-        }
-
-        throw new IllegalStateException("HolderSet must have a tag or a list of IDs! " + holderSet);
-    }
-
     /**
      * Reads a HolderSet from an object from NBT.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
index ea386ebcf..b8facaa10 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
@@ -89,7 +89,7 @@ final class BedrockBlockActions {
                 LevelEventPacket startBreak = new LevelEventPacket();
                 startBreak.setType(LevelEvent.BLOCK_START_BREAK);
                 startBreak.setPosition(vector.toFloat());
-                double breakTime = BlockUtils.getSessionBreakTime(session, BlockState.of(blockState).block()) * 20; // TODO afdaöwelfunöwoaenf
+                double breakTime = BlockUtils.getSessionBreakTimeTicks(session, BlockState.of(blockState).block());
 
                 // If the block is custom or the breaking item is custom, we must keep track of break time ourselves
                 GeyserItemStack item = session.getPlayerInventory().getItemInHand();
@@ -137,7 +137,7 @@ final class BedrockBlockActions {
                 Direction direction = Direction.VALUES[blockFace];
                 spawnBlockBreakParticles(session, direction, vector, breakingBlockState);
 
-                double breakTime = BlockUtils.getSessionBreakTime(session, breakingBlockState.block()) * 20;
+                double breakTime = BlockUtils.getSessionBreakTimeTicks(session, breakingBlockState.block());
                 // If the block is custom, we must keep track of when it should break ourselves
                 long blockBreakStartTime = session.getBlockBreakStartTime();
                 if (blockBreakStartTime != 0) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
index 67717febb..f2ab22e60 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaSelectKnownPacksTranslator.java
@@ -40,7 +40,7 @@ import java.util.Set;
 @Translator(packet = ClientboundSelectKnownPacks.class)
 public class JavaSelectKnownPacksTranslator extends PacketTranslator<ClientboundSelectKnownPacks> {
     // todo: dump from client?
-    private static final Set<String> KNOWN_PACK_IDS = Set.of("core", "winter_drop", "trade_rebalance", "redstone_experiments", "minecart_improvements");
+    private static final Set<String> KNOWN_PACK_IDS = Set.of("core", "trade_rebalance", "redstone_experiments", "minecart_improvements");
 
     @Override
     public void translate(GeyserSession session, ClientboundSelectKnownPacks packet) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
index d52a2b501..504348b5b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
@@ -37,6 +37,7 @@ import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEvent2Packet;
 import org.cloudburstmc.protocol.bedrock.packet.PlaySoundPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetEntityDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetEntityMotionPacket;
+import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.EvokerFangsEntity;
@@ -294,6 +295,8 @@ public class JavaEntityEventTranslator extends PacketTranslator<ClientboundEntit
                     creakingEntity.createParticleBeam();
                 }
                 break;
+            default:
+                GeyserImpl.getInstance().getLogger().debug("unhandled entity event: " + packet);
         }
 
         if (entityEventPacket.getType() != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockDestructionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockDestructionTranslator.java
index 674a1c583..c089e33a5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockDestructionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaBlockDestructionTranslator.java
@@ -41,7 +41,12 @@ public class JavaBlockDestructionTranslator extends PacketTranslator<Clientbound
     @Override
     public void translate(GeyserSession session, ClientboundBlockDestructionPacket packet) {
         int state = session.getGeyser().getWorldManager().getBlockAt(session, packet.getPosition().getX(), packet.getPosition().getY(), packet.getPosition().getZ());
-        int breakTime = (int) (65535 / Math.ceil(BlockUtils.getBreakTime(session, BlockState.of(state).block(), ItemMapping.AIR, null, false) * 20));
+        int breakTime = 12; //(int) (65535 / Math.ceil(BlockUtils.getBreakTime(session, BlockState.of(state).block(), ItemMapping.AIR, null, false)));
+        // TODO we need to send a "total" time to Bedrock.
+        // Current plan:
+        // - start with block destroy time (if applicable)
+        // - track the time in ticks between stages
+        // - attempt to "extrapolate" to a value for Bedrock
         LevelEventPacket levelEventPacket = new LevelEventPacket();
         levelEventPacket.setPosition(packet.getPosition().toFloat());
         levelEventPacket.setType(LevelEvent.BLOCK_START_BREAK);
diff --git a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
index bd5ce861b..dd58672f8 100644
--- a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
@@ -25,33 +25,31 @@
 
 package org.geysermc.geyser.util;
 
-import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.level.block.type.Block;
-import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.registry.BlockRegistries;
-import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.EntityEffectCache;
-import org.geysermc.geyser.session.cache.registry.JavaRegistries;
-import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.collision.BlockCollision;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ToolData;
 
 public final class BlockUtils {
 
-    public static float getBlockDestroyProgress(GeyserSession session, BlockState blockState, GeyserItemStack itemInHand) {
-        float destroySpeed = blockState.block().destroyTime();
+    /**
+     * Returns the total mining progress added by mining the block in a single tick
+     * @return the mining progress added by this tick.
+     */
+    public static float getBlockMiningProgressPerTick(GeyserSession session, Block block, GeyserItemStack itemInHand) {
+        float destroySpeed = block.destroyTime();
         if (destroySpeed == -1) {
             return 0;
         }
 
-        int speedMultiplier = hasCorrectTool(session, blockState.block(), itemInHand) ? 30 : 100;
-        return getPlayerDestroySpeed(session, blockState, itemInHand) / destroySpeed / speedMultiplier;
+        int speedMultiplier = hasCorrectTool(session, block, itemInHand) ? 30 : 100;
+        return getPlayerDestroySpeed(session, block, itemInHand) / destroySpeed / speedMultiplier;
     }
 
     private static boolean hasCorrectTool(GeyserSession session, Block block, GeyserItemStack stack) {
@@ -66,8 +64,7 @@ public final class BlockUtils {
 
         for (ToolData.Rule rule : tool.getRules()) {
             if (rule.getCorrectForDrops() != null) {
-                GeyserHolderSet<Block> set = GeyserHolderSet.convertHolderSet(JavaRegistries.BLOCK, rule.getBlocks());
-                if (session.getTagCache().is(set, block)) {
+                if (session.getTagCache().isBlock(rule.getBlocks(), block)) {
                     return rule.getCorrectForDrops();
                 }
             }
@@ -84,8 +81,7 @@ public final class BlockUtils {
 
         for (ToolData.Rule rule : tool.getRules()) {
             if (rule.getSpeed() != null) {
-                GeyserHolderSet<Block> set = GeyserHolderSet.convertHolderSet(JavaRegistries.BLOCK, rule.getBlocks());
-                if (session.getTagCache().is(set, block)) {
+                if (session.getTagCache().isBlock(rule.getBlocks(), block)) {
                     return rule.getSpeed();
                 }
             }
@@ -94,8 +90,8 @@ public final class BlockUtils {
         return tool.getDefaultMiningSpeed();
     }
 
-    private static float getPlayerDestroySpeed(GeyserSession session, BlockState blockState, GeyserItemStack itemInHand) {
-        float destroySpeed = getItemDestroySpeed(session, blockState.block(), itemInHand);
+    private static float getPlayerDestroySpeed(GeyserSession session, Block block, GeyserItemStack itemInHand) {
+        float destroySpeed = getItemDestroySpeed(session, block, itemInHand);
         EntityEffectCache effectCache = session.getEffectCache();
 
         if (destroySpeed > 1.0F) {
@@ -133,17 +129,8 @@ public final class BlockUtils {
         return Math.max(cache.getHaste(), cache.getConduitPower());
     }
 
-    public int getDestroyStage(GeyserSession session) {
-        return session.getDestroyProgress() > 0F ? (int) session.getDestroyProgress() * 10 : -1;
-    }
-
-    // TODO 1.21.4 this changed probably; no more tiers
-    public static double getBreakTime(GeyserSession session, Block block, ItemMapping item, @Nullable DataComponents components, boolean isSessionPlayer) {
-        return 0.0; // TODO 1.21.4
-    }
-
-    public static double getSessionBreakTime(GeyserSession session, Block block) {
-        return 0.0; // TODO 1.21.4
+    public static double getSessionBreakTimeTicks(GeyserSession session, Block block) {
+        return Math.ceil(1 / getBlockMiningProgressPerTick(session, block, session.getPlayerInventory().getItemInHand()));
     }
 
     /**

From f610a0d12ba590deb7f4d793814cf3db461804bb Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 8 Dec 2024 05:34:10 +0800
Subject: [PATCH 102/165] Tidy up creaking entity code, remove debugging

---
 .../type/living/monster/CreakingEntity.java   | 50 +++----------------
 .../geyser/network/UpstreamPacketHandler.java |  9 ----
 .../geyser/session/GeyserSession.java         |  3 --
 ...SetLocalPlayerAsInitializedTranslator.java |  1 -
 .../player/input/BedrockBlockActions.java     |  1 -
 core/src/main/resources/mappings              |  2 +-
 6 files changed, 8 insertions(+), 58 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
index 1f2ddc37c..1a26eb43b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
@@ -32,7 +32,6 @@ import org.cloudburstmc.protocol.bedrock.data.LevelEvent;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.cloudburstmc.protocol.bedrock.packet.AddEntityPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventGenericPacket;
-import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
@@ -41,14 +40,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataTyp
 import java.util.Optional;
 import java.util.UUID;
 
-/*
- * Relevant bits:
- * - LevelSoundEvent2Packet(sound=SPAWN, position=(233.5, 112.295, 4717.5), extraData=-1, identifier=minecraft:creaking, babySound=false, relativeVolumeDisabled=false)
- * - [11:29:34:768] [CLIENT BOUND] - LevelSoundEvent2Packet(sound=CREAKING_HEART_SPAWN, position=(233.0, 110.0, 4717.0), extraData=-1, identifier=minecraft:creaking, babySound=false, relativeVolumeDisabled=false)
- * - [11:29:34:768] [CLIENT BOUND] - LevelSoundEvent2Packet(sound=CREAKING_HEART_SPAWN, position=(235.0, 113.0, 4722.0), extraData=13734, identifier=, babySound=false, relativeVolumeDisabled=false)
- * - [11:29:34:768] [CLIENT BOUND] - LevelEventPacket(type=PARTICLE_MOB_BLOCK_SPAWN, position=(233.0, 110.0, 4717.0), data=769)
- *
- */
+
 public class CreakingEntity extends MonsterEntity {
 
     private Vector3i homePosition;
@@ -70,53 +62,26 @@ public class CreakingEntity extends MonsterEntity {
     @Override
     public void addAdditionalSpawnData(AddEntityPacket addEntityPacket) {
         propertyManager.add(CREAKING_STATE, "neutral");
-        propertyManager.add("minecraft:creaking_swaying_ticks", 0);
+        propertyManager.add(CREAKING_SWAYING_TICKS, 0);
         propertyManager.applyIntProperties(addEntityPacket.getProperties().getIntProperties());
     }
 
     public void setCanMove(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
-        if (booleanEntityMetadata.getValue()) {
-            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, false);
-
-            // unfreeze sound? SoundEvent.UNFREEZE
-            propertyManager.add(CREAKING_STATE, "hostile_unobserved");
-            updateBedrockEntityProperties();
-        } else {
-            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, true);
-            propertyManager.add(CREAKING_STATE, "hostile_observed");
-            updateBedrockEntityProperties();
-        }
-
-        GeyserImpl.getInstance().getLogger().warning("set can move; " + booleanEntityMetadata.toString());
+        setFlag(EntityFlag.BODY_ROTATION_BLOCKED, !booleanEntityMetadata.getValue());
+        propertyManager.add(CREAKING_STATE, booleanEntityMetadata.getValue() ? "hostile_unobserved" : "hostile_observed");
+        updateBedrockEntityProperties();
     }
 
     public void setActive(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
-        if (booleanEntityMetadata.getValue()) {
-//            LevelSoundEvent2Packet addEntityPacket = new LevelSoundEvent2Packet();
-//            addEntityPacket.setIdentifier("minecraft:creaking");
-//            addEntityPacket.setPosition(position);
-//            addEntityPacket.setBabySound(false);
-//            addEntityPacket.setSound(SoundEvent.ACTIVATE);
-//            addEntityPacket.setExtraData(-1);
-//            session.sendUpstreamPacket(addEntityPacket);
-
-//            setFlag(EntityFlag.HIDDEN_WHEN_INVISIBLE, true);
-//            setFlag(EntityFlag.BODY_ROTATION_BLOCKED, true);
-        } else {
+        if (!booleanEntityMetadata.getValue()) {
             propertyManager.add(CREAKING_STATE, "neutral");
         }
-        GeyserImpl.getInstance().getLogger().warning("set active; " + booleanEntityMetadata.toString());
     }
 
     public void setIsTearingDown(EntityMetadata<Boolean,? extends MetadataType<Boolean>> booleanEntityMetadata) {
-        GeyserImpl.getInstance().getLogger().warning("set isTearingDown; " + booleanEntityMetadata.toString());
         if (booleanEntityMetadata.getValue()) {
             propertyManager.add(CREAKING_STATE, "crumbling");
             updateBedrockEntityProperties();
-//            LevelEventPacket levelEventPacket = new LevelEventPacket();
-//            levelEventPacket.setType(ParticleType.CREAKING_CRUMBLE);
-//            levelEventPacket.setPosition(position);
-//            levelEventPacket.setData(0);
         }
     }
 
@@ -134,7 +99,7 @@ public class CreakingEntity extends MonsterEntity {
             levelEventGenericPacket.setType(LevelEvent.PARTICLE_CREAKING_HEART_TRIAL);
             levelEventGenericPacket.setTag(
                 NbtMap.builder()
-                    .putInt("CreakingAmount", 0)
+                    .putInt("CreakingAmount", 20)
                     .putFloat("CreakingX", position.getX())
                     .putFloat("CreakingY", position.getY())
                     .putFloat("CreakingZ", position.getZ())
@@ -145,7 +110,6 @@ public class CreakingEntity extends MonsterEntity {
                     .build()
             );
 
-            GeyserImpl.getInstance().getLogger().warning(levelEventGenericPacket.toString());
             session.sendUpstreamPacket(levelEventGenericPacket);
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
index dfebb93dc..c67ea6545 100644
--- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java
@@ -30,7 +30,6 @@ import org.cloudburstmc.math.vector.Vector2f;
 import org.cloudburstmc.protocol.bedrock.BedrockDisconnectReasons;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
 import org.cloudburstmc.protocol.bedrock.codec.compat.BedrockCompat;
-import org.cloudburstmc.protocol.bedrock.data.ExperimentData;
 import org.cloudburstmc.protocol.bedrock.data.PacketCompressionAlgorithm;
 import org.cloudburstmc.protocol.bedrock.data.ResourcePackType;
 import org.cloudburstmc.protocol.bedrock.netty.codec.compression.CompressionStrategy;
@@ -249,14 +248,6 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
                     stackPacket.getResourcePacks().add(new ResourcePackStackPacket.Entry(header.uuid().toString(), header.version().toString(), ""));
                 }
 
-                if (GeyserImpl.getInstance().getConfig().isAddNonBedrockItems()) {
-                    // Allow custom items to work
-                    stackPacket.getExperiments().add(new ExperimentData("data_driven_items", true));
-                }
-
-                // Required for experimental 1.21 features
-                stackPacket.getExperiments().add(new ExperimentData("updateAnnouncedLive2023", true));
-
                 session.sendUpstreamPacket(stackPacket);
                 break;
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index cedf9ab66..b61cb7815 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -150,7 +150,6 @@ import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.level.BedrockDimension;
 import org.geysermc.geyser.level.JavaDimension;
 import org.geysermc.geyser.level.physics.CollisionManager;
-import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.network.netty.LocalSession;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.BlockMappings;
@@ -1671,8 +1670,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         startGamePacket.getExperiments().add(new ExperimentData("upcoming_creator_features", true));
         // Needed for certain molang queries used in blocks and items
         startGamePacket.getExperiments().add(new ExperimentData("experimental_molang_features", true));
-        // Required for experimental 1.21 features
-        startGamePacket.getExperiments().add(new ExperimentData("updateAnnouncedLive2023", true));
 
         startGamePacket.setVanillaVersion("*");
         startGamePacket.setInventoriesServerAuthoritative(true);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
index fcbd3bb8c..556d8cd8d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockSetLocalPlayerAsInitializedTranslator.java
@@ -40,7 +40,6 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.Serverbound
 public class BedrockSetLocalPlayerAsInitializedTranslator extends PacketTranslator<SetLocalPlayerAsInitializedPacket> {
     @Override
     public void translate(GeyserSession session, SetLocalPlayerAsInitializedPacket packet) {
-        GeyserImpl.getInstance().getLogger().info(packet.toString());
         if (session.getPlayerEntity().getGeyserId() == packet.getRuntimeEntityId()) {
             if (!session.getUpstream().isInitialized()) {
                 session.getUpstream().setInitialized(true);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
index b8facaa10..c604f5be1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/entity/player/input/BedrockBlockActions.java
@@ -170,7 +170,6 @@ final class BedrockBlockActions {
                 if (session.getGameMode() != GameMode.CREATIVE) {
                     // As of 1.16.210: item frame items are taken out here.
                     // Survival also sends START_BREAK, but by attaching our process here adventure mode also works
-                    GeyserImpl.getInstance().getLogger().warning("abort break, not creative - item frame???");
                     Entity itemFrameEntity = ItemFrameEntity.getItemFrameEntity(session, vector);
                     if (itemFrameEntity != null) {
                         ServerboundInteractPacket interactPacket = new ServerboundInteractPacket(itemFrameEntity.getEntityId(),
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 452312f88..64032d788 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 452312f88317cce019b8f336f485ffa7b2c19557
+Subproject commit 64032d7886e128858044e7e786479af3f1e876c8

From c298061d4dea3569a285b425bc4442d9e8445adc Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 8 Dec 2024 06:18:42 +0800
Subject: [PATCH 103/165] address review

---
 .../geyser/translator/inventory/LoomInventoryTranslator.java | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
index e294442f9..1fef4c4fd 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
@@ -156,7 +156,10 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
         inputCopy.setNetId(session.getNextItemNetId());
         BannerPatternLayer bannerPatternLayer = BannerItem.getJavaBannerPattern(session, pattern); // TODO
         if (bannerPatternLayer != null) {
-            List<BannerPatternLayer> patternsList = inputCopy.getComponentOrFallback(DataComponentType.BANNER_PATTERNS, new ArrayList<>());
+            List<BannerPatternLayer> patternsList = inputCopy.getComponent(DataComponentType.BANNER_PATTERNS);
+            if (patternsList == null) {
+                patternsList = new ArrayList<>();
+            }
             patternsList.add(bannerPatternLayer);
             inputCopy.getOrCreateComponents().put(DataComponentType.BANNER_PATTERNS, patternsList);
         }

From bd3377bfcc0e09368ec4e85a0a78ae4678911877 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 8 Dec 2024 06:20:32 +0800
Subject: [PATCH 104/165] update mappings

---
 core/src/main/resources/mappings | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 64032d788..e8089e117 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 64032d7886e128858044e7e786479af3f1e876c8
+Subproject commit e8089e117605e60a5ced120926c49fae7617c665

From 1210639087d64b78213410b57df09508ab3149aa Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 8 Dec 2024 22:54:51 +0800
Subject: [PATCH 105/165] update item tags for 1.21.50 items

---
 .../resources/bedrock/item_tags.1_21_50.json  | 39 +++++++++++++++----
 1 file changed, 31 insertions(+), 8 deletions(-)

diff --git a/core/src/main/resources/bedrock/item_tags.1_21_50.json b/core/src/main/resources/bedrock/item_tags.1_21_50.json
index d9e63ed26..b8b94d6f3 100644
--- a/core/src/main/resources/bedrock/item_tags.1_21_50.json
+++ b/core/src/main/resources/bedrock/item_tags.1_21_50.json
@@ -6,6 +6,7 @@
         "minecraft:banner"
     ],
     "minecraft:boat": [
+        "minecraft:pale_oak_chest_boat",
         "minecraft:cherry_chest_boat",
         "minecraft:oak_chest_boat",
         "minecraft:mangrove_boat",
@@ -23,9 +24,11 @@
         "minecraft:mangrove_chest_boat",
         "minecraft:cherry_boat",
         "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
+        "minecraft:bamboo_chest_raft",
+        "minecraft:pale_oak_boat"
     ],
     "minecraft:boats": [
+        "minecraft:pale_oak_chest_boat",
         "minecraft:cherry_chest_boat",
         "minecraft:oak_chest_boat",
         "minecraft:mangrove_boat",
@@ -43,7 +46,8 @@
         "minecraft:mangrove_chest_boat",
         "minecraft:cherry_boat",
         "minecraft:bamboo_raft",
-        "minecraft:bamboo_chest_raft"
+        "minecraft:bamboo_chest_raft",
+        "minecraft:pale_oak_boat"
     ],
     "minecraft:bookshelf_books": [
         "minecraft:written_book",
@@ -151,7 +155,8 @@
         "minecraft:oxidized_copper_door",
         "minecraft:waxed_copper_door",
         "minecraft:waxed_exposed_copper_door",
-        "minecraft:waxed_oxidized_copper_door"
+        "minecraft:waxed_oxidized_copper_door",
+        "minecraft:pale_oak_door"
     ],
     "minecraft:golden_tier": [
         "minecraft:golden_sword",
@@ -170,6 +175,7 @@
     "minecraft:hanging_sign": [
         "minecraft:mangrove_hanging_sign",
         "minecraft:bamboo_hanging_sign",
+        "minecraft:pale_oak_hanging_sign",
         "minecraft:spruce_hanging_sign",
         "minecraft:birch_hanging_sign",
         "minecraft:cherry_hanging_sign",
@@ -318,6 +324,9 @@
         "minecraft:golden_pickaxe",
         "minecraft:netherite_pickaxe"
     ],
+    "minecraft:is_shears": [
+        "minecraft:shears"
+    ],
     "minecraft:is_shovel": [
         "minecraft:iron_shovel",
         "minecraft:wooden_shovel",
@@ -382,6 +391,7 @@
         "minecraft:writable_book"
     ],
     "minecraft:logs": [
+        "minecraft:stripped_oak_log",
         "minecraft:mangrove_wood",
         "minecraft:spruce_wood",
         "minecraft:stripped_cherry_wood",
@@ -390,12 +400,14 @@
         "minecraft:spruce_log",
         "minecraft:acacia_wood",
         "minecraft:stripped_acacia_wood",
+        "minecraft:pale_oak_wood",
         "minecraft:stripped_warped_hyphae",
         "minecraft:acacia_log",
         "minecraft:stripped_warped_stem",
         "minecraft:oak_log",
         "minecraft:birch_log",
         "minecraft:jungle_log",
+        "minecraft:stripped_pale_oak_wood",
         "minecraft:dark_oak_log",
         "minecraft:jungle_wood",
         "minecraft:stripped_jungle_wood",
@@ -405,10 +417,10 @@
         "minecraft:stripped_oak_wood",
         "minecraft:stripped_birch_wood",
         "minecraft:stripped_dark_oak_wood",
-        "minecraft:stripped_oak_log",
         "minecraft:stripped_dark_oak_log",
         "minecraft:mangrove_log",
         "minecraft:stripped_jungle_log",
+        "minecraft:stripped_pale_oak_log",
         "minecraft:stripped_mangrove_wood",
         "minecraft:crimson_hyphae",
         "minecraft:stripped_cherry_log",
@@ -416,6 +428,7 @@
         "minecraft:stripped_acacia_log",
         "minecraft:crimson_stem",
         "minecraft:warped_hyphae",
+        "minecraft:pale_oak_log",
         "minecraft:stripped_spruce_log",
         "minecraft:warped_stem",
         "minecraft:stripped_crimson_hyphae",
@@ -424,6 +437,7 @@
         "minecraft:stripped_mangrove_log"
     ],
     "minecraft:logs_that_burn": [
+        "minecraft:stripped_oak_log",
         "minecraft:mangrove_wood",
         "minecraft:spruce_wood",
         "minecraft:stripped_cherry_wood",
@@ -431,10 +445,12 @@
         "minecraft:spruce_log",
         "minecraft:acacia_wood",
         "minecraft:stripped_acacia_wood",
+        "minecraft:pale_oak_wood",
         "minecraft:acacia_log",
         "minecraft:oak_log",
         "minecraft:birch_log",
         "minecraft:jungle_log",
+        "minecraft:stripped_pale_oak_wood",
         "minecraft:dark_oak_log",
         "minecraft:jungle_wood",
         "minecraft:stripped_jungle_wood",
@@ -444,14 +460,15 @@
         "minecraft:stripped_oak_wood",
         "minecraft:stripped_birch_wood",
         "minecraft:stripped_dark_oak_wood",
-        "minecraft:stripped_oak_log",
         "minecraft:stripped_dark_oak_log",
         "minecraft:mangrove_log",
         "minecraft:stripped_jungle_log",
+        "minecraft:stripped_pale_oak_log",
         "minecraft:stripped_mangrove_wood",
         "minecraft:stripped_cherry_log",
         "minecraft:stripped_birch_log",
         "minecraft:stripped_acacia_log",
+        "minecraft:pale_oak_log",
         "minecraft:stripped_spruce_log",
         "minecraft:cherry_wood",
         "minecraft:cherry_log",
@@ -505,6 +522,7 @@
         "minecraft:acacia_planks",
         "minecraft:bamboo_planks",
         "minecraft:warped_planks",
+        "minecraft:pale_oak_planks",
         "minecraft:crimson_planks",
         "minecraft:cherry_planks"
     ],
@@ -521,6 +539,7 @@
         "minecraft:bamboo_hanging_sign",
         "minecraft:warped_sign",
         "minecraft:spruce_sign",
+        "minecraft:pale_oak_hanging_sign",
         "minecraft:spruce_hanging_sign",
         "minecraft:acacia_sign",
         "minecraft:birch_hanging_sign",
@@ -534,7 +553,8 @@
         "minecraft:acacia_hanging_sign",
         "minecraft:dark_oak_hanging_sign",
         "minecraft:crimson_hanging_sign",
-        "minecraft:warped_hanging_sign"
+        "minecraft:warped_hanging_sign",
+        "minecraft:pale_oak_sign"
     ],
     "minecraft:soul_fire_base_blocks": [
         "minecraft:soul_soil",
@@ -596,6 +616,7 @@
         "minecraft:piglin_spawn_egg",
         "minecraft:wither_skeleton_spawn_egg",
         "minecraft:donkey_spawn_egg",
+        "minecraft:creaking_spawn_egg",
         "minecraft:mule_spawn_egg",
         "minecraft:skeleton_horse_spawn_egg",
         "minecraft:zombie_horse_spawn_egg",
@@ -667,6 +688,7 @@
         "minecraft:golden_boots"
     ],
     "minecraft:trim_materials": [
+        "minecraft:resin_brick",
         "minecraft:diamond",
         "minecraft:iron_ingot",
         "minecraft:gold_ingot",
@@ -743,6 +765,7 @@
         "minecraft:red_carpet",
         "minecraft:brown_carpet",
         "minecraft:light_blue_wool",
+        "minecraft:green_carpet",
         "minecraft:white_wool",
         "minecraft:magenta_wool",
         "minecraft:yellow_wool",
@@ -756,8 +779,7 @@
         "minecraft:orange_carpet",
         "minecraft:light_blue_carpet",
         "minecraft:gray_carpet",
-        "minecraft:light_gray_carpet",
-        "minecraft:green_carpet"
+        "minecraft:light_gray_carpet"
     ],
     "minecraft:warped_stems": [
         "minecraft:stripped_warped_hyphae",
@@ -771,6 +793,7 @@
         "minecraft:spruce_slab",
         "minecraft:bamboo_slab",
         "minecraft:warped_slab",
+        "minecraft:pale_oak_slab",
         "minecraft:mangrove_slab",
         "minecraft:cherry_slab",
         "minecraft:jungle_slab",

From 1fea22d980409c5a7c21fd7f438e918ca473fb0b Mon Sep 17 00:00:00 2001
From: RK_01 <50594595+RaphiMC@users.noreply.github.com>
Date: Mon, 9 Dec 2024 06:21:12 +0100
Subject: [PATCH 106/165] Implement ViaProxy client IP passthrough (#5202)

---
 .../viaproxy/GeyserViaProxyPlugin.java        | 26 +++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/bootstrap/viaproxy/src/main/java/org/geysermc/geyser/platform/viaproxy/GeyserViaProxyPlugin.java b/bootstrap/viaproxy/src/main/java/org/geysermc/geyser/platform/viaproxy/GeyserViaProxyPlugin.java
index b5e614468..498f7d7c3 100644
--- a/bootstrap/viaproxy/src/main/java/org/geysermc/geyser/platform/viaproxy/GeyserViaProxyPlugin.java
+++ b/bootstrap/viaproxy/src/main/java/org/geysermc/geyser/platform/viaproxy/GeyserViaProxyPlugin.java
@@ -24,15 +24,19 @@
  */
 package org.geysermc.geyser.platform.viaproxy;
 
+import io.netty.channel.AbstractChannel;
 import net.lenni0451.lambdaevents.EventHandler;
+import net.lenni0451.reflect.stream.RStream;
 import net.raphimc.vialegacy.api.LegacyProtocolVersion;
 import net.raphimc.viaproxy.ViaProxy;
 import net.raphimc.viaproxy.plugins.PluginManager;
 import net.raphimc.viaproxy.plugins.ViaProxyPlugin;
+import net.raphimc.viaproxy.plugins.events.Client2ProxyChannelInitializeEvent;
 import net.raphimc.viaproxy.plugins.events.ConsoleCommandEvent;
 import net.raphimc.viaproxy.plugins.events.ProxyStartEvent;
 import net.raphimc.viaproxy.plugins.events.ProxyStopEvent;
 import net.raphimc.viaproxy.plugins.events.ShouldVerifyOnlineModeEvent;
+import net.raphimc.viaproxy.plugins.events.types.ITyped;
 import org.apache.logging.log4j.LogManager;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.geyser.GeyserBootstrap;
@@ -56,6 +60,7 @@ import org.geysermc.geyser.util.LoopbackUtil;
 import java.io.File;
 import java.io.IOException;
 import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.UUID;
@@ -109,6 +114,27 @@ public class GeyserViaProxyPlugin extends ViaProxyPlugin implements GeyserBootst
         }
     }
 
+    @EventHandler
+    private void onClient2ProxyChannelInitialize(Client2ProxyChannelInitializeEvent event) {
+        if (event.getType() != ITyped.Type.POST || event.isLegacyPassthrough()) {
+            return;
+        }
+        if (System.getProperty("geyser.viaproxy.disableIpPassthrough") != null) { // Temporary until Configurate branch is merged
+            return;
+        }
+
+        final GeyserSession session = GeyserImpl.getInstance().onlineConnections().stream()
+            .filter(c -> c.getDownstream() != null)
+            .filter(c -> c.getDownstream().getSession().getLocalAddress().equals(event.getChannel().remoteAddress()))
+            .findAny().orElse(null);
+        if (session != null) {
+            final SocketAddress realAddress = session.getSocketAddress();
+            if (event.getChannel() instanceof AbstractChannel) {
+                RStream.of(AbstractChannel.class, event.getChannel()).fields().by("remoteAddress").set(realAddress);
+            }
+        }
+    }
+
     @EventHandler
     private void onProxyStart(final ProxyStartEvent event) {
         this.onGeyserEnable();

From 8b232d7900c44d43d78a28cfc2cbd6aa558a12a9 Mon Sep 17 00:00:00 2001
From: LetsGoAway <68365423+letsgoawaydev@users.noreply.github.com>
Date: Mon, 9 Dec 2024 22:58:04 +0800
Subject: [PATCH 107/165] Handle ClientboundTickingStatePacket correctly and
 fix Throwable Scales (#4850)

* Proper tick rate handling

* Fix frozen variable getter

* Fix formatting i think third attempt

* Formatting fix attempt 5 fsdiofhsdioufhvuisdhviuo9ds

* Fix stuff, also fixed the sizing of throwables as they were to big

* Move update ticking state

* Update core/src/main/java/org/geysermc/geyser/session/GeyserSession.java

Co-authored-by: rtm516 <rtm516@users.noreply.github.com>

* Fixes for spaces and documentation

* Missed a space

* wait now ive fixed it

* Fix languages

* try again to fix languages

* Fix Java doc comments for tickable interface

* Fix javadoc comment in Geyser Session

* fix comment

* fix some tick rate stuffs

* Fix build fail

* fix some stuff

* merge

* test

* Update languages

* Update mappings

* delete broken stuff

* Fix cooldown

* fix cooldowns

* Update core/src/main/java/org/geysermc/geyser/util/CooldownUtils.java

Co-authored-by: chris <github@onechris.mozmail.com>

* Update BoatEntity.java

* Update GeyserSession.java

* fix some stuff

* Update CooldownUtils.java

* fix some accidental formatting issues

* Fix missing inport

* Update GeyserSession.java

* Update core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java

Co-authored-by: chris <github@onechris.mozmail.com>

* Update core/src/main/java/org/geysermc/geyser/entity/type/ThrowableItemEntity.java

Co-authored-by: chris <github@onechris.mozmail.com>

* Fix missing import

---------

Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
Co-authored-by: chris <github@onechris.mozmail.com>
---
 .../geyser/entity/EntityDefinitions.java      |   5 +-
 .../geyser/entity/type/BoatEntity.java        |   2 +-
 .../geyser/entity/type/EnderEyeEntity.java    |  48 ++++++++
 .../entity/type/ThrowableItemEntity.java      |  55 +++++----
 .../geysermc/geyser/entity/type/Tickable.java |  17 ++-
 .../geyser/session/GeyserSession.java         | 114 +++++++++++-------
 .../geyser/session/cache/WorldCache.java      |  10 +-
 .../BedrockMobEquipmentTranslator.java        |   2 +-
 .../java/JavaTickingStateTranslator.java      |  40 ++++++
 .../java/JavaTickingStepTranslator.java       |  40 ++++++
 .../java/level/JavaCooldownTranslator.java    |   2 +-
 .../JavaSetTitlesAnimationTranslator.java     |  10 +-
 .../geysermc/geyser/util/CooldownUtils.java   |  17 ++-
 13 files changed, 278 insertions(+), 84 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/entity/type/EnderEyeEntity.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStateTranslator.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStepTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index 47b97c934..b2922a570 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -38,6 +38,7 @@ import org.geysermc.geyser.entity.type.ChestBoatEntity;
 import org.geysermc.geyser.entity.type.CommandBlockMinecartEntity;
 import org.geysermc.geyser.entity.type.DisplayBaseEntity;
 import org.geysermc.geyser.entity.type.EnderCrystalEntity;
+import org.geysermc.geyser.entity.type.EnderEyeEntity;
 import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.geyser.entity.type.EvokerFangsEntity;
 import org.geysermc.geyser.entity.type.ExpOrbEntity;
@@ -197,7 +198,7 @@ public final class EntityDefinitions {
     public static final EntityDefinition<EvokerFangsEntity> EVOKER_FANGS;
     public static final EntityDefinition<ThrowableItemEntity> EXPERIENCE_BOTTLE;
     public static final EntityDefinition<ExpOrbEntity> EXPERIENCE_ORB;
-    public static final EntityDefinition<Entity> EYE_OF_ENDER;
+    public static final EntityDefinition<EnderEyeEntity> EYE_OF_ENDER;
     public static final EntityDefinition<FallingBlockEntity> FALLING_BLOCK;
     public static final EntityDefinition<FireballEntity> FIREBALL;
     public static final EntityDefinition<FireworkEntity> FIREWORK_ROCKET;
@@ -345,7 +346,7 @@ public final class EntityDefinitions {
                     .height(0.8f).width(0.5f)
                     .identifier("minecraft:evocation_fang")
                     .build();
-            EYE_OF_ENDER = EntityDefinition.inherited(Entity::new, entityBase)
+            EYE_OF_ENDER = EntityDefinition.inherited(EnderEyeEntity::new, entityBase)
                     .type(EntityType.EYE_OF_ENDER)
                     .heightAndWidth(0.25f)
                     .identifier("minecraft:eye_of_ender_signal")
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
index 86accea17..cae4dcd11 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
@@ -189,7 +189,7 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
             session.sendDownstreamGamePacket(steerPacket);
             return;
         }
-        doTick = !doTick; // Run every 100 ms
+        doTick = !doTick; // Run every other tick
         if (!doTick || passengers.isEmpty()) {
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/EnderEyeEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/EnderEyeEntity.java
new file mode 100644
index 000000000..cc5a58f21
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/EnderEyeEntity.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.entity.type;
+
+
+import org.cloudburstmc.math.vector.Vector3f;
+import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
+import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.entity.EntityDefinitions;
+import org.geysermc.geyser.session.GeyserSession;
+
+import java.util.UUID;
+
+public class EnderEyeEntity extends Entity {
+    public EnderEyeEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
+        super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
+    }
+
+    @Override
+    protected void initializeMetadata() {
+        super.initializeMetadata();
+        // Correct sizing
+        dirtyMetadata.put(EntityDataTypes.SCALE, 0.5f);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ThrowableItemEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ThrowableItemEntity.java
index 55334010f..fbbe2de50 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ThrowableItemEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ThrowableItemEntity.java
@@ -25,12 +25,14 @@
 
 package org.geysermc.geyser.entity.type;
 
-import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.cloudburstmc.math.vector.Vector3f;
+import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityFlag;
 import org.geysermc.geyser.entity.EntityDefinition;
+import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 
 import java.util.UUID;
 
@@ -39,7 +41,7 @@ import java.util.UUID;
  */
 public class ThrowableItemEntity extends ThrowableEntity {
     /**
-     * Number of ticks since the entity was spawned by the Java server
+     * Number of draw ticks since the entity was spawned by the Java server
      */
     private int age;
     private boolean invisible;
@@ -48,29 +50,38 @@ public class ThrowableItemEntity extends ThrowableEntity {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
         setFlag(EntityFlag.INVISIBLE, true);
         invisible = false;
-    }
-
-    private void checkVisibility() {
-        if (invisible != getFlag(EntityFlag.INVISIBLE)) {
-            if (!invisible) {
-                Vector3f playerPos = session.getPlayerEntity().getPosition();
-                // Prevent projectiles from blocking the player's screen
-                if (age >= 4 || position.distanceSquared(playerPos) > 16) {
-                    setFlag(EntityFlag.INVISIBLE, false);
-                    updateBedrockMetadata();
-                }
-            } else {
-                setFlag(EntityFlag.INVISIBLE, true);
-                updateBedrockMetadata();
-            }
-        }
-        age++;
+        age = 0;
     }
 
     @Override
-    public void tick() {
+    protected void initializeMetadata() {
+        super.initializeMetadata();
+        // Correct sizing
+        dirtyMetadata.put(EntityDataTypes.SCALE, 0.5f);
+    }
+
+    private void checkVisibility() {
+        age++;
+
+        // Prevent projectiles from blocking the player's screen
+        if (session.isTickingFrozen()) {
+            // This may seem odd, but it matches java edition
+            Vector3f playerPos = session.getPlayerEntity().getPosition().down(EntityDefinitions.PLAYER.offset());
+            setInvisible(playerPos.distanceSquared(position.add(0, definition.offset(), 0)) < 12.25);
+        } else {
+            setInvisible(age < 2);
+        }
+
+        if (invisible != getFlag(EntityFlag.INVISIBLE)) {
+            setFlag(EntityFlag.INVISIBLE, invisible);
+            updateBedrockMetadata();
+        }
+    }
+
+    @Override
+    public void drawTick() {
         checkVisibility();
-        super.tick();
+        super.drawTick();
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Tickable.java b/core/src/main/java/org/geysermc/geyser/entity/type/Tickable.java
index 06bf45b3d..f61ff355f 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/Tickable.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/Tickable.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
+ * Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -26,8 +26,21 @@
 package org.geysermc.geyser.entity.type;
 
 /**
- * Implemented onto anything that should have code ran every Minecraft tick - 50 milliseconds.
+ * Implemented onto anything that should have code ran every Minecraft tick.
+ * By default, the Java server runs at 20 TPS, 50 milliseconds for each tick.
  */
 public interface Tickable {
+    /**
+     * This function gets called every tick at all times, even when the server requests that
+     * the game should be frozen. This should be used for updating things that are always
+     * client side updated on Java, regardless of if the server is frozen or not.
+     */
+    default void drawTick() {
+    }
+
+    /**
+     * This function gets called every game tick as long as the
+     * game tick loop isn't frozen.
+     */
     void tick();
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index b4a8e6203..d9e99b3b8 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
+ * Copyright (c) 2019-2024 GeyserMC. http://geysermc.org
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -183,6 +183,7 @@ import org.geysermc.geyser.util.ChunkUtils;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.LoginEncryptionUtils;
+import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.geyser.util.MinecraftAuthLogger;
 import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.network.BuiltinFlags;
@@ -600,7 +601,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private boolean advancedTooltips = false;
 
     /**
-     * The thread that will run every 50 milliseconds - one Minecraft tick.
+     * The thread that will run every game tick.
      */
     private ScheduledFuture<?> tickThread = null;
 
@@ -644,7 +645,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     /**
      * Stores cookies sent by the Java server.
      */
-    @Setter @Getter
+    @Setter
     private Map<String, byte[]> cookies = new Object2ObjectOpenHashMap<>();
 
     private final GeyserCameraData cameraData;
@@ -653,6 +654,16 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     private MinecraftProtocol protocol;
 
+    private int nanosecondsPerTick = 50000000;
+    private float millisecondsPerTick = 50.0f;
+    private boolean tickingFrozen = false;
+    /**
+     * The amount of ticks requested by the server that the game should proceed with, even if the game tick loop is frozen.
+     */
+    @Setter
+    private int stepTicks = 0;
+
+
     public GeyserSession(GeyserImpl geyser, BedrockServerSession bedrockServerSession, EventLoop tickEventLoop) {
         this.geyser = geyser;
         this.upstream = new UpstreamSession(bedrockServerSession);
@@ -895,38 +906,38 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         }
         task.cleanup(); // player is online -> remove pending authentication immediately
         return task.getAuthentication().handle((result, ex) -> {
-             if (ex != null) {
-                 geyser.getLogger().error("Failed to log in with Microsoft code!", ex);
-                 if (ex instanceof CompletionException ce
-                     && ce.getCause() instanceof MinecraftRequestException mre
-                     && mre.getResponse().getStatusCode() == 404) {
-                     // Player is trying to join with a Microsoft account that doesn't have Java Edition purchased
-                     disconnect(GeyserLocale.getPlayerLocaleString("geyser.network.remote.invalid_account", locale()));
-                 } else {
-                     disconnect(ex.toString());
-                 }
-                 return false;
-             }
+            if (ex != null) {
+                geyser.getLogger().error("Failed to log in with Microsoft code!", ex);
+                if (ex instanceof CompletionException ce
+                        && ce.getCause() instanceof MinecraftRequestException mre
+                        && mre.getResponse().getStatusCode() == 404) {
+                    // Player is trying to join with a Microsoft account that doesn't have Java Edition purchased
+                    disconnect(GeyserLocale.getPlayerLocaleString("geyser.network.remote.invalid_account", locale()));
+                } else {
+                    disconnect(ex.toString());
+                }
+                return false;
+            }
 
-             StepMCProfile.MCProfile mcProfile = result.session().getMcProfile();
-             StepMCToken.MCToken mcToken = mcProfile.getMcToken();
+            StepMCProfile.MCProfile mcProfile = result.session().getMcProfile();
+            StepMCToken.MCToken mcToken = mcProfile.getMcToken();
 
-             this.protocol = new MinecraftProtocol(
-                     new GameProfile(mcProfile.getId(), mcProfile.getName()),
-                     mcToken.getAccessToken()
-             );
+            this.protocol = new MinecraftProtocol(
+                    new GameProfile(mcProfile.getId(), mcProfile.getName()),
+                    mcToken.getAccessToken()
+            );
 
-             try {
-                 connectDownstream();
-             } catch (Throwable t) {
-                 t.printStackTrace();
-                 return false;
-             }
+            try {
+                connectDownstream();
+            } catch (Throwable t) {
+                t.printStackTrace();
+                return false;
+            }
 
-             // Save our auth chain for later use
-             geyser.saveAuthChain(bedrockUsername(), GSON.toJson(result.step().toJson(result.session())));
-             return true;
-         }).getNow(false);
+            // Save our auth chain for later use
+            geyser.saveAuthChain(bedrockUsername(), GSON.toJson(result.step().toJson(result.session())));
+            return true;
+        }).getNow(false);
     }
 
     /**
@@ -947,14 +958,14 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         boolean floodgate = this.remoteServer.authType() == AuthType.FLOODGATE;
 
         // Start ticking
-        tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, 50, 50, TimeUnit.MILLISECONDS);
+        tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, nanosecondsPerTick, nanosecondsPerTick, TimeUnit.NANOSECONDS);
 
         TcpSession downstream;
         if (geyser.getBootstrap().getSocketAddress() != null) {
             // We're going to connect through the JVM and not through TCP
             downstream = new LocalSession(this.remoteServer.address(), this.remoteServer.port(),
                     geyser.getBootstrap().getSocketAddress(), upstream.getAddress().getAddress().getHostAddress(),
-                    this.protocol, tickEventLoop);
+                    this.protocol, this.tickEventLoop);
             this.downstream = new DownstreamSession(downstream);
         } else {
             downstream = new TcpClientSession(this.remoteServer.address(), this.remoteServer.port(), "0.0.0.0", 0, this.protocol, null, tickEventLoop);
@@ -1077,11 +1088,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
                 // Download and load the language for the player
                 MinecraftLocale.downloadAndLoadLocale(locale);
-
-//                if (sentSpawnPacket && !GameProtocol.isPre1_21_2(GeyserSession.this)) {
-//                    // Possible form to close.
-//                    upstream.sendPacket(new ClientboundCloseFormPacket());
-//                }
             }
 
             @Override
@@ -1243,6 +1249,19 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         }, duration, timeUnit);
     }
 
+    public void updateTickingState(float tickRate, boolean frozen) {
+        tickThread.cancel(false);
+
+        this.tickingFrozen = frozen;
+
+        tickRate = MathUtils.clamp(tickRate, 1.0f, 10000.0f);
+
+        millisecondsPerTick = 1000.0f / tickRate;
+
+        nanosecondsPerTick = MathUtils.ceil(1000000000.0f / tickRate);
+        tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, nanosecondsPerTick, nanosecondsPerTick, TimeUnit.NANOSECONDS);
+    }
+
     private void executeRunnable(Runnable runnable) {
         try {
             runnable.run();
@@ -1251,10 +1270,11 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         } catch (Throwable e) {
             geyser.getLogger().error("Error thrown in " + this.bedrockUsername() + "'s event loop!", e);
         }
+
     }
 
     /**
-     * Called every 50 milliseconds - one Minecraft tick.
+     * Called every Minecraft tick.
      */
     protected void tick() {
         try {
@@ -1280,13 +1300,21 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
                 isInWorldBorderWarningArea = false;
             }
 
+            boolean gameShouldUpdate = !tickingFrozen || stepTicks > 0;
+            if (stepTicks > 0) {
+                --stepTicks;
+            }
+
             Entity vehicle = playerEntity.getVehicle();
             if (vehicle instanceof ClientVehicle clientVehicle && vehicle.isValid()) {
                 clientVehicle.getVehicleComponent().tickVehicle();
             }
 
             for (Tickable entity : entityCache.getTickableEntities()) {
-                entity.tick();
+                entity.drawTick();
+                if (gameShouldUpdate) {
+                    entity.tick();
+                }
             }
 
             if (armAnimationTicks >= 0) {
@@ -1424,7 +1452,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     public void setClientData(BedrockClientData data) {
         this.clientData = data;
         this.inputCache.setInputMode(
-            org.cloudburstmc.protocol.bedrock.data.InputMode.values()[data.getCurrentInputMode().ordinal()]);
+                org.cloudburstmc.protocol.bedrock.data.InputMode.values()[data.getCurrentInputMode().ordinal()]);
     }
 
     /**
@@ -1844,7 +1872,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      * Send a gamerule value to the client
      *
      * @param gameRule The gamerule to send
-     * @param value    The value of the gamerule
+     * @param value The value of the gamerule
      */
     public void sendGameRule(String gameRule, Object value) {
         GameRulesChangedPacket gameRulesChangedPacket = new GameRulesChangedPacket();
@@ -2110,7 +2138,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     @Override
     public UUID javaUuid() {
-        return playerEntity != null ? playerEntity.getUuid() : null ;
+        return playerEntity != null ? playerEntity.getUuid() : null;
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
index 609ac3f3b..eb57e0214 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
@@ -123,9 +123,13 @@ public final class WorldCache {
         SetTitlePacket titlePacket = new SetTitlePacket();
         titlePacket.setType(SetTitlePacket.Type.TIMES);
         titlePacket.setText("");
-        titlePacket.setFadeInTime(trueTitleFadeInTime);
-        titlePacket.setStayTime(trueTitleStayTime);
-        titlePacket.setFadeOutTime(trueTitleFadeOutTime);
+
+        // We need a tick rate multiplier as otherwise the timings are incorrect on different tick rates because
+        // bedrock can only run at 20 TPS (50ms = 1 tick)
+        int tickrateMultiplier = Math.round(session.getMillisecondsPerTick()) / 50;
+        titlePacket.setFadeInTime(trueTitleFadeInTime * tickrateMultiplier);
+        titlePacket.setStayTime(trueTitleStayTime * tickrateMultiplier);
+        titlePacket.setFadeOutTime(trueTitleFadeOutTime * tickrateMultiplier);
         titlePacket.setPlatformOnlineId("");
         titlePacket.setXuid("");
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMobEquipmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMobEquipmentTranslator.java
index 35ad942d0..64681723e 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMobEquipmentTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockMobEquipmentTranslator.java
@@ -66,7 +66,7 @@ public class BedrockMobEquipmentTranslator extends PacketTranslator<MobEquipment
             // (No need to send a release item packet - Java doesn't do this when swapping items)
             // Required to do it a tick later or else it doesn't register
             session.scheduleInEventLoop(() -> session.useItem(Hand.MAIN_HAND),
-                    50, TimeUnit.MILLISECONDS);
+                    session.getNanosecondsPerTick(), TimeUnit.NANOSECONDS);
         }
 
         if (oldItem.getJavaId() != newItem.getJavaId()) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStateTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStateTranslator.java
new file mode 100644
index 000000000..85d4974cf
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStateTranslator.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java;
+
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundTickingStatePacket;
+
+@Translator(packet = ClientboundTickingStatePacket.class)
+public class JavaTickingStateTranslator extends PacketTranslator<ClientboundTickingStatePacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundTickingStatePacket packet) {
+        session.updateTickingState(packet.getTickRate(), packet.isFrozen());
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStepTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStepTranslator.java
new file mode 100644
index 000000000..f898b762a
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaTickingStepTranslator.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java;
+
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundTickingStepPacket;
+
+@Translator(packet = ClientboundTickingStepPacket.class)
+public class JavaTickingStepTranslator extends PacketTranslator<ClientboundTickingStepPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundTickingStepPacket packet) {
+        session.setStepTicks(packet.getTickSteps());
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
index 2b14f015f..4097f5b78 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaCooldownTranslator.java
@@ -59,7 +59,7 @@ public class JavaCooldownTranslator extends PacketTranslator<ClientboundCooldown
         if (cooldownCategory != null) {
             PlayerStartItemCooldownPacket bedrockPacket = new PlayerStartItemCooldownPacket();
             bedrockPacket.setItemCategory(cooldownCategory);
-            bedrockPacket.setCooldownDuration(packet.getCooldownTicks());
+            bedrockPacket.setCooldownDuration(Math.round(packet.getCooldownTicks() * (session.getMillisecondsPerTick() / 50)));
             session.sendUpstreamPacket(bedrockPacket);
         }
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/title/JavaSetTitlesAnimationTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/title/JavaSetTitlesAnimationTranslator.java
index 4bc5ba0c5..d310690d5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/title/JavaSetTitlesAnimationTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/title/JavaSetTitlesAnimationTranslator.java
@@ -40,13 +40,15 @@ public class JavaSetTitlesAnimationTranslator extends PacketTranslator<Clientbou
         int stayTime = packet.getStay();
         int fadeOutTime = packet.getFadeOut();
         session.getWorldCache().setTitleTimes(fadeInTime, stayTime, fadeOutTime);
-
+        // We need a tick rate multiplier as otherwise the timings are incorrect on different tick rates because
+        // bedrock can only run at 20 TPS (50ms = 1 tick)
+        int tickrateMultiplier = Math.round(session.getMillisecondsPerTick()) / 50;
         SetTitlePacket titlePacket = new SetTitlePacket();
         titlePacket.setType(SetTitlePacket.Type.TIMES);
         titlePacket.setText("");
-        titlePacket.setFadeInTime(fadeInTime);
-        titlePacket.setFadeOutTime(fadeOutTime);
-        titlePacket.setStayTime(stayTime);
+        titlePacket.setFadeInTime(fadeInTime * tickrateMultiplier);
+        titlePacket.setFadeOutTime(fadeOutTime * tickrateMultiplier);
+        titlePacket.setStayTime(stayTime * tickrateMultiplier);
         titlePacket.setXuid("");
         titlePacket.setPlatformOnlineId("");
         session.sendUpstreamPacket(titlePacket);
diff --git a/core/src/main/java/org/geysermc/geyser/util/CooldownUtils.java b/core/src/main/java/org/geysermc/geyser/util/CooldownUtils.java
index c020e96b2..9285e0b72 100644
--- a/core/src/main/java/org/geysermc/geyser/util/CooldownUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/CooldownUtils.java
@@ -26,6 +26,7 @@
 package org.geysermc.geyser.util;
 
 import lombok.Getter;
+import org.cloudburstmc.math.GenericMath;
 import org.cloudburstmc.protocol.bedrock.packet.SetTitlePacket;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.PreferencesCache;
@@ -50,6 +51,7 @@ public class CooldownUtils {
 
     /**
      * Starts sending the fake cooldown to the Bedrock client. If the cooldown is not disabled, the sent type is the cooldownPreference in {@link PreferencesCache}
+     *
      * @param session GeyserSession
      */
     public static void sendCooldown(GeyserSession session) {
@@ -57,7 +59,9 @@ public class CooldownUtils {
         CooldownType sessionPreference = session.getPreferencesCache().getCooldownPreference();
         if (sessionPreference == CooldownType.DISABLED) return;
 
-        if (session.getAttackSpeed() == 0.0 || session.getAttackSpeed() > 20) return; // 0.0 usually happens on login and causes issues with visuals; anything above 20 means a plugin like OldCombatMechanics is being used
+        if (session.getAttackSpeed() == 0.0 || session.getAttackSpeed() > 20) {
+            return; // 0.0 usually happens on login and causes issues with visuals; anything above 20 means a plugin like OldCombatMechanics is being used
+        }
         // Set the times to stay a bit with no fade in nor out
         SetTitlePacket titlePacket = new SetTitlePacket();
         titlePacket.setType(SetTitlePacket.Type.TIMES);
@@ -83,6 +87,7 @@ public class CooldownUtils {
 
     /**
      * Keeps updating the cooldown until the bar is complete.
+     *
      * @param session GeyserSession
      * @param sessionPreference The type of cooldown the client prefers
      * @param lastHitTime The time of the last hit. Used to gauge how long the cooldown is taking.
@@ -102,7 +107,7 @@ public class CooldownUtils {
         session.sendUpstreamPacket(titlePacket);
         if (hasCooldown(session)) {
             session.scheduleInEventLoop(() ->
-                    computeCooldown(session, sessionPreference, lastHitTime), 50, TimeUnit.MILLISECONDS); // Updated per tick. 1000 divided by 20 ticks equals 50
+                    computeCooldown(session, sessionPreference, lastHitTime), (long) restrain(session.getMillisecondsPerTick(), 50), TimeUnit.MILLISECONDS); // Updated per tick. 1000 divided by 20 ticks equals 50
         } else {
             SetTitlePacket removeTitlePacket = new SetTitlePacket();
             removeTitlePacket.setType(SetTitlePacket.Type.CLEAR);
@@ -115,8 +120,9 @@ public class CooldownUtils {
 
     private static boolean hasCooldown(GeyserSession session) {
         long time = System.currentTimeMillis() - session.getLastHitTime();
-        double cooldown = restrain(((double) time) * session.getAttackSpeed() / 1000d, 1.5);
-        return cooldown < 1.1;
+        double tickrateMultiplier = Math.max(session.getMillisecondsPerTick() / 50, 1.0);
+        double cooldown = restrain(((double) time) * session.getAttackSpeed() / (tickrateMultiplier * 1000.0), 1.0);
+        return cooldown < 1.0;
     }
 
 
@@ -128,7 +134,8 @@ public class CooldownUtils {
 
     private static String getTitle(GeyserSession session) {
         long time = System.currentTimeMillis() - session.getLastHitTime();
-        double cooldown = restrain(((double) time) * session.getAttackSpeed() / 1000d, 1);
+        double tickrateMultiplier = Math.max(session.getMillisecondsPerTick() / 50, 1.0);
+        double cooldown = restrain(((double) time) * session.getAttackSpeed() / (tickrateMultiplier * 1000.0), 1.0);
 
         int darkGrey = (int) Math.floor(10d * cooldown);
         int grey = 10 - darkGrey;

From 94c258a4c910ffe39e6ca3c09ec3ff492713f0c1 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 10 Dec 2024 01:26:36 +0800
Subject: [PATCH 108/165] Update loom (and gradle), create basic recipes when
 there are too many possible combinations, update adapters

---
 .../kotlin/geyser.base-conventions.gradle.kts |  4 +-
 .../java/JavaRecipeBookAddTranslator.java     | 67 +++++++++++++++++--
 gradle.properties                             |  3 -
 gradle/libs.versions.toml                     |  4 +-
 gradle/wrapper/gradle-wrapper.properties      |  2 +-
 gradlew                                       |  2 +-
 6 files changed, 68 insertions(+), 14 deletions(-)

diff --git a/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts b/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts
index 093f0a8c0..045015fe1 100644
--- a/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts
+++ b/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts
@@ -26,8 +26,6 @@ dependencies {
 }
 
 repositories {
-    // mavenLocal()
-
     mavenCentral()
 
     // Floodgate, Cumulus etc.
@@ -69,4 +67,6 @@ repositories {
 
     // For Adventure snapshots
     maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
+
+    //mavenLocal()
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 96c5951d5..8e83c9f55 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.translator.protocol.java;
 import com.google.common.collect.Lists;
 import it.unimi.dsi.fastutil.Pair;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.ints.IntComparators;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
 import net.kyori.adventure.key.Key;
 import org.checkerframework.checker.nullness.qual.Nullable;
@@ -75,12 +76,14 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.Clientbound
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.UUID;
+import java.util.stream.Collectors;
 
 @Translator(packet = ClientboundRecipeBookAddPacket.class)
 public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRecipeBookAddPacket> {
@@ -386,10 +389,64 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 return Pair.of(Lists.cartesianProduct(inputs), output);
             }
         }
-        // TODO:
-        return Pair.of(
-            Collections.singletonList(inputs.stream().map(descriptors -> descriptors.get(0)).toList()),
-            output
-        );
+
+        int totalSimpleRecipes = inputs.stream().mapToInt(List::size).max().orElse(1);
+
+        // Sort inputs to create "uniform" simple recipes, if possible
+        inputs = inputs.stream()
+            .map(descriptors -> descriptors.stream()
+                .sorted(ItemDescriptorWithCountComparator.INSTANCE)
+                .collect(Collectors.toList()))
+            .collect(Collectors.toList());
+
+        List<List<ItemDescriptorWithCount>> finalRecipes = new ArrayList<>(totalSimpleRecipes);
+        for (int i = 0; i < totalSimpleRecipes; i++) {
+            int current = i;
+            finalRecipes.add(inputs.stream().map(descriptors -> {
+                if (descriptors.size() > current) {
+                    return descriptors.get(current);
+                }
+                return descriptors.get(0);
+            }).toList());
+        }
+
+        return Pair.of(finalRecipes, output);
+    }
+
+    static class ItemDescriptorWithCountComparator implements Comparator<ItemDescriptorWithCount> {
+
+        static ItemDescriptorWithCountComparator INSTANCE = new ItemDescriptorWithCountComparator();
+
+        @Override
+        public int compare(ItemDescriptorWithCount o1, ItemDescriptorWithCount o2) {
+            String tag1 = null, tag2 = null;
+
+            // Collect item tags first
+            if (o1.getDescriptor() instanceof ItemTagDescriptor itemTagDescriptor) {
+                tag1 = itemTagDescriptor.getItemTag();
+            }
+
+            if (o2.getDescriptor() instanceof ItemTagDescriptor itemTagDescriptor) {
+                tag2 = itemTagDescriptor.getItemTag();
+            }
+
+            if (tag1 != null || tag2 != null) {
+                if (tag1 != null && tag2 != null) {
+                    return tag1.compareTo(tag2); // Just sort based on their string id
+                }
+
+                if (tag1 != null) {
+                    return -1;
+                }
+
+                return 1; // the second is an item tag; which should be r
+            }
+
+            if (o1.getDescriptor() instanceof DefaultDescriptor defaultDescriptor1 && o2.getDescriptor() instanceof DefaultDescriptor defaultDescriptor2) {
+                return IntComparators.NATURAL_COMPARATOR.compare(defaultDescriptor1.getItemId().getRuntimeId(), defaultDescriptor2.getItemId().getRuntimeId());
+            }
+
+            throw new IllegalStateException("Unable to compare unknown item descriptors: " + o1 + " and " + o2);
+        }
     }
 }
diff --git a/gradle.properties b/gradle.properties
index 473c104f4..c380ec371 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -6,9 +6,6 @@ org.gradle.parallel=true
 org.gradle.caching=true
 org.gradle.vfs.watch=false
 
-# TODO remove once architectury loom updates to 1.8
-loom.ignoreDependencyLoomVersionValidation=true
-
 group=org.geysermc
 id=geyser
 version=2.6.0-SNAPSHOT
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 686064926..1166bab35 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -25,7 +25,7 @@ jline = "3.21.0"
 terminalconsoleappender = "1.2.0"
 folia = "1.19.4-R0.1-SNAPSHOT"
 viaversion = "4.9.2"
-adapters = "1.15-SNAPSHOT"
+adapters = "1.16-SNAPSHOT"
 cloud = "2.0.0-rc.2"
 cloud-minecraft = "2.0.0-beta.9"
 cloud-minecraft-modded = "2.0.0-beta.10"
@@ -46,7 +46,7 @@ mockito = "5.+"
 indra = "3.1.3"
 shadow = "8.1.1"
 architectury-plugin = "3.4-SNAPSHOT"
-architectury-loom = "1.7-SNAPSHOT"
+architectury-loom = "1.9-SNAPSHOT"
 minotaur = "2.8.7"
 lombok = "8.4"
 blossom = "2.1.0"
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index a4413138c..94113f200 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index 1aa94a426..b740cf133 100755
--- a/gradlew
+++ b/gradlew
@@ -55,7 +55,7 @@
 #       Darwin, MinGW, and NonStop.
 #
 #   (3) This script is generated from the Groovy template
-#       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+#       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
 #       within the Gradle project.
 #
 #       You can find Gradle at https://github.com/gradle/gradle/.

From 1f3590d48885d380fa1e06c8fbdced68d40b1d72 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 10 Dec 2024 03:01:09 +0800
Subject: [PATCH 109/165] revert map color changes

---
 .../org/geysermc/geyser/level/MapColor.java   | 507 +++++++++---------
 1 file changed, 257 insertions(+), 250 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/level/MapColor.java b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
index 4b891e9b7..a599f9146 100644
--- a/core/src/main/java/org/geysermc/geyser/level/MapColor.java
+++ b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
@@ -26,261 +26,268 @@
 package org.geysermc.geyser.level;
 
 public enum MapColor {
-    COLOR_0(0),
-    COLOR_1(0),
-    COLOR_2(0),
-    COLOR_3(0),
-    COLOR_4(-10912473),
-    COLOR_5(-9594576),
-    COLOR_6(-8408520),
-    COLOR_7(-12362211),
-    COLOR_8(-5331853),
-    COLOR_9(-2766452),
-    COLOR_10(-530013),
-    COLOR_11(-8225962),
-    COLOR_12(-7566196),
-    COLOR_13(-5526613),
-    COLOR_14(-3684409),
-    COLOR_15(-9868951),
-    COLOR_16(-4980736),
-    COLOR_17(-2359296),
-    COLOR_18(-65536),
-    COLOR_19(-7929856),
-    COLOR_20(-9408332),
-    COLOR_21(-7697700),
-    COLOR_22(-6250241),
-    COLOR_23(-11250553),
-    COLOR_24(-9079435),
-    COLOR_25(-7303024),
-    COLOR_26(-5789785),
-    COLOR_27(-10987432),
-    COLOR_28(-16754944),
-    COLOR_29(-16750080),
-    COLOR_30(-16745472),
-    COLOR_31(-16760576),
-    COLOR_32(-4934476),
-    COLOR_33(-2302756),
-    COLOR_34(-1),
-    COLOR_35(-7895161),
-    COLOR_36(-9210239),
-    COLOR_37(-7499618),
-    COLOR_38(-5986120),
-    COLOR_39(-11118495),
-    COLOR_40(-9810890),
-    COLOR_41(-8233406),
-    COLOR_42(-6853299),
-    COLOR_43(-11585240),
-    COLOR_44(-11579569),
-    COLOR_45(-10461088),
-    COLOR_46(-9408400),
-    COLOR_47(-12895429),
-    COLOR_48(-13816396),
-    COLOR_49(-13158436),
-    COLOR_50(-12566273),
-    COLOR_51(-14605945),
-    COLOR_52(-10202062),
-    COLOR_53(-8690114),
-    COLOR_54(-7375032),
-    COLOR_55(-11845850),
-    COLOR_56(-4935252),
-    COLOR_57(-2303533),
-    COLOR_58(-779),
-    COLOR_59(-7895679),
-    COLOR_60(-6792924),
-    COLOR_61(-4559572),
-    COLOR_62(-2588877),
-    COLOR_63(-9288933),
-    COLOR_64(-8571496),
-    COLOR_65(-6733382),
-    COLOR_66(-5092136),
-    COLOR_67(-10606478),
-    COLOR_68(-12030824),
-    COLOR_69(-10976070),
-    COLOR_70(-10053160),
-    COLOR_71(-13217422),
-    COLOR_72(-6184668),
-    COLOR_73(-3816148),
-    COLOR_74(-1710797),
-    COLOR_75(-8816357),
-    COLOR_76(-10907631),
-    COLOR_77(-9588715),
-    COLOR_78(-8401895),
-    COLOR_79(-12358643),
-    COLOR_80(-5613196),
-    COLOR_81(-3117682),
-    COLOR_82(-884827),
-    COLOR_83(-8371369),
-    COLOR_84(-13290187),
-    COLOR_85(-12500671),
-    COLOR_86(-11776948),
-    COLOR_87(-14145496),
-    COLOR_88(-9671572),
-    COLOR_89(-8092540),
-    COLOR_90(-6710887),
-    COLOR_91(-11447983),
-    COLOR_92(-13280916),
-    COLOR_93(-12489340),
-    COLOR_94(-11763815),
-    COLOR_95(-14138543),
-    COLOR_96(-10933123),
-    COLOR_97(-9619815),
-    COLOR_98(-8437838),
-    COLOR_99(-12377762),
-    COLOR_100(-14404227),
-    COLOR_101(-13876839),
-    COLOR_102(-13415246),
-    COLOR_103(-14997410),
-    COLOR_104(-12045020),
-    COLOR_105(-10993364),
-    COLOR_106(-10073037),
-    COLOR_107(-13228005),
-    COLOR_108(-12035804),
-    COLOR_109(-10982100),
-    COLOR_110(-10059981),
-    COLOR_111(-13221093),
-    COLOR_112(-9690076),
-    COLOR_113(-8115156),
-    COLOR_114(-6737101),
-    COLOR_115(-11461861),
-    COLOR_116(-15658735),
-    COLOR_117(-15395563),
-    COLOR_118(-15132391),
-    COLOR_119(-15921907),
-    COLOR_120(-5199818),
-    COLOR_121(-2634430),
-    COLOR_122(-332211),
-    COLOR_123(-8094168),
-    COLOR_124(-12543338),
-    COLOR_125(-11551561),
-    COLOR_126(-10691627),
-    COLOR_127(-13601936),
-    COLOR_128(-13346124),
-    COLOR_129(-12620068),
-    COLOR_130(-11894529),
-    COLOR_131(-14204025),
-    COLOR_132(-16738008),
-    COLOR_133(-16729294),
-    COLOR_134(-16721606),
-    COLOR_135(-16748002),
-    COLOR_136(-10798046),
-    COLOR_137(-9483734),
-    COLOR_138(-8301007),
-    COLOR_139(-12309223),
-    COLOR_140(-11599616),
-    COLOR_141(-10485504),
-    COLOR_142(-9436672),
-    COLOR_143(-12910336),
-    COLOR_144(-7111567),
-    COLOR_145(-4941686),
-    COLOR_146(-3034719),
-    COLOR_147(-9544363),
-    COLOR_148(-9422567),
-    COLOR_149(-7780833),
-    COLOR_150(-6335964),
-    COLOR_151(-11261165),
-    COLOR_152(-9880244),
-    COLOR_153(-8369315),
-    COLOR_154(-6989972),
-    COLOR_155(-11653575),
-    COLOR_156(-11580319),
-    COLOR_157(-10461833),
-    COLOR_158(-9409398),
-    COLOR_159(-12895927),
-    COLOR_160(-8168167),
-    COLOR_161(-6262241),
-    COLOR_162(-4553436),
-    COLOR_163(-10336749),
-    COLOR_164(-12037595),
-    COLOR_165(-10984403),
-    COLOR_166(-9997003),
-    COLOR_167(-13222628),
-    COLOR_168(-9423305),
-    COLOR_169(-7716285),
-    COLOR_170(-6271666),
-    COLOR_171(-11261911),
-    COLOR_172(-14148584),
-    COLOR_173(-13556962),
-    COLOR_174(-13031133),
-    COLOR_175(-14805742),
-    COLOR_176(-10532027),
-    COLOR_177(-9151404),
-    COLOR_178(-7902366),
-    COLOR_179(-12109773),
-    COLOR_180(-12763072),
-    COLOR_181(-11841713),
-    COLOR_182(-11051940),
-    COLOR_183(-13750224),
-    COLOR_184(-11128002),
-    COLOR_185(-9879989),
-    COLOR_186(-8763048),
-    COLOR_187(-12573138),
-    COLOR_188(-13292736),
-    COLOR_189(-12503729),
-    COLOR_190(-11780516),
-    COLOR_191(-14147536),
-    COLOR_192(-13294824),
-    COLOR_193(-12506338),
-    COLOR_194(-11783645),
-    COLOR_195(-14149102),
-    COLOR_196(-13289187),
-    COLOR_197(-12499420),
-    COLOR_198(-11775446),
-    COLOR_199(-14144746),
-    COLOR_200(-10212832),
-    COLOR_201(-8768729),
-    COLOR_202(-7455698),
-    COLOR_203(-11854056),
-    COLOR_204(-15069429),
-    COLOR_205(-14740979),
-    COLOR_206(-14346736),
-    COLOR_207(-15529208),
-    COLOR_208(-8052446),
-    COLOR_209(-6084310),
-    COLOR_210(-4378575),
-    COLOR_211(-10217191),
-    COLOR_212(-9950140),
-    COLOR_213(-8440237),
-    COLOR_214(-7061663),
-    COLOR_215(-11656909),
-    COLOR_216(-12578540),
-    COLOR_217(-11594471),
-    COLOR_218(-10741475),
-    COLOR_219(-13628145),
-    COLOR_220(-15771554),
-    COLOR_221(-15569805),
-    COLOR_222(-15303034),
-    COLOR_223(-16039354),
-    COLOR_224(-14130078),
-    COLOR_225(-13469064),
-    COLOR_226(-12939636),
-    COLOR_227(-14791862),
-    COLOR_228(-12837077),
-    COLOR_229(-11918027),
-    COLOR_230(-11129794),
-    COLOR_231(-13822176),
-    COLOR_232(-15827107),
-    COLOR_233(-15623310),
-    COLOR_234(-15420283),
-    COLOR_235(-16097466),
-    COLOR_236(-12171706),
-    COLOR_237(-11119018),
-    COLOR_238(-10197916),
-    COLOR_239(-13355980),
-    COLOR_240(-6784153),
-    COLOR_241(-4548994),
-    COLOR_242(-2576493),
-    COLOR_243(-9282483),
-    COLOR_244(-10914455),
-    COLOR_245(-9596799),
-    COLOR_246(-8411242),
-    COLOR_247(-12363697);
+    COLOR_0(-1, -1, -1),
+    COLOR_1(-1, -1, -1),
+    COLOR_2(-1, -1, -1),
+    COLOR_3(-1, -1, -1),
+    COLOR_4(89, 125, 39),
+    COLOR_5(109, 153, 48),
+    COLOR_6(127, 178, 56),
+    COLOR_7(67, 94, 29),
+    COLOR_8(174, 164, 115),
+    COLOR_9(213, 201, 140),
+    COLOR_10(247, 233, 163),
+    COLOR_11(130, 123, 86),
+    COLOR_12(140, 140, 140),
+    COLOR_13(171, 171, 171),
+    COLOR_14(199, 199, 199),
+    COLOR_15(105, 105, 105),
+    COLOR_16(180, 0, 0),
+    COLOR_17(220, 0, 0),
+    COLOR_18(255, 0, 0),
+    COLOR_19(135, 0, 0),
+    COLOR_20(112, 112, 180),
+    COLOR_21(138, 138, 220),
+    COLOR_22(160, 160, 255),
+    COLOR_23(84, 84, 135),
+    COLOR_24(117, 117, 117),
+    COLOR_25(144, 144, 144),
+    COLOR_26(167, 167, 167),
+    COLOR_27(88, 88, 88),
+    COLOR_28(0, 87, 0),
+    COLOR_29(0, 106, 0),
+    COLOR_30(0, 124, 0),
+    COLOR_31(0, 65, 0),
+    COLOR_32(180, 180, 180),
+    COLOR_33(220, 220, 220),
+    COLOR_34(255, 255, 255),
+    COLOR_35(135, 135, 135),
+    COLOR_36(115, 118, 129),
+    COLOR_37(141, 144, 158),
+    COLOR_38(164, 168, 184),
+    COLOR_39(86, 88, 97),
+    COLOR_40(106, 76, 54),
+    COLOR_41(130, 94, 66),
+    COLOR_42(151, 109, 77),
+    COLOR_43(79, 57, 40),
+    COLOR_44(79, 79, 79),
+    COLOR_45(96, 96, 96),
+    COLOR_46(112, 112, 112),
+    COLOR_47(59, 59, 59),
+    COLOR_48(45, 45, 180),
+    COLOR_49(55, 55, 220),
+    COLOR_50(64, 64, 255),
+    COLOR_51(33, 33, 135),
+    COLOR_52(100, 84, 50),
+    COLOR_53(123, 102, 62),
+    COLOR_54(143, 119, 72),
+    COLOR_55(75, 63, 38),
+    COLOR_56(180, 177, 172),
+    COLOR_57(220, 217, 211),
+    COLOR_58(255, 252, 245),
+    COLOR_59(135, 133, 129),
+    COLOR_60(152, 89, 36),
+    COLOR_61(186, 109, 44),
+    COLOR_62(216, 127, 51),
+    COLOR_63(114, 67, 27),
+    COLOR_64(125, 53, 152),
+    COLOR_65(153, 65, 186),
+    COLOR_66(178, 76, 216),
+    COLOR_67(94, 40, 114),
+    COLOR_68(72, 108, 152),
+    COLOR_69(88, 132, 186),
+    COLOR_70(102, 153, 216),
+    COLOR_71(54, 81, 114),
+    COLOR_72(161, 161, 36),
+    COLOR_73(197, 197, 44),
+    COLOR_74(229, 229, 51),
+    COLOR_75(121, 121, 27),
+    COLOR_76(89, 144, 17),
+    COLOR_77(109, 176, 21),
+    COLOR_78(127, 204, 25),
+    COLOR_79(67, 108, 13),
+    COLOR_80(170, 89, 116),
+    COLOR_81(208, 109, 142),
+    COLOR_82(242, 127, 165),
+    COLOR_83(128, 67, 87),
+    COLOR_84(53, 53, 53),
+    COLOR_85(65, 65, 65),
+    COLOR_86(76, 76, 76),
+    COLOR_87(40, 40, 40),
+    COLOR_88(108, 108, 108),
+    COLOR_89(132, 132, 132),
+    COLOR_90(153, 153, 153),
+    COLOR_91(81, 81, 81),
+    COLOR_92(53, 89, 108),
+    COLOR_93(65, 109, 132),
+    COLOR_94(76, 127, 153),
+    COLOR_95(40, 67, 81),
+    COLOR_96(89, 44, 125),
+    COLOR_97(109, 54, 153),
+    COLOR_98(127, 63, 178),
+    COLOR_99(67, 33, 94),
+    COLOR_100(36, 53, 125),
+    COLOR_101(44, 65, 153),
+    COLOR_102(51, 76, 178),
+    COLOR_103(27, 40, 94),
+    COLOR_104(72, 53, 36),
+    COLOR_105(88, 65, 44),
+    COLOR_106(102, 76, 51),
+    COLOR_107(54, 40, 27),
+    COLOR_108(72, 89, 36),
+    COLOR_109(88, 109, 44),
+    COLOR_110(102, 127, 51),
+    COLOR_111(54, 67, 27),
+    COLOR_112(108, 36, 36),
+    COLOR_113(132, 44, 44),
+    COLOR_114(153, 51, 51),
+    COLOR_115(81, 27, 27),
+    COLOR_116(17, 17, 17),
+    COLOR_117(21, 21, 21),
+    COLOR_118(25, 25, 25),
+    COLOR_119(13, 13, 13),
+    COLOR_120(176, 168, 54),
+    COLOR_121(215, 205, 66),
+    COLOR_122(250, 238, 77),
+    COLOR_123(132, 126, 40),
+    COLOR_124(64, 154, 150),
+    COLOR_125(79, 188, 183),
+    COLOR_126(92, 219, 213),
+    COLOR_127(48, 115, 112),
+    COLOR_128(52, 90, 180),
+    COLOR_129(63, 110, 220),
+    COLOR_130(74, 128, 255),
+    COLOR_131(39, 67, 135),
+    COLOR_132(0, 153, 40),
+    COLOR_133(0, 187, 50),
+    COLOR_134(0, 217, 58),
+    COLOR_135(0, 114, 30),
+    COLOR_136(91, 60, 34),
+    COLOR_137(111, 74, 42),
+    COLOR_138(129, 86, 49),
+    COLOR_139(68, 45, 25),
+    COLOR_140(79, 1, 0),
+    COLOR_141(96, 1, 0),
+    COLOR_142(112, 2, 0),
+    COLOR_143(59, 1, 0),
+    COLOR_144(147, 124, 113),
+    COLOR_145(180, 152, 138),
+    COLOR_146(209, 177, 161),
+    COLOR_147(110, 93, 85),
+    COLOR_148(112, 57, 25),
+    COLOR_149(137, 70, 31),
+    COLOR_150(159, 82, 36),
+    COLOR_151(84, 43, 19),
+    COLOR_152(105, 61, 76),
+    COLOR_153(128, 75, 93),
+    COLOR_154(149, 87, 108),
+    COLOR_155(78, 46, 57),
+    COLOR_156(79, 76, 97),
+    COLOR_157(96, 93, 119),
+    COLOR_158(112, 108, 138),
+    COLOR_159(59, 57, 73),
+    COLOR_160(131, 93, 25),
+    COLOR_161(160, 114, 31),
+    COLOR_162(186, 133, 36),
+    COLOR_163(98, 70, 19),
+    COLOR_164(72, 82, 37),
+    COLOR_165(88, 100, 45),
+    COLOR_166(103, 117, 53),
+    COLOR_167(54, 61, 28),
+    COLOR_168(112, 54, 55),
+    COLOR_169(138, 66, 67),
+    COLOR_170(160, 77, 78),
+    COLOR_171(84, 40, 41),
+    COLOR_172(40, 28, 24),
+    COLOR_173(49, 35, 30),
+    COLOR_174(57, 41, 35),
+    COLOR_175(30, 21, 18),
+    COLOR_176(95, 75, 69),
+    COLOR_177(116, 92, 84),
+    COLOR_178(135, 107, 98),
+    COLOR_179(71, 56, 51),
+    COLOR_180(61, 64, 64),
+    COLOR_181(75, 79, 79),
+    COLOR_182(87, 92, 92),
+    COLOR_183(46, 48, 48),
+    COLOR_184(86, 51, 62),
+    COLOR_185(105, 62, 75),
+    COLOR_186(122, 73, 88),
+    COLOR_187(64, 38, 46),
+    COLOR_188(53, 43, 64),
+    COLOR_189(65, 53, 79),
+    COLOR_190(76, 62, 92),
+    COLOR_191(40, 32, 48),
+    COLOR_192(53, 35, 24),
+    COLOR_193(65, 43, 30),
+    COLOR_194(76, 50, 35),
+    COLOR_195(40, 26, 18),
+    COLOR_196(53, 57, 29),
+    COLOR_197(65, 70, 36),
+    COLOR_198(76, 82, 42),
+    COLOR_199(40, 43, 22),
+    COLOR_200(100, 42, 32),
+    COLOR_201(122, 51, 39),
+    COLOR_202(142, 60, 46),
+    COLOR_203(75, 31, 24),
+    COLOR_204(26, 15, 11),
+    COLOR_205(31, 18, 13),
+    COLOR_206(37, 22, 16),
+    COLOR_207(19, 11, 8),
+    COLOR_208(133, 33, 34),
+    COLOR_209(163, 41, 42),
+    COLOR_210(189, 48, 49),
+    COLOR_211(100, 25, 25),
+    COLOR_212(104, 44, 68),
+    COLOR_213(127, 54, 83),
+    COLOR_214(148, 63, 97),
+    COLOR_215(78, 33, 51),
+    COLOR_216(64, 17, 20),
+    COLOR_217(79, 21, 25),
+    COLOR_218(92, 25, 29),
+    COLOR_219(48, 13, 15),
+    COLOR_220(15, 88, 94),
+    COLOR_221(18, 108, 115),
+    COLOR_222(22, 126, 134),
+    COLOR_223(11, 66, 70),
+    COLOR_224(40, 100, 98),
+    COLOR_225(50, 122, 120),
+    COLOR_226(58, 142, 140),
+    COLOR_227(30, 75, 74),
+    COLOR_228(60, 31, 43),
+    COLOR_229(74, 37, 53),
+    COLOR_230(86, 44, 62),
+    COLOR_231(45, 23, 32),
+    COLOR_232(14, 127, 93),
+    COLOR_233(17, 155, 114),
+    COLOR_234(20, 180, 133),
+    COLOR_235(10, 95, 70),
+    COLOR_236(70, 70, 70),
+    COLOR_237(86, 86, 86),
+    COLOR_238(100, 100, 100),
+    COLOR_239(52, 52, 52),
+    COLOR_240(152, 123, 103),
+    COLOR_241(186, 150, 126),
+    COLOR_242(216, 175, 147),
+    COLOR_243(114, 92, 77),
+    COLOR_244(89, 117, 105),
+    COLOR_245(109, 144, 129),
+    COLOR_246(127, 167, 150),
+    COLOR_247(67, 88, 79);
 
     private static final MapColor[] VALUES = values();
 
     private final int value;
 
-    MapColor(int value) {
-        this.value = value;
+    MapColor(int red, int green, int blue) {
+        int alpha = 255;
+        if (red == -1 && green == -1 && blue == -1)
+            alpha = 0; // transparent
+
+        this.value = ((alpha & 0xFF) << 24) |
+            ((red & 0xFF) << 16) |
+            ((green & 0xFF) << 8) |
+            (blue & 0xFF);
     }
 
     public static MapColor fromId(int id) {

From c575689f2e8cbc8c70882c064f585bdfe5ee01ad Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 10 Dec 2024 03:11:57 +0800
Subject: [PATCH 110/165] let's not spam debug mode with an unused entity event

---
 .../protocol/java/entity/JavaEntityEventTranslator.java        | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
index 504348b5b..2e2734410 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaEntityEventTranslator.java
@@ -295,6 +295,9 @@ public class JavaEntityEventTranslator extends PacketTranslator<ClientboundEntit
                     creakingEntity.createParticleBeam();
                 }
                 break;
+            case SQUID_RESET_ROTATION:
+                // unused, but spams a bit
+                break;
             default:
                 GeyserImpl.getInstance().getLogger().debug("unhandled entity event: " + packet);
         }

From 357fd137dc6d5a9111ded2e9c64cf11e10bfd5bf Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Mon, 9 Dec 2024 22:42:40 -0500
Subject: [PATCH 111/165] Some touch-ups

---
 .../main/kotlin/geyser.base-conventions.gradle.kts   |  4 ++--
 .../type/living/animal/tameable/WolfEntity.java      |  6 +++++-
 .../entity/type/living/monster/CreakingEntity.java   | 11 +++++++----
 .../java/org/geysermc/geyser/item/type/Item.java     | 12 +++++++++---
 4 files changed, 23 insertions(+), 10 deletions(-)

diff --git a/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts b/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts
index 045015fe1..093f0a8c0 100644
--- a/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts
+++ b/build-logic/src/main/kotlin/geyser.base-conventions.gradle.kts
@@ -26,6 +26,8 @@ dependencies {
 }
 
 repositories {
+    // mavenLocal()
+
     mavenCentral()
 
     // Floodgate, Cumulus etc.
@@ -67,6 +69,4 @@ repositories {
 
     // For Adventure snapshots
     maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
-
-    //mavenLocal()
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index 1b06f3860..ff2d57aef 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -128,7 +128,11 @@ public class WolfEntity extends TameableEntity {
     public void setBody(ItemStack stack) {
         super.setBody(stack);
         isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
-        repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
+        if (stack != null && stack.getDataComponents() != null) {
+            repairableItems = stack.getDataComponents().get(DataComponentType.REPAIRABLE);
+        } else {
+            repairableItems = null;
+        }
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
index 1a26eb43b..1b9fdd8a4 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
@@ -40,14 +40,12 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataTyp
 import java.util.Optional;
 import java.util.UUID;
 
-
 public class CreakingEntity extends MonsterEntity {
-
-    private Vector3i homePosition;
-
     public static final String CREAKING_STATE = "minecraft:creaking_state";
     public static final String CREAKING_SWAYING_TICKS = "minecraft:creaking_swaying_ticks";
 
+    private Vector3i homePosition;
+
     public CreakingEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position, motion, yaw, pitch, headYaw);
     }
@@ -62,6 +60,11 @@ public class CreakingEntity extends MonsterEntity {
     @Override
     public void addAdditionalSpawnData(AddEntityPacket addEntityPacket) {
         propertyManager.add(CREAKING_STATE, "neutral");
+        // also, the creaking seems to have this minecraft:creaking_swaying_ticks thingy
+        // which i guess is responsible for some animation?
+        // it's sent over the network, all 6 "stages" 50ms in between of each other.
+        // no clue what it's used for tbh, so i'm not gonna bother implementing it
+        // - chris
         propertyManager.add(CREAKING_SWAYING_TICKS, 0);
         propertyManager.applyIntProperties(addEntityPacket.getProperties().getIntProperties());
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index b12ab4d67..51750e7b1 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -49,10 +49,12 @@ import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.MinecraftKey;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DyedItemColor;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
+import org.jetbrains.annotations.UnmodifiableView;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -103,14 +105,18 @@ public class Item {
      * Otherwise, prefer using GeyserItemStack's getComponent
      */
     @NonNull
+    @UnmodifiableView
     public DataComponents gatherComponents(DataComponents others) {
         if (others == null) {
             return baseComponents;
         }
 
-        DataComponents components = baseComponents.clone();
-        components.getDataComponents().putAll(others.getDataComponents());
-        return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
+        //noinspection UnstableApiUsage
+        var builder = ImmutableMap.<DataComponentType<?>, DataComponent<?, ?>>builderWithExpectedSize(
+            baseComponents.getDataComponents().size() + others.getDataComponents().size());
+        builder.putAll(baseComponents.getDataComponents());
+        builder.putAll(others.getDataComponents());
+        return new DataComponents(builder.build());
     }
 
     @Nullable

From 8779eab5e5e11a781dd04e558744aff3f9228bb1 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 10 Dec 2024 20:44:29 +0800
Subject: [PATCH 112/165] Revert a change, ensure that gathering all components
 works and doesn't throw due to duplicate keys

---
 .../entity/type/living/animal/tameable/WolfEntity.java |  6 +-----
 .../main/java/org/geysermc/geyser/item/type/Item.java  | 10 +++-------
 2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index ff2d57aef..1b06f3860 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -128,11 +128,7 @@ public class WolfEntity extends TameableEntity {
     public void setBody(ItemStack stack) {
         super.setBody(stack);
         isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
-        if (stack != null && stack.getDataComponents() != null) {
-            repairableItems = stack.getDataComponents().get(DataComponentType.REPAIRABLE);
-        } else {
-            repairableItems = null;
-        }
+        repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 51750e7b1..c5dff3ad0 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -49,7 +49,6 @@ import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.MinecraftKey;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DyedItemColor;
@@ -111,12 +110,9 @@ public class Item {
             return baseComponents;
         }
 
-        //noinspection UnstableApiUsage
-        var builder = ImmutableMap.<DataComponentType<?>, DataComponent<?, ?>>builderWithExpectedSize(
-            baseComponents.getDataComponents().size() + others.getDataComponents().size());
-        builder.putAll(baseComponents.getDataComponents());
-        builder.putAll(others.getDataComponents());
-        return new DataComponents(builder.build());
+        DataComponents components = baseComponents.clone();
+        components.getDataComponents().putAll(others.getDataComponents());
+        return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
     }
 
     @Nullable

From 94d77b403b4ee26516438d58e6fd7f8ac6a52128 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 10 Dec 2024 23:13:32 +0800
Subject: [PATCH 113/165] Add some code comments, update BungeeCord version
 check

---
 .../bungeecord/GeyserBungeePlugin.java         |  2 +-
 .../living/animal/tameable/WolfEntity.java     |  1 +
 .../geyser/inventory/GeyserItemStack.java      | 13 +++++++++++++
 .../org/geysermc/geyser/item/type/Item.java    | 18 +++++++++++++++---
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
index 7adfd488f..290bf2a4e 100644
--- a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
+++ b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
@@ -83,7 +83,7 @@ public class GeyserBungeePlugin extends Plugin implements GeyserBootstrap {
         // Copied from ViaVersion.
         // https://github.com/ViaVersion/ViaVersion/blob/b8072aad86695cc8ec6f5e4103e43baf3abf6cc5/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java#L43
         try {
-            ProtocolConstants.class.getField("MINECRAFT_1_21");
+            ProtocolConstants.class.getField("MINECRAFT_1_21_4");
         } catch (NoSuchFieldException e) {
             geyserLogger.error("      / \\");
             geyserLogger.error("     /   \\");
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index 1b06f3860..b108c9fbe 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -128,6 +128,7 @@ public class WolfEntity extends TameableEntity {
     public void setBody(ItemStack stack) {
         super.setBody(stack);
         isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
+        // Not using ItemStack#getDataComponents as that wouldn't include default item components
         repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index c595ea1b5..4ddff305e 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -125,6 +125,10 @@ public class GeyserItemStack {
         return isEmpty() ? null : components;
     }
 
+    /**
+     * @return whether this GeyserItemStack has any additional components on top of
+     * the base item components.
+     */
     public boolean hasNonBaseComponents() {
         return components != null;
     }
@@ -137,6 +141,15 @@ public class GeyserItemStack {
         return components;
     }
 
+    /**
+     * Returns the stored data component for a given {@link DataComponentType}, or null.
+     * <p>
+     * This method will first check the additional components that may exist,
+     * and fallback to the item's default (or, "base") components if need be.
+     * @param type the {@link DataComponentType} to query
+     * @return the value for said type, or null.
+     * @param <T> the value's type
+     */
     @Nullable
     public <T> T getComponent(@NonNull DataComponentType<T> type) {
         if (components == null) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index c5dff3ad0..19789e086 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -100,21 +100,33 @@ public class Item {
     }
 
     /**
-     * Returns a modifiable DataComponents map. Should only be used when it must be modified.
-     * Otherwise, prefer using GeyserItemStack's getComponent
+     * Returns an unmodifiable {@link DataComponents} view containing known data components.
+     * Optionally, additional components can be provided to replace (or add to)
+     * the items' base components.
+     * To add data components, use {@link GeyserItemStack#getOrCreateComponents()}.
      */
     @NonNull
     @UnmodifiableView
-    public DataComponents gatherComponents(DataComponents others) {
+    public DataComponents gatherComponents(@Nullable DataComponents others) {
         if (others == null) {
             return baseComponents;
         }
 
+        // Start with the base components that always exist
         DataComponents components = baseComponents.clone();
+        // Add all additional components; these can override base components!
+        // e.g. custom stack size
         components.getDataComponents().putAll(others.getDataComponents());
+
+        // Return an unmodified map of the merged components
         return new DataComponents(ImmutableMap.copyOf(components.getDataComponents()));
     }
 
+    /**
+     * Returns this items value (or null) for a specific {@link DataComponentType}.
+     * Prefer using {@link GeyserItemStack#getComponent(DataComponentType)}
+     * to also query additional components that would override the default ones.
+     */
     @Nullable
     public <T> T getComponent(@NonNull DataComponentType<T> type) {
         return baseComponents.get(type);

From 5b90b114b52131da79e9579adb359041c9b703b2 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 11 Dec 2024 01:28:30 +0800
Subject: [PATCH 114/165] Remove unneeded code in CodecProcessor, make Bungee
 version checker automatically check for the required version

---
 .../bungeecord/GeyserBungeePlugin.java        | 25 ++---
 .../geyser/network/CodecProcessor.java        | 96 ++-----------------
 2 files changed, 20 insertions(+), 101 deletions(-)

diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
index 290bf2a4e..918c13b93 100644
--- a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
+++ b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java
@@ -41,6 +41,7 @@ import org.geysermc.geyser.command.CommandSourceConverter;
 import org.geysermc.geyser.command.GeyserCommandSource;
 import org.geysermc.geyser.configuration.GeyserConfiguration;
 import org.geysermc.geyser.dump.BootstrapDumpInfo;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.ping.GeyserLegacyPingPassthrough;
 import org.geysermc.geyser.ping.IGeyserPingPassthrough;
 import org.geysermc.geyser.platform.bungeecord.command.BungeeCommandSource;
@@ -58,6 +59,7 @@ import java.net.SocketAddress;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Collection;
+import java.util.List;
 import java.util.Optional;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
@@ -80,18 +82,19 @@ public class GeyserBungeePlugin extends Plugin implements GeyserBootstrap {
     public void onGeyserInitialize() {
         GeyserLocale.init(this);
 
-        // Copied from ViaVersion.
-        // https://github.com/ViaVersion/ViaVersion/blob/b8072aad86695cc8ec6f5e4103e43baf3abf6cc5/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java#L43
         try {
-            ProtocolConstants.class.getField("MINECRAFT_1_21_4");
-        } catch (NoSuchFieldException e) {
-            geyserLogger.error("      / \\");
-            geyserLogger.error("     /   \\");
-            geyserLogger.error("    /  |  \\");
-            geyserLogger.error("   /   |   \\    " + GeyserLocale.getLocaleStringLog("geyser.bootstrap.unsupported_proxy", getProxy().getName()));
-            geyserLogger.error("  /         \\   " + GeyserLocale.getLocaleStringLog("geyser.may_not_work_as_intended_all_caps"));
-            geyserLogger.error(" /     o     \\");
-            geyserLogger.error("/_____________\\");
+            List<Integer> supportedProtocols = ProtocolConstants.SUPPORTED_VERSION_IDS;
+            if (!supportedProtocols.contains(GameProtocol.getJavaProtocolVersion())) {
+                geyserLogger.error("      / \\");
+                geyserLogger.error("     /   \\");
+                geyserLogger.error("    /  |  \\");
+                geyserLogger.error("   /   |   \\    " + GeyserLocale.getLocaleStringLog("geyser.bootstrap.unsupported_proxy", getProxy().getName()));
+                geyserLogger.error("  /         \\   " + GeyserLocale.getLocaleStringLog("geyser.may_not_work_as_intended_all_caps"));
+                geyserLogger.error(" /     o     \\");
+                geyserLogger.error("/_____________\\");
+            }
+        } catch (Throwable e) {
+            geyserLogger.warning("Unable to check the versions supported by this proxy! " + e.getMessage());
         }
 
         if (!this.loadConfig()) {
diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
index 15aa8bc2c..de654ed62 100644
--- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
+++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
@@ -35,17 +35,11 @@ import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MoveEntityAbsolut
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.PlayerHotbarSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.SetEntityLinkSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v390.serializer.PlayerSkinSerializer_v390;
-import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.InventoryContentSerializer_v407;
-import org.cloudburstmc.protocol.bedrock.codec.v407.serializer.InventorySlotSerializer_v407;
 import org.cloudburstmc.protocol.bedrock.codec.v419.serializer.MovePlayerSerializer_v419;
 import org.cloudburstmc.protocol.bedrock.codec.v486.serializer.BossEventSerializer_v486;
 import org.cloudburstmc.protocol.bedrock.codec.v557.serializer.SetEntityDataSerializer_v557;
 import org.cloudburstmc.protocol.bedrock.codec.v662.serializer.SetEntityMotionSerializer_v662;
-import org.cloudburstmc.protocol.bedrock.codec.v712.serializer.InventoryContentSerializer_v712;
-import org.cloudburstmc.protocol.bedrock.codec.v712.serializer.InventorySlotSerializer_v712;
 import org.cloudburstmc.protocol.bedrock.codec.v712.serializer.MobArmorEquipmentSerializer_v712;
-import org.cloudburstmc.protocol.bedrock.codec.v729.serializer.InventoryContentSerializer_v729;
-import org.cloudburstmc.protocol.bedrock.codec.v729.serializer.InventorySlotSerializer_v729;
 import org.cloudburstmc.protocol.bedrock.codec.v748.serializer.InventoryContentSerializer_v748;
 import org.cloudburstmc.protocol.bedrock.codec.v748.serializer.InventorySlotSerializer_v748;
 import org.cloudburstmc.protocol.bedrock.packet.AnvilDamagePacket;
@@ -95,6 +89,7 @@ import org.cloudburstmc.protocol.common.util.VarInts;
 /**
  * Processes the Bedrock codec to remove or modify unused or unsafe packets and fields.
  */
+@SuppressWarnings("deprecation")
 class CodecProcessor {
     
     /**
@@ -126,27 +121,9 @@ class CodecProcessor {
         public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, BedrockPacket packet) {
         }
     };
-
     /**
      * Serializer that throws an exception when trying to deserialize InventoryContentPacket since server-auth inventory is used.
      */
-    private static final BedrockPacketSerializer<InventoryContentPacket> INVENTORY_CONTENT_SERIALIZER_V407 = new InventoryContentSerializer_v407() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventoryContentPacket packet) {
-            throw new IllegalArgumentException("Client cannot send InventoryContentPacket in server-auth inventory environment!");
-        }
-    };
-
-    /**
-     * Serializer that throws an exception when trying to deserialize InventoryContentPacket since server-auth inventory is used.
-     */
-    private static final BedrockPacketSerializer<InventoryContentPacket> INVENTORY_CONTENT_SERIALIZER_V712 = new InventoryContentSerializer_v712() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventoryContentPacket packet) {
-            throw new IllegalArgumentException("Client cannot send InventoryContentPacket in server-auth inventory environment!");
-        }
-    };
-
     private static final BedrockPacketSerializer<InventoryContentPacket> INVENTORY_CONTENT_SERIALIZER_V748 = new InventoryContentSerializer_v748() {
         @Override
         public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventoryContentPacket packet) {
@@ -154,40 +131,9 @@ class CodecProcessor {
         }
     };
 
-    private static final BedrockPacketSerializer<InventoryContentPacket> INVENTORY_CONTENT_SERIALIZER_V729 = new InventoryContentSerializer_v729() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventoryContentPacket packet) {
-            throw new IllegalArgumentException("Client cannot send InventoryContentPacket in server-auth inventory environment!");
-        }
-    };
-
-    /**
-     * Serializer that throws an exception when trying to deserialize InventorySlotPacket since server-auth inventory is used.
-     */
-    private static final BedrockPacketSerializer<InventorySlotPacket> INVENTORY_SLOT_SERIALIZER_V407 = new InventorySlotSerializer_v407() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventorySlotPacket packet) {
-            throw new IllegalArgumentException("Client cannot send InventorySlotPacket in server-auth inventory environment!");
-        }
-    };
-
     /*
      * Serializer that throws an exception when trying to deserialize InventorySlotPacket since server-auth inventory is used.
      */
-    private static final BedrockPacketSerializer<InventorySlotPacket> INVENTORY_SLOT_SERIALIZER_V712 = new InventorySlotSerializer_v712() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventorySlotPacket packet) {
-            throw new IllegalArgumentException("Client cannot send InventorySlotPacket in server-auth inventory environment!");
-        }
-    };
-
-    private static final BedrockPacketSerializer<InventorySlotPacket> INVENTORY_SLOT_SERIALIZER_V729 = new InventorySlotSerializer_v729() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventorySlotPacket packet) {
-            throw new IllegalArgumentException("Client cannot send InventorySlotPacket in server-auth inventory environment!");
-        }
-    };
-
     private static final BedrockPacketSerializer<InventorySlotPacket> INVENTORY_SLOT_SERIALIZER_V748 = new InventorySlotSerializer_v748() {
         @Override
         public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, InventorySlotPacket packet) {
@@ -297,32 +243,6 @@ class CodecProcessor {
 
     @SuppressWarnings("unchecked")
     static BedrockCodec processCodec(BedrockCodec codec) {
-        boolean is748OrAbove = codec.getProtocolVersion() >= 748;
-        boolean is729OrAbove = codec.getProtocolVersion() >= 729;
-        boolean is712OrAbove = codec.getProtocolVersion() >= 712;
-
-        BedrockPacketSerializer<InventoryContentPacket> inventoryContentSerializer;
-        if (is748OrAbove) {
-            inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V748;
-        } else if (is729OrAbove) {
-            inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V729;
-        } else if (is712OrAbove) {
-            inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V712;
-        } else {
-            inventoryContentSerializer = INVENTORY_CONTENT_SERIALIZER_V407;
-        }
-
-        BedrockPacketSerializer<InventorySlotPacket> inventorySlotSerializer;
-        if (is748OrAbove) {
-            inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V748;
-        } else if (is729OrAbove) {
-            inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V729;
-        } else if (is712OrAbove) {
-            inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V712;
-        } else {
-            inventorySlotSerializer = INVENTORY_SLOT_SERIALIZER_V407;
-        }
-
         BedrockCodec.Builder codecBuilder = codec.toBuilder()
             // Illegal unused serverbound EDU packets
             .updateSerializer(PhotoTransferPacket.class, ILLEGAL_SERIALIZER)
@@ -350,15 +270,15 @@ class CodecProcessor {
             .updateSerializer(AnvilDamagePacket.class, IGNORED_SERIALIZER)
             .updateSerializer(RefreshEntitlementsPacket.class, IGNORED_SERIALIZER)
             // Illegal when serverbound due to Geyser specific setup
-            .updateSerializer(InventoryContentPacket.class, inventoryContentSerializer)
-            .updateSerializer(InventorySlotPacket.class, inventorySlotSerializer)
+            .updateSerializer(InventoryContentPacket.class, INVENTORY_CONTENT_SERIALIZER_V748)
+            .updateSerializer(InventorySlotPacket.class, INVENTORY_SLOT_SERIALIZER_V748)
             .updateSerializer(MovePlayerPacket.class, MOVE_PLAYER_SERIALIZER)
             .updateSerializer(MoveEntityAbsolutePacket.class, MOVE_ENTITY_SERIALIZER)
             .updateSerializer(RiderJumpPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(PlayerInputPacket.class, ILLEGAL_SERIALIZER)
             // Ignored only when serverbound
             .updateSerializer(BossEventPacket.class, BOSS_EVENT_SERIALIZER)
-            .updateSerializer(MobArmorEquipmentPacket.class, is712OrAbove ? MOB_ARMOR_EQUIPMENT_SERIALIZER_V712 : MOB_ARMOR_EQUIPMENT_SERIALIZER_V291)
+            .updateSerializer(MobArmorEquipmentPacket.class, MOB_ARMOR_EQUIPMENT_SERIALIZER_V712)
             .updateSerializer(PlayerHotbarPacket.class, PLAYER_HOTBAR_SERIALIZER)
             .updateSerializer(PlayerSkinPacket.class, PLAYER_SKIN_SERIALIZER)
             .updateSerializer(SetEntityDataPacket.class, SET_ENTITY_DATA_SERIALIZER)
@@ -373,12 +293,8 @@ class CodecProcessor {
             // Ignored bidirectional packets
             .updateSerializer(ClientCacheStatusPacket.class, IGNORED_SERIALIZER)
             .updateSerializer(SimpleEventPacket.class, IGNORED_SERIALIZER)
-            .updateSerializer(MultiplayerSettingsPacket.class, IGNORED_SERIALIZER);
-
-            if (codec.getProtocolVersion() < 685) {
-                // Ignored bidirectional packets
-                codecBuilder.updateSerializer(TickSyncPacket.class, IGNORED_SERIALIZER);
-            }
+            .updateSerializer(MultiplayerSettingsPacket.class, IGNORED_SERIALIZER)
+            .updateSerializer(TickSyncPacket.class, IGNORED_SERIALIZER);
 
             return codecBuilder.build();
     }

From b843be58d00b49044fe79c2028299a9ba7703919 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 11 Dec 2024 01:41:08 +0800
Subject: [PATCH 115/165] don't set an illegal serializer for removed packet

---
 .../main/java/org/geysermc/geyser/network/CodecProcessor.java | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
index de654ed62..b3f3af5ff 100644
--- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
+++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
@@ -83,7 +83,6 @@ import org.cloudburstmc.protocol.bedrock.packet.SettingsCommandPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SimpleEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SubChunkRequestPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SubClientLoginPacket;
-import org.cloudburstmc.protocol.bedrock.packet.TickSyncPacket;
 import org.cloudburstmc.protocol.common.util.VarInts;
 
 /**
@@ -293,8 +292,7 @@ class CodecProcessor {
             // Ignored bidirectional packets
             .updateSerializer(ClientCacheStatusPacket.class, IGNORED_SERIALIZER)
             .updateSerializer(SimpleEventPacket.class, IGNORED_SERIALIZER)
-            .updateSerializer(MultiplayerSettingsPacket.class, IGNORED_SERIALIZER)
-            .updateSerializer(TickSyncPacket.class, IGNORED_SERIALIZER);
+            .updateSerializer(MultiplayerSettingsPacket.class, IGNORED_SERIALIZER);
 
             return codecBuilder.build();
     }

From 4d12c291087b371fc6ef937dfebc4c4e5e4c7474 Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Tue, 10 Dec 2024 21:22:39 +0000
Subject: [PATCH 116/165] Fix default attribute modifiers, add more equipment
 slot group names for attribute modifiers (#5211)

---
 .../translator/item/ItemTranslator.java       | 53 ++++++++++---------
 1 file changed, 29 insertions(+), 24 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 54bbe086c..691a320e5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.item;
 
+import net.kyori.adventure.key.Key;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.TranslatableComponent;
 import net.kyori.adventure.text.format.NamedTextColor;
@@ -38,6 +39,7 @@ import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.block.custom.CustomBlockData;
+import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.components.Rarity;
@@ -52,6 +54,7 @@ import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.geyser.util.MinecraftKey;
 import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.auth.GameProfile.Texture;
 import org.geysermc.mcprotocollib.auth.GameProfile.TextureType;
@@ -89,16 +92,21 @@ public final class ItemTranslator {
         ItemAttributeModifiers.EquipmentSlotGroup.FEET
     };
     private static final DecimalFormat ATTRIBUTE_FORMAT = new DecimalFormat("0.#####");
+    private static final Key BASE_ATTACK_DAMAGE_ID = MinecraftKey.key("base_attack_damage");
+    private static final Key BASE_ATTACK_SPEED_ID = MinecraftKey.key("base_attack_speed");
 
     static {
-        // These are the only slots that are used and have translation strings
+        // Maps slot groups to their respective translation names, ordered in their Java edition order in the item tooltip
         SLOT_NAMES = new EnumMap<>(ItemAttributeModifiers.EquipmentSlotGroup.class);
+        SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.ANY, "any");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.MAIN_HAND, "mainhand");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.OFF_HAND, "offhand");
+        SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.HAND, "hand");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.FEET, "feet");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.LEGS, "legs");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.CHEST, "chest");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.HEAD, "head");
+        SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.ARMOR, "armor");
         SLOT_NAMES.put(ItemAttributeModifiers.EquipmentSlotGroup.BODY, "body");
     }
 
@@ -175,7 +183,7 @@ public final class ItemTranslator {
         ItemAttributeModifiers attributeModifiers = components.get(DataComponentType.ATTRIBUTE_MODIFIERS);
         if (attributeModifiers != null && attributeModifiers.isShowInTooltip() && !hideTooltips) {
             // only add if attribute modifiers do not indicate to hide them
-            addAttributeLore(attributeModifiers, nbtBuilder, session.locale());
+            addAttributeLore(session, attributeModifiers, nbtBuilder, session.locale());
         }
 
         if (session.isAdvancedTooltips() && !hideTooltips) {
@@ -229,31 +237,17 @@ public final class ItemTranslator {
      * @param modifiers the attribute modifiers of the ItemStack
      * @param language the locale of the player
      */
-    private static void addAttributeLore(ItemAttributeModifiers modifiers, BedrockItemBuilder builder, String language) {
+    private static void addAttributeLore(GeyserSession session, ItemAttributeModifiers modifiers, BedrockItemBuilder builder, String language) {
         // maps each slot to the modifiers applied when in such slot
         Map<ItemAttributeModifiers.EquipmentSlotGroup, List<String>> slotsToModifiers = new HashMap<>();
         for (ItemAttributeModifiers.Entry entry : modifiers.getModifiers()) {
             // convert the modifier tag to a lore entry
-            String loreEntry = attributeToLore(entry.getAttribute(), entry.getModifier(), language);
+            String loreEntry = attributeToLore(session, entry.getAttribute(), entry.getModifier(), language);
             if (loreEntry == null) {
                 continue; // invalid or failed
             }
 
-            ItemAttributeModifiers.EquipmentSlotGroup slotGroup = entry.getSlot();
-            if (slotGroup == ItemAttributeModifiers.EquipmentSlotGroup.ARMOR) {
-                // modifier applies to all armor slots
-                for (ItemAttributeModifiers.EquipmentSlotGroup slot : ARMOR_SLOT_NAMES) {
-                    slotsToModifiers.computeIfAbsent(slot, s -> new ArrayList<>()).add(loreEntry);
-                }
-            } else if (slotGroup == ItemAttributeModifiers.EquipmentSlotGroup.ANY) {
-                // modifier applies to all slots implicitly
-                for (var slot : SLOT_NAMES.keySet()) {
-                    slotsToModifiers.computeIfAbsent(slot, s -> new ArrayList<>()).add(loreEntry);
-                }
-            } else {
-                // modifier applies to only the specified slot
-                slotsToModifiers.computeIfAbsent(slotGroup, s -> new ArrayList<>()).add(loreEntry);
-            }
+            slotsToModifiers.computeIfAbsent(entry.getSlot(), s -> new ArrayList<>()).add(loreEntry);
         }
 
         // iterate through the small array, not the map, so that ordering matches Java Edition
@@ -279,7 +273,7 @@ public final class ItemTranslator {
     }
 
     @Nullable
-    private static String attributeToLore(int attribute, ItemAttributeModifiers.AttributeModifier modifier, String language) {
+    private static String attributeToLore(GeyserSession session, int attribute, ItemAttributeModifiers.AttributeModifier modifier, String language) {
         double amount = modifier.getAmount();
         if (amount == 0) {
             return null;
@@ -289,24 +283,35 @@ public final class ItemTranslator {
         // the namespace does not need to be present, but if it is, the java client ignores it as of pre-1.20.5
 
         ModifierOperation operation = modifier.getOperation();
+        boolean baseModifier = false;
         String operationTotal = switch (operation) {
             case ADD -> {
-                if (name.equals("generic.knockback_resistance")) {
+                if (name.equals("knockback_resistance")) {
                     amount *= 10;
                 }
+
+                if (modifier.getId().equals(BASE_ATTACK_DAMAGE_ID)) {
+                    amount += session.getPlayerEntity().attributeOrDefault(GeyserAttributeType.ATTACK_DAMAGE);
+                    baseModifier = true;
+                } else if (modifier.getId().equals(BASE_ATTACK_SPEED_ID)) {
+                    amount += session.getPlayerEntity().attributeOrDefault(GeyserAttributeType.ATTACK_SPEED);
+                    baseModifier = true;
+                }
+
                 yield ATTRIBUTE_FORMAT.format(amount);
             }
             case ADD_MULTIPLIED_BASE, ADD_MULTIPLIED_TOTAL ->
                     ATTRIBUTE_FORMAT.format(amount * 100) + "%";
         };
-        if (amount > 0) {
+        if (amount > 0 && !baseModifier) {
             operationTotal = "+" + operationTotal;
         }
 
+
         Component attributeComponent = Component.text()
                 .resetStyle()
-                .color(amount > 0 ? NamedTextColor.BLUE : NamedTextColor.RED)
-                .append(Component.text(operationTotal + " "), Component.translatable("attribute.name." + name))
+                .color(baseModifier ? NamedTextColor.DARK_GREEN : amount > 0 ? NamedTextColor.BLUE : NamedTextColor.RED)
+                .append(Component.text(" " + operationTotal + " "), Component.translatable("attribute.name." + name))
                 .build();
 
         return MessageTranslator.convertMessage(attributeComponent, language);

From b2045a5b3d55eb51fd6caef9207bb082d860751a Mon Sep 17 00:00:00 2001
From: Valaphee The Meerkat <32491319+valaphee@users.noreply.github.com>
Date: Wed, 11 Dec 2024 03:04:33 +0100
Subject: [PATCH 117/165] Fix skull mix-up by not reusing skulls (#5206)

---
 .../entity/type/player/SkullPlayerEntity.java | 11 -----
 .../geyser/session/cache/SkullCache.java      | 45 ++++---------------
 2 files changed, 9 insertions(+), 47 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/player/SkullPlayerEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/player/SkullPlayerEntity.java
index 1c5060de0..4c8d1d20b 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/player/SkullPlayerEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/player/SkullPlayerEntity.java
@@ -102,17 +102,6 @@ public class SkullPlayerEntity extends PlayerEntity {
         session.sendUpstreamPacket(addPlayerPacket);
     }
 
-    /**
-     * Hide the player entity so that it can be reused for a different skull.
-     */
-    public void free() {
-        setFlag(EntityFlag.INVISIBLE, true);
-        updateBedrockMetadata();
-
-        // Move skull entity out of the way
-        moveAbsolute(session.getPlayerEntity().getPosition().up(128), 0, 0, 0, false, true);
-    }
-
     public void updateSkull(SkullCache.Skull skull) {
         skullPosition = skull.getPosition();
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java
index 0eec39b0b..a3cf1247f 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java
@@ -50,20 +50,14 @@ import java.util.*;
 public class SkullCache {
     private final int maxVisibleSkulls;
     private final boolean cullingEnabled;
-    
+
     private final int skullRenderDistanceSquared;
-    
-    /**
-     * The time in milliseconds before unused skull entities are despawned
-     */
-    private static final long CLEANUP_PERIOD = 10000;
 
     @Getter
     private final Map<Vector3i, Skull> skulls = new Object2ObjectOpenHashMap<>();
 
     private final List<Skull> inRangeSkulls = new ArrayList<>();
 
-    private final Deque<SkullPlayerEntity> unusedSkullEntities = new ArrayDeque<>();
     private int totalSkullEntities = 0;
 
     private final GeyserSession session;
@@ -188,43 +182,26 @@ public class SkullCache {
                 }
             }
         }
-
-        // Occasionally clean up unused entities as we want to keep skull
-        // entities around for later use, to reduce "player" pop-in
-        if ((System.currentTimeMillis() - lastCleanup) > CLEANUP_PERIOD) {
-            lastCleanup = System.currentTimeMillis();
-            for (SkullPlayerEntity entity : unusedSkullEntities) {
-                entity.despawnEntity();
-                totalSkullEntities--;
-            }
-            unusedSkullEntities.clear();
-        }
     }
 
     private void assignSkullEntity(Skull skull) {
         if (skull.entity != null) {
             return;
         }
-        if (unusedSkullEntities.isEmpty()) {
-            if (!cullingEnabled || totalSkullEntities < maxVisibleSkulls) {
-                // Create a new entity
-                long geyserId = session.getEntityCache().getNextEntityId().incrementAndGet();
-                skull.entity = new SkullPlayerEntity(session, geyserId);
-                skull.entity.spawnEntity();
-                skull.entity.updateSkull(skull);
-                totalSkullEntities++;
-            }
-        } else {
-            // Reuse an entity
-            skull.entity = unusedSkullEntities.removeFirst();
+        if (!cullingEnabled || totalSkullEntities < maxVisibleSkulls) {
+            // Create a new entity
+            long geyserId = session.getEntityCache().getNextEntityId().incrementAndGet();
+            skull.entity = new SkullPlayerEntity(session, geyserId);
+            skull.entity.spawnEntity();
             skull.entity.updateSkull(skull);
+            totalSkullEntities++;
         }
     }
 
     private void freeSkullEntity(Skull skull) {
         if (skull.entity != null) {
-            skull.entity.free();
-            unusedSkullEntities.addFirst(skull.entity);
+            skull.entity.despawnEntity();
+            totalSkullEntities--;
             skull.entity = null;
         }
     }
@@ -250,10 +227,6 @@ public class SkullCache {
         }
         skulls.clear();
         inRangeSkulls.clear();
-        for (SkullPlayerEntity skull : unusedSkullEntities) {
-            skull.despawnEntity();
-        }
-        unusedSkullEntities.clear();
         totalSkullEntities = 0;
         lastPlayerPosition = null;
     }

From b36bc9e95accc97b22d6993c0fd71fc6650c2e57 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 11 Dec 2024 23:31:23 +0800
Subject: [PATCH 118/165] Indicate 1.21.51 support

---
 .../main/java/org/geysermc/geyser/network/GameProtocol.java | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index bb7032d25..7aaeef87d 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -48,7 +48,7 @@ public final class GameProtocol {
      * release of the game that Geyser supports.
      */
     public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v766.CODEC.toBuilder()
-        .minecraftVersion("1.21.50")
+        .minecraftVersion("1.21.51")
         .build());
 
     /**
@@ -66,7 +66,9 @@ public final class GameProtocol {
         SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
             .minecraftVersion("1.21.40 - 1.21.44")
             .build()));
-        SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
+        SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
+            .minecraftVersion("1.21.50 - 1.21.51")
+            .build());
     }
 
     /**

From f24ba549df44c2effec31b9ba82d319321b1129a Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 12 Dec 2024 09:13:04 +0800
Subject: [PATCH 119/165] Target master branch for mappings

---
 core/src/main/resources/mappings | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index e8089e117..8707dd144 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit e8089e117605e60a5ced120926c49fae7617c665
+Subproject commit 8707dd144b20632f4a2f4b5497d8e5fb211e6c93

From c8dadd8342c5c8fba14a5da962700f741c3b116b Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Sat, 14 Dec 2024 18:31:24 +0000
Subject: [PATCH 120/165] Remove Java attribute entity type prefixes (#5228)

---
 .../entity/attribute/GeyserAttributeType.java | 28 +++++++++----------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java b/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java
index 833f2f46d..10e93810e 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/attribute/GeyserAttributeType.java
@@ -35,22 +35,22 @@ import lombok.Getter;
 public enum GeyserAttributeType {
 
     // Universal Attributes
-    FOLLOW_RANGE("minecraft:generic.follow_range", "minecraft:follow_range", 0f, 2048f, 32f),
-    KNOCKBACK_RESISTANCE("minecraft:generic.knockback_resistance", "minecraft:knockback_resistance", 0f, 1f, 0f),
-    MOVEMENT_SPEED("minecraft:generic.movement_speed", "minecraft:movement", 0f, 1024f, 0.1f),
-    FLYING_SPEED("minecraft:generic.flying_speed", "minecraft:movement", 0.0f, 1024.0f, 0.4000000059604645f),
-    ATTACK_DAMAGE("minecraft:generic.attack_damage", "minecraft:attack_damage", 0f, 2048f, 1f),
-    HORSE_JUMP_STRENGTH("minecraft:horse.jump_strength", "minecraft:horse.jump_strength", 0.0f, 2.0f, 0.7f),
-    LUCK("minecraft:generic.luck", "minecraft:luck", -1024f, 1024f, 0f),
+    FOLLOW_RANGE("minecraft:follow_range", "minecraft:follow_range", 0f, 2048f, 32f),
+    KNOCKBACK_RESISTANCE("minecraft:knockback_resistance", "minecraft:knockback_resistance", 0f, 1f, 0f),
+    MOVEMENT_SPEED("minecraft:movement_speed", "minecraft:movement", 0f, 1024f, 0.1f),
+    FLYING_SPEED("minecraft:flying_speed", "minecraft:movement", 0.0f, 1024.0f, 0.4000000059604645f),
+    ATTACK_DAMAGE("minecraft:attack_damage", "minecraft:attack_damage", 0f, 2048f, 1f),
+    HORSE_JUMP_STRENGTH("minecraft:jump_strength", "minecraft:horse.jump_strength", 0.0f, 2.0f, 0.7f),
+    LUCK("minecraft:luck", "minecraft:luck", -1024f, 1024f, 0f),
 
     // Java Attributes
-    ARMOR("minecraft:generic.armor", null, 0f, 30f, 0f),
-    ARMOR_TOUGHNESS("minecraft:generic.armor_toughness", null, 0F, 20f, 0f),
-    ATTACK_KNOCKBACK("minecraft:generic.attack_knockback", null, 1.5f, Float.MAX_VALUE, 0f),
-    ATTACK_SPEED("minecraft:generic.attack_speed", null, 0f, 1024f, 4f),
-    MAX_HEALTH("minecraft:generic.max_health", null, 0f, 1024f, 20f),
-    SCALE("minecraft:generic.scale", null, 0.0625f, 16f, 1f),
-    BLOCK_INTERACTION_RANGE("minecraft:player.block_interaction_range", null, 0.0f, 64f, 4.5f),
+    ARMOR("minecraft:armor", null, 0f, 30f, 0f),
+    ARMOR_TOUGHNESS("minecraft:armor_toughness", null, 0F, 20f, 0f),
+    ATTACK_KNOCKBACK("minecraft:attack_knockback", null, 1.5f, Float.MAX_VALUE, 0f),
+    ATTACK_SPEED("minecraft:attack_speed", null, 0f, 1024f, 4f),
+    MAX_HEALTH("minecraft:max_health", null, 0f, 1024f, 20f),
+    SCALE("minecraft:scale", null, 0.0625f, 16f, 1f),
+    BLOCK_INTERACTION_RANGE("minecraft:block_interaction_range", null, 0.0f, 64f, 4.5f),
     MINING_EFFICIENCY("minecraft:mining_efficiency", null, 0f, 1024f, 0f),
     BLOCK_BREAK_SPEED("minecraft:block_break_speed", null, 0f, 1024f, 1f),
     SUBMERGED_MINING_SPEED("minecraft:submerged_mining_speed", null, 0f, 20f, 0.2f),

From 54bdb639cba95b19d0d50f2727c8421d8754972f Mon Sep 17 00:00:00 2001
From: AlexDev_ <56083016+alexdev03@users.noreply.github.com>
Date: Sun, 15 Dec 2024 16:15:55 +0100
Subject: [PATCH 121/165] Fix for plugins that use display entities as nametag
 (#5157)

* Fix for display entity nametags

* Added check

* Moved lines count to TextDisplayEntity class
Removed useless offset

* Reset lines when text is null

* Conversation changes

* Changed y offset formula
Removed space

* Played around with the yOffset a bit

---------

Co-authored-by: Tim203 <mctim203@gmail.com>
---
 .../geyser/entity/type/TextDisplayEntity.java    | 16 ++++++++++++++++
 .../org/geysermc/geyser/util/EntityUtils.java    | 12 ++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
index 8b47ce1ed..0cd207c52 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
@@ -25,18 +25,25 @@
 
 package org.geysermc.geyser.entity.type;
 
+import lombok.Getter;
 import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
+import org.jetbrains.annotations.Nullable;
 
 import java.util.UUID;
 
 // Note: 1.19.4 requires that the billboard is set to something in order to show, on Java Edition
+@Getter
 public class TextDisplayEntity extends DisplayBaseEntity {
+
+    private int lineCount;
+
     public TextDisplayEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position.add(0, definition.offset(), 0), motion, yaw, pitch, headYaw);
     }
@@ -61,5 +68,14 @@ public class TextDisplayEntity extends DisplayBaseEntity {
 
     public void setText(EntityMetadata<Component, ?> entityMetadata) {
         this.dirtyMetadata.put(EntityDataTypes.NAME, MessageTranslator.convertMessage(entityMetadata.getValue()));
+        calculateLineCount(entityMetadata.getValue());
+    }
+
+    private void calculateLineCount(@Nullable Component text) {
+        if (text == null) {
+            lineCount = 0;
+            return;
+        }
+        lineCount = PlainTextComponentSerializer.plainText().serialize(text).split("\n").length;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
index 034975b15..388162a49 100644
--- a/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/EntityUtils.java
@@ -209,6 +209,18 @@ public final class EntityUtils {
                         zOffset = displayTranslation.getZ();
                     }
                 }
+                case PLAYER -> {
+                    if (passenger instanceof TextDisplayEntity textDisplay) {
+                        Vector3f displayTranslation = textDisplay.getTranslation();
+                        int lines = textDisplay.getLineCount();
+                        if (displayTranslation != null && lines != 0) {
+                            float multiplier = .1414f;
+                            xOffset = displayTranslation.getX();
+                            yOffset += displayTranslation.getY() + multiplier * lines;
+                            zOffset = displayTranslation.getZ();
+                        }
+                    }
+                }
             }
             if (mount instanceof ChestBoatEntity) {
                 xOffset = 0.15F;

From a5c77a707241e07dae5654d17de1e1fd2ceec022 Mon Sep 17 00:00:00 2001
From: rtm516 <rtm516@users.noreply.github.com>
Date: Sun, 15 Dec 2024 22:40:14 +0000
Subject: [PATCH 122/165] Add extension update folder (#4929)

* Add extension update folder

* Check the update folder exists before trying to use it

* Remove old jars under different names for the same extensions

* Store file path to save on calls

* Fix storing path

* Update languages

* Update core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java

Co-authored-by: chris <github@onechris.mozmail.com>

* Only pull data from the map once

* Update core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java

Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com>

* Move to consumer function for processing extension folders

* Add back some comments

* Allow cleanup of multiple old extensions

* Address review comments

* Tidy logger calls

---------

Co-authored-by: chris <github@onechris.mozmail.com>
Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com>
---
 .../extension/GeyserExtensionLoader.java      | 136 ++++++++++++------
 .../geyser/util/ThrowingBiConsumer.java       |  42 ++++++
 2 files changed, 136 insertions(+), 42 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/util/ThrowingBiConsumer.java

diff --git a/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java b/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java
index a56e00671..10cbcf556 100644
--- a/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/extension/GeyserExtensionLoader.java
@@ -31,6 +31,7 @@ import lombok.RequiredArgsConstructor;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.api.util.ApiVersion;
 import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.api.GeyserApi;
 import org.geysermc.geyser.api.event.ExtensionEventBus;
 import org.geysermc.geyser.api.extension.Extension;
@@ -42,6 +43,7 @@ import org.geysermc.geyser.api.extension.exception.InvalidDescriptionException;
 import org.geysermc.geyser.api.extension.exception.InvalidExtensionException;
 import org.geysermc.geyser.extension.event.GeyserExtensionEventBus;
 import org.geysermc.geyser.text.GeyserLocale;
+import org.geysermc.geyser.util.ThrowingBiConsumer;
 
 import java.io.IOException;
 import java.io.Reader;
@@ -51,10 +53,12 @@ import java.nio.file.Files;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.BiConsumer;
 import java.util.regex.Pattern;
 
 @RequiredArgsConstructor
@@ -155,6 +159,7 @@ public class GeyserExtensionLoader extends ExtensionLoader {
 
     @Override
     protected void loadAllExtensions(@NonNull ExtensionManager extensionManager) {
+        GeyserLogger logger = GeyserImpl.getInstance().getLogger();
         try {
             if (Files.notExists(extensionsDirectory)) {
                 Files.createDirectory(extensionsDirectory);
@@ -163,55 +168,68 @@ public class GeyserExtensionLoader extends ExtensionLoader {
             Map<String, Path> extensions = new LinkedHashMap<>();
             Map<String, GeyserExtensionContainer> loadedExtensions = new LinkedHashMap<>();
 
-            Pattern[] extensionFilters = this.extensionFilters();
-            List<Path> extensionPaths = Files.walk(extensionsDirectory).toList();
-            extensionPaths.forEach(path -> {
-                if (Files.isDirectory(path)) {
-                    return;
-                }
+            Path updateDirectory = extensionsDirectory.resolve("update");
+            if (Files.isDirectory(updateDirectory)) {
+                // Step 1: Collect the extension files that currently exist so they can be replaced
+                Map<String, List<Path>> extensionFiles = new HashMap<>();
+                this.processExtensionsFolder(extensionsDirectory, (path, description) -> {
+                    extensionFiles.computeIfAbsent(description.id(), k -> new ArrayList<>()).add(path);
+                }, (path, e) -> {
+                    // this file will throw again when we actually try to load extensions, and it will be handled there
+                });
 
-                for (Pattern filter : extensionFilters) {
-                    if (!filter.matcher(path.getFileName().toString()).matches()) {
-                        return;
-                    }
-                }
-
-                try {
-                    GeyserExtensionDescription description = this.extensionDescription(path);
-
-                    String name = description.name();
-                    String id = description.id();
-                    if (extensions.containsKey(id) || extensionManager.extension(id) != null) {
-                        GeyserImpl.getInstance().getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.extensions.load.duplicate", name, path.toString()));
-                        return;
-                    }
-
-                    // Check whether an extensions' requested api version is compatible
-                    ApiVersion.Compatibility compatibility = GeyserApi.api().geyserApiVersion().supportsRequestedVersion(
-                        description.humanApiVersion(),
-                        description.majorApiVersion(),
-                        description.minorApiVersion()
-                    );
-
-                    if (compatibility != ApiVersion.Compatibility.COMPATIBLE) {
-                        // Workaround for the switch to the Geyser API version instead of the Base API version in extensions
-                        if (compatibility == ApiVersion.Compatibility.HUMAN_DIFFER && description.humanApiVersion() == 1) {
-                            GeyserImpl.getInstance().getLogger().warning("The extension %s requested the Base API version %s, which is deprecated in favor of specifying the Geyser API version. Please update the extension, or contact its developer."
-                                .formatted(name, description.apiVersion()));
-                        } else {
-                            GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.extensions.load.failed_api_version", name, description.apiVersion()));
-                            return;
+                // Step 2: Move the updated/new extensions
+                this.processExtensionsFolder(updateDirectory, (path, description) -> {
+                    // Remove the old extension files with the same ID if it exists
+                    List<Path> oldExtensionFiles = extensionFiles.get(description.id());
+                    if (oldExtensionFiles != null) {
+                        for (Path oldExtensionFile : oldExtensionFiles) {
+                            Files.delete(oldExtensionFile);
                         }
                     }
 
-                    GeyserExtensionContainer container = this.loadExtension(path, description);
-                    extensions.put(id, path);
-                    loadedExtensions.put(id, container);
-                } catch (Throwable e) {
-                    GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.extensions.load.failed_with_name", path.getFileName(), path.toAbsolutePath()), e);
+                    // Overwrite the extension with the new jar
+                    Files.move(path, extensionsDirectory.resolve(path.getFileName()), StandardCopyOption.REPLACE_EXISTING);
+                }, (path, e) -> {
+                    logger.error(GeyserLocale.getLocaleStringLog("geyser.extensions.update.failed", path.getFileName()), e);
+                });
+            }
+
+            // Step 3: Load the extensions
+            this.processExtensionsFolder(extensionsDirectory, (path, description) -> {
+                String name = description.name();
+                String id = description.id();
+                if (extensions.containsKey(id) || extensionManager.extension(id) != null) {
+                    logger.warning(GeyserLocale.getLocaleStringLog("geyser.extensions.load.duplicate", name, path.toString()));
+                    return;
                 }
+
+                // Check whether an extensions' requested api version is compatible
+                ApiVersion.Compatibility compatibility = GeyserApi.api().geyserApiVersion().supportsRequestedVersion(
+                    description.humanApiVersion(),
+                    description.majorApiVersion(),
+                    description.minorApiVersion()
+                );
+
+                if (compatibility != ApiVersion.Compatibility.COMPATIBLE) {
+                    // Workaround for the switch to the Geyser API version instead of the Base API version in extensions
+                    if (compatibility == ApiVersion.Compatibility.HUMAN_DIFFER && description.humanApiVersion() == 1) {
+                        logger.warning("The extension %s requested the Base API version %s, which is deprecated in favor of specifying the Geyser API version. Please update the extension, or contact its developer."
+                            .formatted(name, description.apiVersion()));
+                    } else {
+                        logger.error(GeyserLocale.getLocaleStringLog("geyser.extensions.load.failed_api_version", name, description.apiVersion()));
+                        return;
+                    }
+                }
+
+                GeyserExtensionContainer container = this.loadExtension(path, description);
+                extensions.put(id, path);
+                loadedExtensions.put(id, container);
+            }, (path, e) -> {
+                logger.error(GeyserLocale.getLocaleStringLog("geyser.extensions.load.failed_with_name", path.getFileName(), path.toAbsolutePath()), e);
             });
 
+            // Step 4: Register the extensions
             for (GeyserExtensionContainer container : loadedExtensions.values()) {
                 this.extensionContainers.put(container.extension(), container);
                 this.register(container.extension(), extensionManager);
@@ -221,6 +239,40 @@ public class GeyserExtensionLoader extends ExtensionLoader {
         }
     }
 
+    /**
+     * Process extension jars in a folder and call the accept or reject consumer based on the result
+     *
+     * @param directory the directory to process
+     * @param accept the consumer to call when an extension is accepted
+     * @param reject the consumer to call when an extension is rejected
+     * @throws IOException if an I/O error occurs
+     */
+    private void processExtensionsFolder(Path directory, ThrowingBiConsumer<Path, GeyserExtensionDescription> accept, BiConsumer<Path, Throwable> reject) throws IOException {
+        List<Path> extensionPaths = Files.list(directory).toList();
+        Pattern[] extensionFilters = this.extensionFilters();
+        extensionPaths.forEach(path -> {
+            if (Files.isDirectory(path)) {
+                return;
+            }
+
+            // Only look at files that meet the extension filter
+            for (Pattern filter : extensionFilters) {
+                if (!filter.matcher(path.getFileName().toString()).matches()) {
+                    return;
+                }
+            }
+
+            try {
+                // Try load the description, so we know it's a valid extension
+                GeyserExtensionDescription description = this.extensionDescription(path);
+
+                accept.acceptThrows(path, description);
+            } catch (Throwable e) {
+                reject.accept(path, e);
+            }
+        });
+    }
+
     @Override
     protected boolean isEnabled(@NonNull Extension extension) {
         return this.extensionContainers.get(extension).enabled;
diff --git a/core/src/main/java/org/geysermc/geyser/util/ThrowingBiConsumer.java b/core/src/main/java/org/geysermc/geyser/util/ThrowingBiConsumer.java
new file mode 100644
index 000000000..96adbb5c9
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/util/ThrowingBiConsumer.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.util;
+
+import java.util.function.BiConsumer;
+
+@FunctionalInterface
+public interface ThrowingBiConsumer<T, U> extends BiConsumer<T, U> {
+    @Override
+    default void accept(T t, U u) {
+        try {
+            acceptThrows(t, u);
+        } catch (Throwable e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    void acceptThrows(T t, U u) throws Throwable;
+}

From 64c7adcacfb1ad39c7035ab0c9ccf81468e75485 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Mon, 16 Dec 2024 10:54:36 +0800
Subject: [PATCH 123/165] Fix: Geyser-Spigot not loading on 1.16.5, remove
 unused code

---
 .../geyser/entity/type/BoatEntity.java        | 34 ++++++-------------
 .../geyser/entity/type/ChestBoatEntity.java   |  6 ----
 .../DataComponentRegistryPopulator.java       |  3 +-
 gradle/libs.versions.toml                     |  6 ++--
 4 files changed, 16 insertions(+), 33 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
index 04df96361..7d789fb2a 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/BoatEntity.java
@@ -32,8 +32,6 @@ import org.cloudburstmc.protocol.bedrock.packet.AnimatePacket;
 import org.cloudburstmc.protocol.bedrock.packet.MoveEntityAbsolutePacket;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.EntityDefinitions;
-import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
@@ -220,10 +218,6 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
         return leashHolderBedrockId;
     }
 
-    public Item getPickItem() {
-        return variant.pickItem;
-    }
-
     private void sendAnimationPacket(GeyserSession session, Entity rower, AnimatePacket.Action action, float rowTime) {
         AnimatePacket packet = new AnimatePacket();
         packet.setRuntimeEntityId(rower.getGeyserId());
@@ -236,23 +230,17 @@ public class BoatEntity extends Entity implements Leashable, Tickable {
      * Ordered by Bedrock ordinal
      */
     public enum BoatVariant {
-        OAK(Items.OAK_BOAT, Items.OAK_CHEST_BOAT),
-        SPRUCE(Items.SPRUCE_BOAT, Items.SPRUCE_CHEST_BOAT),
-        BIRCH(Items.BIRCH_BOAT, Items.BIRCH_CHEST_BOAT),
-        JUNGLE(Items.JUNGLE_BOAT, Items.JUNGLE_CHEST_BOAT),
-        ACACIA(Items.ACACIA_BOAT, Items.ACACIA_CHEST_BOAT),
-        DARK_OAK(Items.DARK_OAK_BOAT, Items.DARK_OAK_CHEST_BOAT),
-        MANGROVE(Items.MANGROVE_BOAT, Items.MANGROVE_CHEST_BOAT),
-        BAMBOO(Items.BAMBOO_RAFT, Items.BAMBOO_CHEST_RAFT),
-        CHERRY(Items.CHERRY_BOAT, Items.CHERRY_CHEST_BOAT),
-        PALE_OAK(Items.PALE_OAK_BOAT, Items.PALE_OAK_CHEST_BOAT);
+        OAK,
+        SPRUCE,
+        BIRCH,
+        JUNGLE,
+        ACACIA,
+        DARK_OAK,
+        MANGROVE,
+        BAMBOO,
+        CHERRY,
+        PALE_OAK;
 
-        private final Item pickItem;
-        final Item chestPickItem;
-
-        BoatVariant(Item pickItem, Item chestPickItem) {
-            this.pickItem = pickItem;
-            this.chestPickItem = chestPickItem;
-        }
+        BoatVariant() {}
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java
index 967da41df..5475ca772 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ChestBoatEntity.java
@@ -27,7 +27,6 @@ package org.geysermc.geyser.entity.type;
 
 import org.cloudburstmc.math.vector.Vector3f;
 import org.geysermc.geyser.entity.EntityDefinition;
-import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
@@ -49,9 +48,4 @@ public class ChestBoatEntity extends BoatEntity {
     public InteractionResult interact(Hand hand) {
         return passengers.isEmpty() && !session.isSneaking() ? super.interact(hand) : InteractionResult.SUCCESS;
     }
-
-    @Override
-    public Item getPickItem() {
-        return this.variant.chestPickItem;
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
index 386c795d2..d8547bbfc 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
@@ -55,7 +55,8 @@ public final class DataComponentRegistryPopulator {
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
         List<DataComponents> defaultComponents;
         try (InputStream stream = bootstrap.getResourceOrThrow("java/item_data_components.json")) {
-            JsonElement rootElement = JsonParser.parseReader(new InputStreamReader(stream));
+            //noinspection deprecation - 1.16.5 breaks otherwise
+            JsonElement rootElement = new JsonParser().parse(new InputStreamReader(stream));
             JsonArray jsonArray = rootElement.getAsJsonArray();
 
             defaultComponents = new ObjectArrayList<>(jsonArray.size());
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1166bab35..b90436644 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta5-20241203.200249-19"
-protocol-common = "3.0.0.Beta5-20241203.200249-19"
-protocol-codec = "3.0.0.Beta5-20241203.200249-19"
+protocol-connection = "3.0.0.Beta5-20241213.160944-20"
+protocol-common = "3.0.0.Beta5-20241213.160944-20"
+protocol-codec = "3.0.0.Beta5-20241213.160944-20"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.4-SNAPSHOT"

From 006fe75e5af5f5686fb18051415663cb8ceaaa1b Mon Sep 17 00:00:00 2001
From: Adri <adrigamer2950@gmail.com>
Date: Sun, 22 Dec 2024 03:51:13 +0100
Subject: [PATCH 124/165] fix: Wrong map colors (#5238)

---
 .../org/geysermc/geyser/level/MapColor.java   | 416 +++++++++---------
 1 file changed, 208 insertions(+), 208 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/level/MapColor.java b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
index a599f9146..f4b4fb697 100644
--- a/core/src/main/java/org/geysermc/geyser/level/MapColor.java
+++ b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
@@ -30,26 +30,26 @@ public enum MapColor {
     COLOR_1(-1, -1, -1),
     COLOR_2(-1, -1, -1),
     COLOR_3(-1, -1, -1),
-    COLOR_4(89, 125, 39),
-    COLOR_5(109, 153, 48),
-    COLOR_6(127, 178, 56),
-    COLOR_7(67, 94, 29),
-    COLOR_8(174, 164, 115),
-    COLOR_9(213, 201, 140),
-    COLOR_10(247, 233, 163),
-    COLOR_11(130, 123, 86),
+    COLOR_4(39, 125, 89),
+    COLOR_5(48, 153, 109),
+    COLOR_6(56, 178, 127),
+    COLOR_7(29, 94, 67),
+    COLOR_8(115, 164, 174),
+    COLOR_9(140, 201, 213),
+    COLOR_10(163, 233, 247),
+    COLOR_11(86, 123, 130),
     COLOR_12(140, 140, 140),
     COLOR_13(171, 171, 171),
     COLOR_14(199, 199, 199),
     COLOR_15(105, 105, 105),
-    COLOR_16(180, 0, 0),
-    COLOR_17(220, 0, 0),
-    COLOR_18(255, 0, 0),
-    COLOR_19(135, 0, 0),
-    COLOR_20(112, 112, 180),
-    COLOR_21(138, 138, 220),
-    COLOR_22(160, 160, 255),
-    COLOR_23(84, 84, 135),
+    COLOR_16(0, 0, 180),
+    COLOR_17(0, 0, 220),
+    COLOR_18(0, 0, 255),
+    COLOR_19(0, 0, 135),
+    COLOR_20(180, 112, 112),
+    COLOR_21(220, 138, 138),
+    COLOR_22(255, 160, 160),
+    COLOR_23(135, 84, 84),
     COLOR_24(117, 117, 117),
     COLOR_25(144, 144, 144),
     COLOR_26(167, 167, 167),
@@ -62,54 +62,54 @@ public enum MapColor {
     COLOR_33(220, 220, 220),
     COLOR_34(255, 255, 255),
     COLOR_35(135, 135, 135),
-    COLOR_36(115, 118, 129),
-    COLOR_37(141, 144, 158),
-    COLOR_38(164, 168, 184),
-    COLOR_39(86, 88, 97),
-    COLOR_40(106, 76, 54),
-    COLOR_41(130, 94, 66),
-    COLOR_42(151, 109, 77),
-    COLOR_43(79, 57, 40),
+    COLOR_36(129, 118, 115),
+    COLOR_37(158, 144, 141),
+    COLOR_38(184, 168, 164),
+    COLOR_39(97, 88, 86),
+    COLOR_40(54, 76, 106),
+    COLOR_41(66, 94, 130),
+    COLOR_42(77, 109, 151),
+    COLOR_43(40, 57, 79),
     COLOR_44(79, 79, 79),
     COLOR_45(96, 96, 96),
     COLOR_46(112, 112, 112),
     COLOR_47(59, 59, 59),
-    COLOR_48(45, 45, 180),
-    COLOR_49(55, 55, 220),
-    COLOR_50(64, 64, 255),
-    COLOR_51(33, 33, 135),
-    COLOR_52(100, 84, 50),
-    COLOR_53(123, 102, 62),
-    COLOR_54(143, 119, 72),
-    COLOR_55(75, 63, 38),
-    COLOR_56(180, 177, 172),
-    COLOR_57(220, 217, 211),
-    COLOR_58(255, 252, 245),
-    COLOR_59(135, 133, 129),
-    COLOR_60(152, 89, 36),
-    COLOR_61(186, 109, 44),
-    COLOR_62(216, 127, 51),
-    COLOR_63(114, 67, 27),
-    COLOR_64(125, 53, 152),
-    COLOR_65(153, 65, 186),
-    COLOR_66(178, 76, 216),
-    COLOR_67(94, 40, 114),
-    COLOR_68(72, 108, 152),
-    COLOR_69(88, 132, 186),
-    COLOR_70(102, 153, 216),
-    COLOR_71(54, 81, 114),
-    COLOR_72(161, 161, 36),
-    COLOR_73(197, 197, 44),
-    COLOR_74(229, 229, 51),
-    COLOR_75(121, 121, 27),
-    COLOR_76(89, 144, 17),
-    COLOR_77(109, 176, 21),
-    COLOR_78(127, 204, 25),
-    COLOR_79(67, 108, 13),
-    COLOR_80(170, 89, 116),
-    COLOR_81(208, 109, 142),
-    COLOR_82(242, 127, 165),
-    COLOR_83(128, 67, 87),
+    COLOR_48(180, 45, 45),
+    COLOR_49(220, 55, 55),
+    COLOR_50(255, 64, 64),
+    COLOR_51(135, 33, 33),
+    COLOR_52(50, 84, 100),
+    COLOR_53(62, 102, 123),
+    COLOR_54(72, 119, 143),
+    COLOR_55(38, 63, 75),
+    COLOR_56(172, 177, 180),
+    COLOR_57(211, 217, 220),
+    COLOR_58(245, 252, 255),
+    COLOR_59(129, 133, 135),
+    COLOR_60(36, 89, 152),
+    COLOR_61(44, 109, 186),
+    COLOR_62(51, 127, 216),
+    COLOR_63(27, 67, 114),
+    COLOR_64(152, 53, 125),
+    COLOR_65(186, 65, 153),
+    COLOR_66(216, 76, 178),
+    COLOR_67(114, 40, 94),
+    COLOR_68(152, 108, 72),
+    COLOR_69(186, 132, 88),
+    COLOR_70(216, 153, 102),
+    COLOR_71(114, 81, 54),
+    COLOR_72(36, 161, 161),
+    COLOR_73(44, 197, 197),
+    COLOR_74(51, 229, 229),
+    COLOR_75(27, 121, 121),
+    COLOR_76(17, 144, 89),
+    COLOR_77(21, 176, 109),
+    COLOR_78(25, 204, 127),
+    COLOR_79(13, 108, 67),
+    COLOR_80(116, 89, 170),
+    COLOR_81(142, 109, 208),
+    COLOR_82(165, 127, 242),
+    COLOR_83(87, 67, 128),
     COLOR_84(53, 53, 53),
     COLOR_85(65, 65, 65),
     COLOR_86(76, 76, 76),
@@ -118,162 +118,162 @@ public enum MapColor {
     COLOR_89(132, 132, 132),
     COLOR_90(153, 153, 153),
     COLOR_91(81, 81, 81),
-    COLOR_92(53, 89, 108),
-    COLOR_93(65, 109, 132),
-    COLOR_94(76, 127, 153),
-    COLOR_95(40, 67, 81),
-    COLOR_96(89, 44, 125),
-    COLOR_97(109, 54, 153),
-    COLOR_98(127, 63, 178),
-    COLOR_99(67, 33, 94),
-    COLOR_100(36, 53, 125),
-    COLOR_101(44, 65, 153),
-    COLOR_102(51, 76, 178),
-    COLOR_103(27, 40, 94),
-    COLOR_104(72, 53, 36),
-    COLOR_105(88, 65, 44),
-    COLOR_106(102, 76, 51),
-    COLOR_107(54, 40, 27),
-    COLOR_108(72, 89, 36),
-    COLOR_109(88, 109, 44),
-    COLOR_110(102, 127, 51),
-    COLOR_111(54, 67, 27),
-    COLOR_112(108, 36, 36),
-    COLOR_113(132, 44, 44),
-    COLOR_114(153, 51, 51),
-    COLOR_115(81, 27, 27),
+    COLOR_92(108, 89, 53),
+    COLOR_93(132, 109, 65),
+    COLOR_94(153, 127, 76),
+    COLOR_95(81, 67, 40),
+    COLOR_96(125, 44, 89),
+    COLOR_97(153, 54, 109),
+    COLOR_98(178, 63, 127),
+    COLOR_99(94, 33, 67),
+    COLOR_100(125, 53, 36),
+    COLOR_101(153, 65, 44),
+    COLOR_102(178, 76, 51),
+    COLOR_103(94, 40, 27),
+    COLOR_104(36, 53, 72),
+    COLOR_105(44, 65, 88),
+    COLOR_106(51, 76, 102),
+    COLOR_107(27, 40, 54),
+    COLOR_108(36, 89, 72),
+    COLOR_109(44, 109, 88),
+    COLOR_110(51, 127, 102),
+    COLOR_111(27, 67, 54),
+    COLOR_112(36, 36, 108),
+    COLOR_113(44, 44, 132),
+    COLOR_114(51, 51, 153),
+    COLOR_115(27, 27, 81),
     COLOR_116(17, 17, 17),
     COLOR_117(21, 21, 21),
     COLOR_118(25, 25, 25),
     COLOR_119(13, 13, 13),
-    COLOR_120(176, 168, 54),
-    COLOR_121(215, 205, 66),
-    COLOR_122(250, 238, 77),
-    COLOR_123(132, 126, 40),
-    COLOR_124(64, 154, 150),
-    COLOR_125(79, 188, 183),
-    COLOR_126(92, 219, 213),
-    COLOR_127(48, 115, 112),
-    COLOR_128(52, 90, 180),
-    COLOR_129(63, 110, 220),
-    COLOR_130(74, 128, 255),
-    COLOR_131(39, 67, 135),
-    COLOR_132(0, 153, 40),
-    COLOR_133(0, 187, 50),
-    COLOR_134(0, 217, 58),
-    COLOR_135(0, 114, 30),
-    COLOR_136(91, 60, 34),
-    COLOR_137(111, 74, 42),
-    COLOR_138(129, 86, 49),
-    COLOR_139(68, 45, 25),
-    COLOR_140(79, 1, 0),
-    COLOR_141(96, 1, 0),
-    COLOR_142(112, 2, 0),
-    COLOR_143(59, 1, 0),
-    COLOR_144(147, 124, 113),
-    COLOR_145(180, 152, 138),
-    COLOR_146(209, 177, 161),
-    COLOR_147(110, 93, 85),
-    COLOR_148(112, 57, 25),
-    COLOR_149(137, 70, 31),
-    COLOR_150(159, 82, 36),
-    COLOR_151(84, 43, 19),
-    COLOR_152(105, 61, 76),
-    COLOR_153(128, 75, 93),
-    COLOR_154(149, 87, 108),
-    COLOR_155(78, 46, 57),
-    COLOR_156(79, 76, 97),
-    COLOR_157(96, 93, 119),
-    COLOR_158(112, 108, 138),
-    COLOR_159(59, 57, 73),
-    COLOR_160(131, 93, 25),
-    COLOR_161(160, 114, 31),
-    COLOR_162(186, 133, 36),
-    COLOR_163(98, 70, 19),
-    COLOR_164(72, 82, 37),
-    COLOR_165(88, 100, 45),
-    COLOR_166(103, 117, 53),
-    COLOR_167(54, 61, 28),
-    COLOR_168(112, 54, 55),
-    COLOR_169(138, 66, 67),
-    COLOR_170(160, 77, 78),
-    COLOR_171(84, 40, 41),
-    COLOR_172(40, 28, 24),
-    COLOR_173(49, 35, 30),
-    COLOR_174(57, 41, 35),
-    COLOR_175(30, 21, 18),
-    COLOR_176(95, 75, 69),
-    COLOR_177(116, 92, 84),
-    COLOR_178(135, 107, 98),
-    COLOR_179(71, 56, 51),
-    COLOR_180(61, 64, 64),
-    COLOR_181(75, 79, 79),
-    COLOR_182(87, 92, 92),
-    COLOR_183(46, 48, 48),
-    COLOR_184(86, 51, 62),
-    COLOR_185(105, 62, 75),
-    COLOR_186(122, 73, 88),
-    COLOR_187(64, 38, 46),
-    COLOR_188(53, 43, 64),
-    COLOR_189(65, 53, 79),
-    COLOR_190(76, 62, 92),
-    COLOR_191(40, 32, 48),
-    COLOR_192(53, 35, 24),
-    COLOR_193(65, 43, 30),
-    COLOR_194(76, 50, 35),
-    COLOR_195(40, 26, 18),
-    COLOR_196(53, 57, 29),
-    COLOR_197(65, 70, 36),
-    COLOR_198(76, 82, 42),
-    COLOR_199(40, 43, 22),
-    COLOR_200(100, 42, 32),
-    COLOR_201(122, 51, 39),
-    COLOR_202(142, 60, 46),
-    COLOR_203(75, 31, 24),
-    COLOR_204(26, 15, 11),
-    COLOR_205(31, 18, 13),
-    COLOR_206(37, 22, 16),
-    COLOR_207(19, 11, 8),
-    COLOR_208(133, 33, 34),
-    COLOR_209(163, 41, 42),
-    COLOR_210(189, 48, 49),
-    COLOR_211(100, 25, 25),
-    COLOR_212(104, 44, 68),
-    COLOR_213(127, 54, 83),
-    COLOR_214(148, 63, 97),
-    COLOR_215(78, 33, 51),
-    COLOR_216(64, 17, 20),
-    COLOR_217(79, 21, 25),
-    COLOR_218(92, 25, 29),
-    COLOR_219(48, 13, 15),
-    COLOR_220(15, 88, 94),
-    COLOR_221(18, 108, 115),
-    COLOR_222(22, 126, 134),
-    COLOR_223(11, 66, 70),
-    COLOR_224(40, 100, 98),
-    COLOR_225(50, 122, 120),
-    COLOR_226(58, 142, 140),
-    COLOR_227(30, 75, 74),
-    COLOR_228(60, 31, 43),
-    COLOR_229(74, 37, 53),
-    COLOR_230(86, 44, 62),
-    COLOR_231(45, 23, 32),
-    COLOR_232(14, 127, 93),
-    COLOR_233(17, 155, 114),
-    COLOR_234(20, 180, 133),
-    COLOR_235(10, 95, 70),
+    COLOR_120(54, 168, 176),
+    COLOR_121(66, 205, 215),
+    COLOR_122(77, 238, 250),
+    COLOR_123(40, 126, 132),
+    COLOR_124(150, 154, 64),
+    COLOR_125(183, 188, 79),
+    COLOR_126(213, 219, 92),
+    COLOR_127(112, 115, 48),
+    COLOR_128(180, 90, 52),
+    COLOR_129(220, 110, 63),
+    COLOR_130(255, 128, 74),
+    COLOR_131(135, 67, 39),
+    COLOR_132(40, 153, 0),
+    COLOR_133(50, 187, 0),
+    COLOR_134(58, 217, 0),
+    COLOR_135(30, 114, 0),
+    COLOR_136(34, 60, 91),
+    COLOR_137(42, 74, 111),
+    COLOR_138(49, 86, 129),
+    COLOR_139(25, 45, 68),
+    COLOR_140(0, 1, 79),
+    COLOR_141(0, 1, 96),
+    COLOR_142(0, 2, 112),
+    COLOR_143(0, 1, 59),
+    COLOR_144(113, 124, 147),
+    COLOR_145(138, 152, 180),
+    COLOR_146(161, 177, 209),
+    COLOR_147(85, 93, 110),
+    COLOR_148(25, 57, 112),
+    COLOR_149(31, 70, 137),
+    COLOR_150(36, 82, 159),
+    COLOR_151(19, 43, 84),
+    COLOR_152(76, 61, 105),
+    COLOR_153(93, 75, 128),
+    COLOR_154(108, 87, 149),
+    COLOR_155(57, 46, 78),
+    COLOR_156(97, 76, 79),
+    COLOR_157(119, 93, 96),
+    COLOR_158(138, 108, 112),
+    COLOR_159(73, 57, 59),
+    COLOR_160(25, 93, 131),
+    COLOR_161(31, 114, 160),
+    COLOR_162(36, 133, 186),
+    COLOR_163(19, 70, 98),
+    COLOR_164(37, 82, 72),
+    COLOR_165(45, 100, 88),
+    COLOR_166(53, 117, 103),
+    COLOR_167(28, 61, 54),
+    COLOR_168(55, 54, 112),
+    COLOR_169(67, 66, 138),
+    COLOR_170(78, 77, 160),
+    COLOR_171(41, 40, 84),
+    COLOR_172(24, 28, 40),
+    COLOR_173(30, 35, 49),
+    COLOR_174(35, 41, 57),
+    COLOR_175(18, 21, 30),
+    COLOR_176(69, 75, 95),
+    COLOR_177(84, 92, 116),
+    COLOR_178(98, 107, 135),
+    COLOR_179(51, 56, 71),
+    COLOR_180(64, 64, 61),
+    COLOR_181(79, 79, 75),
+    COLOR_182(92, 92, 87),
+    COLOR_183(48, 48, 46),
+    COLOR_184(62, 51, 86),
+    COLOR_185(75, 62, 105),
+    COLOR_186(88, 73, 122),
+    COLOR_187(46, 38, 64),
+    COLOR_188(64, 43, 53),
+    COLOR_189(79, 53, 65),
+    COLOR_190(92, 62, 76),
+    COLOR_191(48, 32, 40),
+    COLOR_192(24, 35, 53),
+    COLOR_193(30, 43, 65),
+    COLOR_194(35, 50, 76),
+    COLOR_195(18, 26, 40),
+    COLOR_196(29, 57, 53),
+    COLOR_197(36, 70, 65),
+    COLOR_198(42, 82, 76),
+    COLOR_199(22, 43, 40),
+    COLOR_200(32, 42, 100),
+    COLOR_201(39, 51, 122),
+    COLOR_202(46, 60, 142),
+    COLOR_203(24, 31, 75),
+    COLOR_204(11, 15, 26),
+    COLOR_205(13, 18, 31),
+    COLOR_206(16, 22, 37),
+    COLOR_207(8, 11, 19),
+    COLOR_208(34, 33, 133),
+    COLOR_209(42, 41, 163),
+    COLOR_210(49, 48, 189),
+    COLOR_211(25, 25, 100),
+    COLOR_212(68, 44, 104),
+    COLOR_213(83, 54, 127),
+    COLOR_214(97, 63, 148),
+    COLOR_215(51, 33, 78),
+    COLOR_216(20, 17, 64),
+    COLOR_217(25, 21, 79),
+    COLOR_218(29, 25, 92),
+    COLOR_219(15, 13, 48),
+    COLOR_220(94, 88, 15),
+    COLOR_221(115, 108, 18),
+    COLOR_222(134, 126, 22),
+    COLOR_223(70, 66, 11),
+    COLOR_224(98, 100, 40),
+    COLOR_225(120, 122, 50),
+    COLOR_226(140, 142, 58),
+    COLOR_227(74, 75, 30),
+    COLOR_228(43, 31, 60),
+    COLOR_229(53, 37, 74),
+    COLOR_230(62, 44, 86),
+    COLOR_231(32, 23, 45),
+    COLOR_232(93, 127, 14),
+    COLOR_233(114, 155, 17),
+    COLOR_234(133, 180, 20),
+    COLOR_235(70, 95, 10),
     COLOR_236(70, 70, 70),
     COLOR_237(86, 86, 86),
     COLOR_238(100, 100, 100),
     COLOR_239(52, 52, 52),
-    COLOR_240(152, 123, 103),
-    COLOR_241(186, 150, 126),
-    COLOR_242(216, 175, 147),
-    COLOR_243(114, 92, 77),
-    COLOR_244(89, 117, 105),
-    COLOR_245(109, 144, 129),
-    COLOR_246(127, 167, 150),
-    COLOR_247(67, 88, 79);
+    COLOR_240(103, 123, 152),
+    COLOR_241(126, 150, 186),
+    COLOR_242(147, 175, 216),
+    COLOR_243(77, 92, 114),
+    COLOR_244(105, 117, 89),
+    COLOR_245(129, 144, 109),
+    COLOR_246(150, 167, 127),
+    COLOR_247(79, 88, 67);
 
     private static final MapColor[] VALUES = values();
 

From 7b5c1bb370ae88409bb89b8c78c824a36fe1bc43 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Mon, 23 Dec 2024 03:29:40 +0800
Subject: [PATCH 125/165] Bump mcpl and mappings

---
 core/src/main/resources/mappings | 2 +-
 gradle/libs.versions.toml        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 8707dd144..e277062f3 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 8707dd144b20632f4a2f4b5497d8e5fb211e6c93
+Subproject commit e277062f3bccbe772baefcd631f0a5442311467c
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b90436644..65cef50f8 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241213.160944-20"
 protocol-codec = "3.0.0.Beta5-20241213.160944-20"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-SNAPSHOT"
+mcprotocollib = "1.21.4-20241222.190029-11"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From 030b935d8a1953bc9735ce4bd95b6c105d047b2d Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 24 Dec 2024 00:18:26 +0800
Subject: [PATCH 126/165] Fix: item frames showing names for items without a
 custom name (fixes https://github.com/GeyserMC/Geyser/issues/5194)

---
 .../geyser/entity/type/ItemFrameEntity.java     | 17 +++++++++++++----
 .../geyser/item/type/ShulkerBoxItem.java        |  2 +-
 .../geyser/translator/item/ItemTranslator.java  |  6 +++---
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
index f38e727c0..acb3df2b6 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
@@ -113,14 +113,23 @@ public class ItemFrameEntity extends Entity {
         if (entityMetadata.getValue() != null) {
             this.heldItem = entityMetadata.getValue();
             ItemData itemData = ItemTranslator.translateToBedrock(session, heldItem);
-
             String customIdentifier = session.getItemMappings().getCustomIdMappings().get(itemData.getDefinition().getRuntimeId());
 
             NbtMapBuilder builder = NbtMap.builder();
-
             builder.putByte("Count", (byte) itemData.getCount());
-            if (itemData.getTag() != null) {
-                builder.put("tag", itemData.getTag());
+            NbtMap itemDataTag = itemData.getTag();
+            if (itemDataTag != null) {
+                // Remove custom name that Geyser sets for items due to translating default components
+                String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponents(),
+                    session.getItemMappings().getMapping(heldItem), 'f', false);
+                if (customName == null) {
+                    // No custom name found, must modify tag if custom name exists
+                    NbtMapBuilder copy = itemDataTag.toBuilder();
+                    copy.remove("display"); // Also removes lore, but, should not matter
+                    itemDataTag = copy.build();
+                }
+
+                builder.put("tag", itemDataTag);
             }
             builder.putShort("Damage", (short) itemData.getDamage());
             builder.putString("Name", customIdentifier != null ? customIdentifier : session.getItemMappings().getMapping(entityMetadata.getValue()).getBedrockIdentifier());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
index c3b739adc..d8d2c347d 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
@@ -98,7 +98,7 @@ public class ShulkerBoxItem extends BlockItem {
 
             // Only the display name is what we have interest in, so just translate that if relevant
             if (boxComponents != null) {
-                String customName = ItemTranslator.getCustomName(session, boxComponents, boxMapping, '7');
+                String customName = ItemTranslator.getCustomName(session, boxComponents, boxMapping, '7', true);
                 if (customName != null) {
                     boxItemNbt.putCompound("tag", NbtMap.builder()
                             .putCompound("display", NbtMap.builder()
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 691a320e5..96b64f56d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -173,7 +173,7 @@ public final class ItemTranslator {
         javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
 
         Rarity rarity = Rarity.fromId(components.getOrDefault(DataComponentType.RARITY, 0));
-        String customName = getCustomName(session, components, bedrockItem, rarity.getColor());
+        String customName = getCustomName(session, components, bedrockItem, rarity.getColor(), true);
         if (customName != null) {
             nbtBuilder.setCustomName(customName);
         }
@@ -493,7 +493,7 @@ public final class ItemTranslator {
      * @param translationColor if this item is not available on Java, the color that the new name should be.
      *                         Normally, this should just be white, but for shulker boxes this should be gray.
      */
-    public static String getCustomName(GeyserSession session, DataComponents components, ItemMapping mapping, char translationColor) {
+    public static String getCustomName(GeyserSession session, DataComponents components, ItemMapping mapping, char translationColor, boolean includeDefault) {
         if (components != null) {
             // ItemStack#getHoverName as of 1.20.5
             Component customName = components.get(DataComponentType.CUSTOM_NAME);
@@ -514,7 +514,7 @@ public final class ItemTranslator {
                 }
             }
             customName = components.get(DataComponentType.ITEM_NAME);
-            if (customName != null) {
+            if (customName != null && includeDefault) {
                 // Get the translated name and prefix it with a reset char to prevent italics - matches Java Edition
                 // behavior as of 1.21
                 return ChatColor.RESET + ChatColor.ESCAPE + translationColor + MessageTranslator.convertMessage(customName, session.locale());

From 6bd60d42339482580dd7f501d5ff436f63945a97 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 24 Dec 2024 01:43:04 +0800
Subject: [PATCH 127/165] Fix: Default components breaking item stacking while
 crafting.

---
 .../geysermc/geyser/entity/type/ItemFrameEntity.java | 12 +-----------
 .../java/org/geysermc/geyser/item/type/Item.java     | 11 +++++++++--
 .../translator/inventory/InventoryTranslator.java    |  2 +-
 .../geyser/translator/item/BedrockItemBuilder.java   |  5 +++--
 .../geyser/translator/item/ItemTranslator.java       |  2 +-
 5 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
index acb3df2b6..ba3dfb79d 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
@@ -118,17 +118,7 @@ public class ItemFrameEntity extends Entity {
             NbtMapBuilder builder = NbtMap.builder();
             builder.putByte("Count", (byte) itemData.getCount());
             NbtMap itemDataTag = itemData.getTag();
-            if (itemDataTag != null) {
-                // Remove custom name that Geyser sets for items due to translating default components
-                String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponents(),
-                    session.getItemMappings().getMapping(heldItem), 'f', false);
-                if (customName == null) {
-                    // No custom name found, must modify tag if custom name exists
-                    NbtMapBuilder copy = itemDataTag.toBuilder();
-                    copy.remove("display"); // Also removes lore, but, should not matter
-                    itemDataTag = copy.build();
-                }
-
+            if (itemData.getTag() != null) {
                 builder.put("tag", itemDataTag);
             }
             builder.putShort("Damage", (short) itemData.getDamage());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 19789e086..738d57788 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -191,7 +191,9 @@ public class Item {
         }
 
         Integer repairCost = components.get(DataComponentType.REPAIR_COST);
-        if (repairCost != null) {
+        // Java sets repair cost to 0 on all items via default components, that trips up Bedrock crafting.
+        // See https://github.com/GeyserMC/Geyser/issues/5220 for more details
+        if (repairCost != null && repairCost != 0) {
             builder.putInt("RepairCost", repairCost);
         }
 
@@ -202,7 +204,12 @@ public class Item {
 
         // Prevents the client from trying to stack items with untranslated components
         // Relies on correct hash code implementation, and some luck
-        builder.putInt("GeyserHash", components.hashCode()); // TODO: don't rely on this
+        // However, we should only set a hash when the components differ from the default ones,
+        // otherwise Bedrock can't stack these when crafting items since it's predicted recipe output
+        // does not contain the GeyserHash. See https://github.com/GeyserMC/Geyser/issues/5220 for more details
+        if (!baseComponents.equals(components)) {
+            builder.putInt("GeyserHash", components.hashCode()); // TODO: don't rely on this
+        }
     }
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index f7e3bfc2a..b4f507af5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -246,7 +246,7 @@ public abstract class InventoryTranslator {
                     boolean isSourceCursor = isCursor(transferAction.getSource());
                     boolean isDestCursor = isCursor(transferAction.getDestination());
 
-                    if ((this) instanceof PlayerInventoryTranslator) {
+                    if (this instanceof PlayerInventoryTranslator) {
                         if (destSlot == 5) {
                             //only set the head if the destination is the head slot
                             GeyserItemStack javaItem = inventory.getItem(sourceSlot);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/BedrockItemBuilder.java b/core/src/main/java/org/geysermc/geyser/translator/item/BedrockItemBuilder.java
index e989288c2..2f51c0007 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/BedrockItemBuilder.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/BedrockItemBuilder.java
@@ -122,12 +122,13 @@ public final class BedrockItemBuilder {
      */
     @Nullable
     public NbtMap build() {
-        if (customName != null || lore != null) {
+        boolean validLore = lore != null && !lore.isEmpty();
+        if (customName != null || validLore) {
             NbtMapBuilder display = NbtMap.builder();
             if (customName != null) {
                 display.putString("Name", customName);
             }
-            if (lore != null) {
+            if (validLore) {
                 display.putList("Lore", NbtType.STRING, lore);
             }
             getOrCreateNbt().put("display", display.build());
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 96b64f56d..b8959c7b8 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -173,7 +173,7 @@ public final class ItemTranslator {
         javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
 
         Rarity rarity = Rarity.fromId(components.getOrDefault(DataComponentType.RARITY, 0));
-        String customName = getCustomName(session, components, bedrockItem, rarity.getColor(), true);
+        String customName = getCustomName(session, components, bedrockItem, rarity.getColor(), false);
         if (customName != null) {
             nbtBuilder.setCustomName(customName);
         }

From 623ec2bb8fbeda967b94e6c95c19ceba0b9692ba Mon Sep 17 00:00:00 2001
From: rtm516 <rtm516@users.noreply.github.com>
Date: Fri, 27 Dec 2024 04:53:22 +0000
Subject: [PATCH 128/165] Fix map colors (#5239)

* Revert "fix: Wrong map colors (#5238)"

This reverts commit 006fe75e5af5f5686fb18051415663cb8ceaaa1b.

* Correctly send BGR over the network for map colors
---
 .../org/geysermc/geyser/level/MapColor.java   | 426 +++++++++---------
 .../java/level/JavaMapItemDataTranslator.java |   2 +-
 2 files changed, 216 insertions(+), 212 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/level/MapColor.java b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
index f4b4fb697..da0c0a4b2 100644
--- a/core/src/main/java/org/geysermc/geyser/level/MapColor.java
+++ b/core/src/main/java/org/geysermc/geyser/level/MapColor.java
@@ -30,26 +30,26 @@ public enum MapColor {
     COLOR_1(-1, -1, -1),
     COLOR_2(-1, -1, -1),
     COLOR_3(-1, -1, -1),
-    COLOR_4(39, 125, 89),
-    COLOR_5(48, 153, 109),
-    COLOR_6(56, 178, 127),
-    COLOR_7(29, 94, 67),
-    COLOR_8(115, 164, 174),
-    COLOR_9(140, 201, 213),
-    COLOR_10(163, 233, 247),
-    COLOR_11(86, 123, 130),
+    COLOR_4(89, 125, 39),
+    COLOR_5(109, 153, 48),
+    COLOR_6(127, 178, 56),
+    COLOR_7(67, 94, 29),
+    COLOR_8(174, 164, 115),
+    COLOR_9(213, 201, 140),
+    COLOR_10(247, 233, 163),
+    COLOR_11(130, 123, 86),
     COLOR_12(140, 140, 140),
     COLOR_13(171, 171, 171),
     COLOR_14(199, 199, 199),
     COLOR_15(105, 105, 105),
-    COLOR_16(0, 0, 180),
-    COLOR_17(0, 0, 220),
-    COLOR_18(0, 0, 255),
-    COLOR_19(0, 0, 135),
-    COLOR_20(180, 112, 112),
-    COLOR_21(220, 138, 138),
-    COLOR_22(255, 160, 160),
-    COLOR_23(135, 84, 84),
+    COLOR_16(180, 0, 0),
+    COLOR_17(220, 0, 0),
+    COLOR_18(255, 0, 0),
+    COLOR_19(135, 0, 0),
+    COLOR_20(112, 112, 180),
+    COLOR_21(138, 138, 220),
+    COLOR_22(160, 160, 255),
+    COLOR_23(84, 84, 135),
     COLOR_24(117, 117, 117),
     COLOR_25(144, 144, 144),
     COLOR_26(167, 167, 167),
@@ -62,54 +62,54 @@ public enum MapColor {
     COLOR_33(220, 220, 220),
     COLOR_34(255, 255, 255),
     COLOR_35(135, 135, 135),
-    COLOR_36(129, 118, 115),
-    COLOR_37(158, 144, 141),
-    COLOR_38(184, 168, 164),
-    COLOR_39(97, 88, 86),
-    COLOR_40(54, 76, 106),
-    COLOR_41(66, 94, 130),
-    COLOR_42(77, 109, 151),
-    COLOR_43(40, 57, 79),
+    COLOR_36(115, 118, 129),
+    COLOR_37(141, 144, 158),
+    COLOR_38(164, 168, 184),
+    COLOR_39(86, 88, 97),
+    COLOR_40(106, 76, 54),
+    COLOR_41(130, 94, 66),
+    COLOR_42(151, 109, 77),
+    COLOR_43(79, 57, 40),
     COLOR_44(79, 79, 79),
     COLOR_45(96, 96, 96),
     COLOR_46(112, 112, 112),
     COLOR_47(59, 59, 59),
-    COLOR_48(180, 45, 45),
-    COLOR_49(220, 55, 55),
-    COLOR_50(255, 64, 64),
-    COLOR_51(135, 33, 33),
-    COLOR_52(50, 84, 100),
-    COLOR_53(62, 102, 123),
-    COLOR_54(72, 119, 143),
-    COLOR_55(38, 63, 75),
-    COLOR_56(172, 177, 180),
-    COLOR_57(211, 217, 220),
-    COLOR_58(245, 252, 255),
-    COLOR_59(129, 133, 135),
-    COLOR_60(36, 89, 152),
-    COLOR_61(44, 109, 186),
-    COLOR_62(51, 127, 216),
-    COLOR_63(27, 67, 114),
-    COLOR_64(152, 53, 125),
-    COLOR_65(186, 65, 153),
-    COLOR_66(216, 76, 178),
-    COLOR_67(114, 40, 94),
-    COLOR_68(152, 108, 72),
-    COLOR_69(186, 132, 88),
-    COLOR_70(216, 153, 102),
-    COLOR_71(114, 81, 54),
-    COLOR_72(36, 161, 161),
-    COLOR_73(44, 197, 197),
-    COLOR_74(51, 229, 229),
-    COLOR_75(27, 121, 121),
-    COLOR_76(17, 144, 89),
-    COLOR_77(21, 176, 109),
-    COLOR_78(25, 204, 127),
-    COLOR_79(13, 108, 67),
-    COLOR_80(116, 89, 170),
-    COLOR_81(142, 109, 208),
-    COLOR_82(165, 127, 242),
-    COLOR_83(87, 67, 128),
+    COLOR_48(45, 45, 180),
+    COLOR_49(55, 55, 220),
+    COLOR_50(64, 64, 255),
+    COLOR_51(33, 33, 135),
+    COLOR_52(100, 84, 50),
+    COLOR_53(123, 102, 62),
+    COLOR_54(143, 119, 72),
+    COLOR_55(75, 63, 38),
+    COLOR_56(180, 177, 172),
+    COLOR_57(220, 217, 211),
+    COLOR_58(255, 252, 245),
+    COLOR_59(135, 133, 129),
+    COLOR_60(152, 89, 36),
+    COLOR_61(186, 109, 44),
+    COLOR_62(216, 127, 51),
+    COLOR_63(114, 67, 27),
+    COLOR_64(125, 53, 152),
+    COLOR_65(153, 65, 186),
+    COLOR_66(178, 76, 216),
+    COLOR_67(94, 40, 114),
+    COLOR_68(72, 108, 152),
+    COLOR_69(88, 132, 186),
+    COLOR_70(102, 153, 216),
+    COLOR_71(54, 81, 114),
+    COLOR_72(161, 161, 36),
+    COLOR_73(197, 197, 44),
+    COLOR_74(229, 229, 51),
+    COLOR_75(121, 121, 27),
+    COLOR_76(89, 144, 17),
+    COLOR_77(109, 176, 21),
+    COLOR_78(127, 204, 25),
+    COLOR_79(67, 108, 13),
+    COLOR_80(170, 89, 116),
+    COLOR_81(208, 109, 142),
+    COLOR_82(242, 127, 165),
+    COLOR_83(128, 67, 87),
     COLOR_84(53, 53, 53),
     COLOR_85(65, 65, 65),
     COLOR_86(76, 76, 76),
@@ -118,162 +118,162 @@ public enum MapColor {
     COLOR_89(132, 132, 132),
     COLOR_90(153, 153, 153),
     COLOR_91(81, 81, 81),
-    COLOR_92(108, 89, 53),
-    COLOR_93(132, 109, 65),
-    COLOR_94(153, 127, 76),
-    COLOR_95(81, 67, 40),
-    COLOR_96(125, 44, 89),
-    COLOR_97(153, 54, 109),
-    COLOR_98(178, 63, 127),
-    COLOR_99(94, 33, 67),
-    COLOR_100(125, 53, 36),
-    COLOR_101(153, 65, 44),
-    COLOR_102(178, 76, 51),
-    COLOR_103(94, 40, 27),
-    COLOR_104(36, 53, 72),
-    COLOR_105(44, 65, 88),
-    COLOR_106(51, 76, 102),
-    COLOR_107(27, 40, 54),
-    COLOR_108(36, 89, 72),
-    COLOR_109(44, 109, 88),
-    COLOR_110(51, 127, 102),
-    COLOR_111(27, 67, 54),
-    COLOR_112(36, 36, 108),
-    COLOR_113(44, 44, 132),
-    COLOR_114(51, 51, 153),
-    COLOR_115(27, 27, 81),
+    COLOR_92(53, 89, 108),
+    COLOR_93(65, 109, 132),
+    COLOR_94(76, 127, 153),
+    COLOR_95(40, 67, 81),
+    COLOR_96(89, 44, 125),
+    COLOR_97(109, 54, 153),
+    COLOR_98(127, 63, 178),
+    COLOR_99(67, 33, 94),
+    COLOR_100(36, 53, 125),
+    COLOR_101(44, 65, 153),
+    COLOR_102(51, 76, 178),
+    COLOR_103(27, 40, 94),
+    COLOR_104(72, 53, 36),
+    COLOR_105(88, 65, 44),
+    COLOR_106(102, 76, 51),
+    COLOR_107(54, 40, 27),
+    COLOR_108(72, 89, 36),
+    COLOR_109(88, 109, 44),
+    COLOR_110(102, 127, 51),
+    COLOR_111(54, 67, 27),
+    COLOR_112(108, 36, 36),
+    COLOR_113(132, 44, 44),
+    COLOR_114(153, 51, 51),
+    COLOR_115(81, 27, 27),
     COLOR_116(17, 17, 17),
     COLOR_117(21, 21, 21),
     COLOR_118(25, 25, 25),
     COLOR_119(13, 13, 13),
-    COLOR_120(54, 168, 176),
-    COLOR_121(66, 205, 215),
-    COLOR_122(77, 238, 250),
-    COLOR_123(40, 126, 132),
-    COLOR_124(150, 154, 64),
-    COLOR_125(183, 188, 79),
-    COLOR_126(213, 219, 92),
-    COLOR_127(112, 115, 48),
-    COLOR_128(180, 90, 52),
-    COLOR_129(220, 110, 63),
-    COLOR_130(255, 128, 74),
-    COLOR_131(135, 67, 39),
-    COLOR_132(40, 153, 0),
-    COLOR_133(50, 187, 0),
-    COLOR_134(58, 217, 0),
-    COLOR_135(30, 114, 0),
-    COLOR_136(34, 60, 91),
-    COLOR_137(42, 74, 111),
-    COLOR_138(49, 86, 129),
-    COLOR_139(25, 45, 68),
-    COLOR_140(0, 1, 79),
-    COLOR_141(0, 1, 96),
-    COLOR_142(0, 2, 112),
-    COLOR_143(0, 1, 59),
-    COLOR_144(113, 124, 147),
-    COLOR_145(138, 152, 180),
-    COLOR_146(161, 177, 209),
-    COLOR_147(85, 93, 110),
-    COLOR_148(25, 57, 112),
-    COLOR_149(31, 70, 137),
-    COLOR_150(36, 82, 159),
-    COLOR_151(19, 43, 84),
-    COLOR_152(76, 61, 105),
-    COLOR_153(93, 75, 128),
-    COLOR_154(108, 87, 149),
-    COLOR_155(57, 46, 78),
-    COLOR_156(97, 76, 79),
-    COLOR_157(119, 93, 96),
-    COLOR_158(138, 108, 112),
-    COLOR_159(73, 57, 59),
-    COLOR_160(25, 93, 131),
-    COLOR_161(31, 114, 160),
-    COLOR_162(36, 133, 186),
-    COLOR_163(19, 70, 98),
-    COLOR_164(37, 82, 72),
-    COLOR_165(45, 100, 88),
-    COLOR_166(53, 117, 103),
-    COLOR_167(28, 61, 54),
-    COLOR_168(55, 54, 112),
-    COLOR_169(67, 66, 138),
-    COLOR_170(78, 77, 160),
-    COLOR_171(41, 40, 84),
-    COLOR_172(24, 28, 40),
-    COLOR_173(30, 35, 49),
-    COLOR_174(35, 41, 57),
-    COLOR_175(18, 21, 30),
-    COLOR_176(69, 75, 95),
-    COLOR_177(84, 92, 116),
-    COLOR_178(98, 107, 135),
-    COLOR_179(51, 56, 71),
-    COLOR_180(64, 64, 61),
-    COLOR_181(79, 79, 75),
-    COLOR_182(92, 92, 87),
-    COLOR_183(48, 48, 46),
-    COLOR_184(62, 51, 86),
-    COLOR_185(75, 62, 105),
-    COLOR_186(88, 73, 122),
-    COLOR_187(46, 38, 64),
-    COLOR_188(64, 43, 53),
-    COLOR_189(79, 53, 65),
-    COLOR_190(92, 62, 76),
-    COLOR_191(48, 32, 40),
-    COLOR_192(24, 35, 53),
-    COLOR_193(30, 43, 65),
-    COLOR_194(35, 50, 76),
-    COLOR_195(18, 26, 40),
-    COLOR_196(29, 57, 53),
-    COLOR_197(36, 70, 65),
-    COLOR_198(42, 82, 76),
-    COLOR_199(22, 43, 40),
-    COLOR_200(32, 42, 100),
-    COLOR_201(39, 51, 122),
-    COLOR_202(46, 60, 142),
-    COLOR_203(24, 31, 75),
-    COLOR_204(11, 15, 26),
-    COLOR_205(13, 18, 31),
-    COLOR_206(16, 22, 37),
-    COLOR_207(8, 11, 19),
-    COLOR_208(34, 33, 133),
-    COLOR_209(42, 41, 163),
-    COLOR_210(49, 48, 189),
-    COLOR_211(25, 25, 100),
-    COLOR_212(68, 44, 104),
-    COLOR_213(83, 54, 127),
-    COLOR_214(97, 63, 148),
-    COLOR_215(51, 33, 78),
-    COLOR_216(20, 17, 64),
-    COLOR_217(25, 21, 79),
-    COLOR_218(29, 25, 92),
-    COLOR_219(15, 13, 48),
-    COLOR_220(94, 88, 15),
-    COLOR_221(115, 108, 18),
-    COLOR_222(134, 126, 22),
-    COLOR_223(70, 66, 11),
-    COLOR_224(98, 100, 40),
-    COLOR_225(120, 122, 50),
-    COLOR_226(140, 142, 58),
-    COLOR_227(74, 75, 30),
-    COLOR_228(43, 31, 60),
-    COLOR_229(53, 37, 74),
-    COLOR_230(62, 44, 86),
-    COLOR_231(32, 23, 45),
-    COLOR_232(93, 127, 14),
-    COLOR_233(114, 155, 17),
-    COLOR_234(133, 180, 20),
-    COLOR_235(70, 95, 10),
+    COLOR_120(176, 168, 54),
+    COLOR_121(215, 205, 66),
+    COLOR_122(250, 238, 77),
+    COLOR_123(132, 126, 40),
+    COLOR_124(64, 154, 150),
+    COLOR_125(79, 188, 183),
+    COLOR_126(92, 219, 213),
+    COLOR_127(48, 115, 112),
+    COLOR_128(52, 90, 180),
+    COLOR_129(63, 110, 220),
+    COLOR_130(74, 128, 255),
+    COLOR_131(39, 67, 135),
+    COLOR_132(0, 153, 40),
+    COLOR_133(0, 187, 50),
+    COLOR_134(0, 217, 58),
+    COLOR_135(0, 114, 30),
+    COLOR_136(91, 60, 34),
+    COLOR_137(111, 74, 42),
+    COLOR_138(129, 86, 49),
+    COLOR_139(68, 45, 25),
+    COLOR_140(79, 1, 0),
+    COLOR_141(96, 1, 0),
+    COLOR_142(112, 2, 0),
+    COLOR_143(59, 1, 0),
+    COLOR_144(147, 124, 113),
+    COLOR_145(180, 152, 138),
+    COLOR_146(209, 177, 161),
+    COLOR_147(110, 93, 85),
+    COLOR_148(112, 57, 25),
+    COLOR_149(137, 70, 31),
+    COLOR_150(159, 82, 36),
+    COLOR_151(84, 43, 19),
+    COLOR_152(105, 61, 76),
+    COLOR_153(128, 75, 93),
+    COLOR_154(149, 87, 108),
+    COLOR_155(78, 46, 57),
+    COLOR_156(79, 76, 97),
+    COLOR_157(96, 93, 119),
+    COLOR_158(112, 108, 138),
+    COLOR_159(59, 57, 73),
+    COLOR_160(131, 93, 25),
+    COLOR_161(160, 114, 31),
+    COLOR_162(186, 133, 36),
+    COLOR_163(98, 70, 19),
+    COLOR_164(72, 82, 37),
+    COLOR_165(88, 100, 45),
+    COLOR_166(103, 117, 53),
+    COLOR_167(54, 61, 28),
+    COLOR_168(112, 54, 55),
+    COLOR_169(138, 66, 67),
+    COLOR_170(160, 77, 78),
+    COLOR_171(84, 40, 41),
+    COLOR_172(40, 28, 24),
+    COLOR_173(49, 35, 30),
+    COLOR_174(57, 41, 35),
+    COLOR_175(30, 21, 18),
+    COLOR_176(95, 75, 69),
+    COLOR_177(116, 92, 84),
+    COLOR_178(135, 107, 98),
+    COLOR_179(71, 56, 51),
+    COLOR_180(61, 64, 64),
+    COLOR_181(75, 79, 79),
+    COLOR_182(87, 92, 92),
+    COLOR_183(46, 48, 48),
+    COLOR_184(86, 51, 62),
+    COLOR_185(105, 62, 75),
+    COLOR_186(122, 73, 88),
+    COLOR_187(64, 38, 46),
+    COLOR_188(53, 43, 64),
+    COLOR_189(65, 53, 79),
+    COLOR_190(76, 62, 92),
+    COLOR_191(40, 32, 48),
+    COLOR_192(53, 35, 24),
+    COLOR_193(65, 43, 30),
+    COLOR_194(76, 50, 35),
+    COLOR_195(40, 26, 18),
+    COLOR_196(53, 57, 29),
+    COLOR_197(65, 70, 36),
+    COLOR_198(76, 82, 42),
+    COLOR_199(40, 43, 22),
+    COLOR_200(100, 42, 32),
+    COLOR_201(122, 51, 39),
+    COLOR_202(142, 60, 46),
+    COLOR_203(75, 31, 24),
+    COLOR_204(26, 15, 11),
+    COLOR_205(31, 18, 13),
+    COLOR_206(37, 22, 16),
+    COLOR_207(19, 11, 8),
+    COLOR_208(133, 33, 34),
+    COLOR_209(163, 41, 42),
+    COLOR_210(189, 48, 49),
+    COLOR_211(100, 25, 25),
+    COLOR_212(104, 44, 68),
+    COLOR_213(127, 54, 83),
+    COLOR_214(148, 63, 97),
+    COLOR_215(78, 33, 51),
+    COLOR_216(64, 17, 20),
+    COLOR_217(79, 21, 25),
+    COLOR_218(92, 25, 29),
+    COLOR_219(48, 13, 15),
+    COLOR_220(15, 88, 94),
+    COLOR_221(18, 108, 115),
+    COLOR_222(22, 126, 134),
+    COLOR_223(11, 66, 70),
+    COLOR_224(40, 100, 98),
+    COLOR_225(50, 122, 120),
+    COLOR_226(58, 142, 140),
+    COLOR_227(30, 75, 74),
+    COLOR_228(60, 31, 43),
+    COLOR_229(74, 37, 53),
+    COLOR_230(86, 44, 62),
+    COLOR_231(45, 23, 32),
+    COLOR_232(14, 127, 93),
+    COLOR_233(17, 155, 114),
+    COLOR_234(20, 180, 133),
+    COLOR_235(10, 95, 70),
     COLOR_236(70, 70, 70),
     COLOR_237(86, 86, 86),
     COLOR_238(100, 100, 100),
     COLOR_239(52, 52, 52),
-    COLOR_240(103, 123, 152),
-    COLOR_241(126, 150, 186),
-    COLOR_242(147, 175, 216),
-    COLOR_243(77, 92, 114),
-    COLOR_244(105, 117, 89),
-    COLOR_245(129, 144, 109),
-    COLOR_246(150, 167, 127),
-    COLOR_247(79, 88, 67);
+    COLOR_240(152, 123, 103),
+    COLOR_241(186, 150, 126),
+    COLOR_242(216, 175, 147),
+    COLOR_243(114, 92, 77),
+    COLOR_244(89, 117, 105),
+    COLOR_245(109, 144, 129),
+    COLOR_246(127, 167, 150),
+    COLOR_247(67, 88, 79);
 
     private static final MapColor[] VALUES = values();
 
@@ -285,16 +285,20 @@ public enum MapColor {
             alpha = 0; // transparent
 
         this.value = ((alpha & 0xFF) << 24) |
-            ((red & 0xFF) << 16) |
+            ((blue & 0xFF) << 16) |
             ((green & 0xFF) << 8) |
-            (blue & 0xFF);
+            (red & 0xFF);
     }
 
     public static MapColor fromId(int id) {
         return id >= 0 && id < VALUES.length ? VALUES[id] : COLOR_0;
     }
 
-    public int getARGB() {
+    /**
+     * Get the ABGR value of the color, bedrock uses this over the network
+     * @return the int value of the color
+     */
+    public int getABGR() {
         return value;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaMapItemDataTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaMapItemDataTranslator.java
index 52a08ab29..94c4736c6 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaMapItemDataTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaMapItemDataTranslator.java
@@ -65,7 +65,7 @@ public class JavaMapItemDataTranslator extends PacketTranslator<ClientboundMapIt
 
             int idx = 0;
             for (byte colorId : data.getData()) {
-                colors[idx++] = MapColor.fromId(colorId & 0xFF).getARGB();
+                colors[idx++] = MapColor.fromId(colorId & 0xFF).getABGR();
             }
 
             mapItemDataPacket.setColors(colors);

From f1ed841e079d33fc1244123e3102dbd967aa502a Mon Sep 17 00:00:00 2001
From: Alex <40795980+AlexProgrammerDE@users.noreply.github.com>
Date: Sat, 4 Jan 2025 14:28:54 +0100
Subject: [PATCH 129/165] Add support for rcon console command senders (#5261)

RemoteConsoleCommandSender does not inherit ConsoleCommandSender, so we gotta handle it explicitly.
---
 .../geyser/platform/spigot/command/SpigotCommandSource.java    | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/command/SpigotCommandSource.java b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/command/SpigotCommandSource.java
index c1fb837c2..9f897b095 100644
--- a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/command/SpigotCommandSource.java
+++ b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/command/SpigotCommandSource.java
@@ -29,6 +29,7 @@ import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
 import org.bukkit.command.CommandSender;
 import org.bukkit.command.ConsoleCommandSender;
+import org.bukkit.command.RemoteConsoleCommandSender;
 import org.bukkit.entity.Player;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
@@ -76,7 +77,7 @@ public class SpigotCommandSource implements GeyserCommandSource {
 
     @Override
     public boolean isConsole() {
-        return handle instanceof ConsoleCommandSender;
+        return handle instanceof ConsoleCommandSender || handle instanceof RemoteConsoleCommandSender;
     }
 
     @Override

From a19f0305fb8ffbeac4d6bbe00143841f5f9f9ff5 Mon Sep 17 00:00:00 2001
From: BugTeaON <99161186+BUGTeas@users.noreply.github.com>
Date: Sun, 5 Jan 2025 19:41:35 +0800
Subject: [PATCH 130/165] Fix `item_name` component not working, improve
 display of custom effects and shulker box tooltips for item names (#5255)

* Show custom effects information in HUD, and be able to hide it using hide_additional_tooltip component

* Make vanilla default components no longer affect the translation of custom name (Fix item_name component not work)

* Fix book title display in tooltips of shulker box

* Fix colored item name display in tooltips of shulker box

* Add some code comments

* Block vanilla potion name translation when has hide_additional_tooltip component

* Add some brackets
---
 .../geyser/entity/type/ItemFrameEntity.java   | 12 ++-
 .../geysermc/geyser/item/type/PotionItem.java | 13 ---
 .../geyser/item/type/ShulkerBoxItem.java      |  7 +-
 .../geyser/item/type/TippedArrowItem.java     | 14 ---
 .../translator/item/ItemTranslator.java       | 91 ++++++++++++++-----
 5 files changed, 85 insertions(+), 52 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
index ba3dfb79d..afe0dcdc6 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
@@ -118,7 +118,17 @@ public class ItemFrameEntity extends Entity {
             NbtMapBuilder builder = NbtMap.builder();
             builder.putByte("Count", (byte) itemData.getCount());
             NbtMap itemDataTag = itemData.getTag();
-            if (itemData.getTag() != null) {
+            if (itemDataTag != null) {
+                // Remove custom name that Geyser sets for items due to translating non-"custom_name" components
+                String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponents(),
+                    session.getItemMappings().getMapping(heldItem), 'f', true, false);
+                if (customName == null) {
+                    // No custom name found, must modify tag if custom name exists
+                    NbtMapBuilder copy = itemDataTag.toBuilder();
+                    copy.remove("display"); // Also removes lore, but, should not matter
+                    itemDataTag = copy.build();
+                }
+
                 builder.put("tag", itemDataTag);
             }
             builder.putShort("Damage", (short) itemData.getDamage());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
index 4cc3756cd..89e60b325 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
@@ -34,9 +34,7 @@ import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
-import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
@@ -70,17 +68,6 @@ public class PotionItem extends Item {
         return super.translateToBedrock(session, count, components, mapping, mappings);
     }
 
-    @Override
-    public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
-        // Make custom effect information visible
-        PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
-        if (potionContents != null) {
-            ItemTranslator.addPotionEffectLore(potionContents, builder, session.locale());
-        }
-
-        super.translateComponentsToBedrock(session, components, builder);
-    }
-
     @Override
     public @NonNull GeyserItemStack translateToJava(GeyserSession session, @NonNull ItemData itemData, @NonNull ItemMapping mapping, @NonNull ItemMappings mappings) {
         Potion potion = Potion.getByBedrockId(itemData.getDamage());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
index d8d2c347d..5d14f748c 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
@@ -35,6 +35,7 @@ import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
 import org.geysermc.geyser.translator.item.ItemTranslator;
@@ -98,8 +99,12 @@ public class ShulkerBoxItem extends BlockItem {
 
             // Only the display name is what we have interest in, so just translate that if relevant
             if (boxComponents != null) {
-                String customName = ItemTranslator.getCustomName(session, boxComponents, boxMapping, '7', true);
+                String customName = ItemTranslator.getCustomName(session, boxComponents, boxMapping, '7', false, true);
                 if (customName != null) {
+                    // Fix count display (e.g., x16) with incorrect color due to some items with colored names
+                    if (customName.contains("" + ChatColor.ESCAPE)) {
+                        customName += ChatColor.RESET + ChatColor.GRAY;
+                    }
                     boxItemNbt.putCompound("tag", NbtMap.builder()
                             .putCompound("display", NbtMap.builder()
                                     .putString("Name", customName)
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
index 9e212ebef..09e4ee21f 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
@@ -25,15 +25,12 @@
 
 package org.geysermc.geyser.item.type;
 
-import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
@@ -60,15 +57,4 @@ public class TippedArrowItem extends ArrowItem {
         }
         return super.translateToBedrock(session, count, components, mapping, mappings);
     }
-
-    @Override
-    public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
-        // Make custom effect information visible
-        PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
-        if (potionContents != null) {
-            ItemTranslator.addPotionEffectLore(potionContents, builder, session.locale());
-        }
-
-        super.translateComponentsToBedrock(session, components, builder);
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index b8959c7b8..3f9bf7446 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -41,6 +41,7 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.block.custom.CustomBlockData;
 import org.geysermc.geyser.entity.attribute.GeyserAttributeType;
 import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.type.Item;
@@ -70,6 +71,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemAttribut
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.MobEffectDetails;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.MobEffectInstance;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.WrittenBookContent;
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
@@ -163,18 +165,25 @@ public final class ItemTranslator {
                 .build();
     }
 
-    public static ItemData.@NonNull Builder translateToBedrock(GeyserSession session, Item javaItem, ItemMapping bedrockItem, int count, @Nullable DataComponents components) {
+    public static ItemData.@NonNull Builder translateToBedrock(GeyserSession session, Item javaItem, ItemMapping bedrockItem, int count, @Nullable DataComponents customComponents) {
         BedrockItemBuilder nbtBuilder = new BedrockItemBuilder();
 
         // Populates default components that aren't sent over the network
-        components = javaItem.gatherComponents(components);
+        DataComponents components = javaItem.gatherComponents(customComponents);
 
         // Translate item-specific components
         javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
 
         Rarity rarity = Rarity.fromId(components.getOrDefault(DataComponentType.RARITY, 0));
-        String customName = getCustomName(session, components, bedrockItem, rarity.getColor(), false);
+        String customName = getCustomName(session, customComponents, bedrockItem, rarity.getColor(), false, false);
         if (customName != null) {
+            PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+            // Make custom effect information visible
+            // Ignore when item have "hide_additional_tooltip" component
+            if (potionContents != null && components.get(DataComponentType.HIDE_ADDITIONAL_TOOLTIP) == null) {
+                customName += getPotionEffectInfo(potionContents, session.locale());
+            }
+
             nbtBuilder.setCustomName(customName);
         }
 
@@ -336,7 +345,8 @@ public final class ItemTranslator {
         Effect.INFESTED
     );
 
-    public static void addPotionEffectLore(PotionContents contents, BedrockItemBuilder builder, String language) {
+    public static String getPotionEffectInfo(PotionContents contents, String language) {
+        StringBuilder finalText = new StringBuilder();
         List<MobEffectInstance> effectInstanceList = contents.getCustomEffects();
         for (MobEffectInstance effectInstance : effectInstanceList) {
             Effect effect = effectInstance.getEffect();
@@ -372,8 +382,40 @@ public final class ItemTranslator {
                 .color((negativeEffectList.contains(effect)) ? NamedTextColor.RED : NamedTextColor.BLUE)
                 .append(appendTranslatable)
                 .build();
-            builder.getOrCreateLore().add(MessageTranslator.convertMessage(component, language));
+            // Bedrock supports wrap lines with '\n' in a single string in custom name
+            finalText.append('\n').append(MessageTranslator.convertMessage(component, language));
         }
+        return finalText.toString();
+    }
+
+    public static String getPotionName(PotionContents contents, ItemMapping mapping, boolean hideAdditionalTooltip, String language) {
+        String customPotionName = contents.getCustomName();
+        Potion potion = Potion.getByJavaId(contents.getPotionId());
+
+        if (customPotionName != null) {
+            // "custom_name" tag in "potion_contents" component
+            return MessageTranslator.convertMessage(
+                Component.translatable(mapping.getJavaItem().translationKey() + ".effect." + customPotionName),
+                language);
+        }
+        if (!hideAdditionalTooltip && !contents.getCustomEffects().isEmpty()) {
+            // Make a name when has custom effects
+            String potionName;
+            if (potion != null) {
+                potionName = potion.toString().toLowerCase(Locale.ROOT);
+                if (potionName.startsWith("strong_")) {
+                    potionName = potionName.substring(6);
+                } else if (potionName.startsWith("long_")) {
+                    potionName = potionName.substring(4);
+                }
+            } else {
+                potionName = "empty";
+            }
+            return MessageTranslator.convertMessage(
+                Component.translatable(mapping.getJavaItem().translationKey() + ".effect." + potionName),
+                language);
+        }
+        return null;
     }
 
     private static void addAdvancedTooltips(@Nullable DataComponents components, BedrockItemBuilder builder, Item item, String language) {
@@ -493,31 +535,34 @@ public final class ItemTranslator {
      * @param translationColor if this item is not available on Java, the color that the new name should be.
      *                         Normally, this should just be white, but for shulker boxes this should be gray.
      */
-    public static String getCustomName(GeyserSession session, DataComponents components, ItemMapping mapping, char translationColor, boolean includeDefault) {
+    public static String getCustomName(GeyserSession session, DataComponents components, ItemMapping mapping, char translationColor, boolean customNameOnly, boolean includeAll) {
         if (components != null) {
             // ItemStack#getHoverName as of 1.20.5
             Component customName = components.get(DataComponentType.CUSTOM_NAME);
             if (customName != null) {
                 return MessageTranslator.convertMessage(customName, session.locale());
             }
-            PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
-            if (potionContents != null) {
-                // "custom_name" tag in "potion_contents" component
-                String customPotionName = potionContents.getCustomName();
-                if (customPotionName != null) {
-                    Component component = Component.text()
-                        .resetStyle()
-                        .color(NamedTextColor.WHITE)
-                        .append(Component.translatable(mapping.getJavaItem().translationKey() + ".effect." + customPotionName))
-                        .build();
-                    return MessageTranslator.convertMessage(component, session.locale());
+            if (!customNameOnly) {
+                PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+                if (potionContents != null) {
+                    String potionName = getPotionName(potionContents, mapping, components.get(DataComponentType.HIDE_ADDITIONAL_TOOLTIP) != null, session.locale());
+                    if (potionName != null) {
+                        return ChatColor.RESET + ChatColor.ESCAPE + translationColor + potionName;
+                    }
+                }
+                if (includeAll) {
+                    // Fix book title display in tooltips of shulker box
+                    WrittenBookContent bookContent = components.get(DataComponentType.WRITTEN_BOOK_CONTENT);
+                    if (bookContent != null) {
+                        return ChatColor.RESET + ChatColor.ESCAPE + translationColor + bookContent.getTitle().getRaw();
+                    }
+                }
+                customName = components.get(DataComponentType.ITEM_NAME);
+                if (customName != null) {
+                    // Get the translated name and prefix it with a reset char to prevent italics - matches Java Edition
+                    // behavior as of 1.21
+                    return ChatColor.RESET + ChatColor.ESCAPE + translationColor + MessageTranslator.convertMessage(customName, session.locale());
                 }
-            }
-            customName = components.get(DataComponentType.ITEM_NAME);
-            if (customName != null && includeDefault) {
-                // Get the translated name and prefix it with a reset char to prevent italics - matches Java Edition
-                // behavior as of 1.21
-                return ChatColor.RESET + ChatColor.ESCAPE + translationColor + MessageTranslator.convertMessage(customName, session.locale());
             }
         }
 

From ddd1afabd1a4be415209a248e03cf7a793e4056e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 5 Jan 2025 10:34:57 -0500
Subject: [PATCH 131/165] Bundle support (#5145)

* Bundle support

* Touchups

* Correct bundle mapping

* Grabbing a bundle from creative mode does work

* Fix inserting items that already exist in a bundle

* Add bundle drop workaround

* Address review
---
 .../geyser/inventory/GeyserItemStack.java     |  47 +-
 .../geysermc/geyser/inventory/Inventory.java  |   8 +-
 .../geyser/inventory/click/Click.java         |   3 +
 .../geyser/inventory/click/ClickPlan.java     | 110 ++-
 .../geyser/session/GeyserSession.java         |  12 +
 .../geyser/session/cache/BundleCache.java     | 383 ++++++++
 .../inventory/BundleInventoryTranslator.java  | 339 +++++++
 .../inventory/InventoryTranslator.java        |  27 +-
 .../inventory/PlayerInventoryTranslator.java  |  20 +-
 ...BedrockInventoryTransactionTranslator.java |   8 +-
 .../JavaContainerSetContentTranslator.java    |   5 +-
 .../JavaContainerSetSlotTranslator.java       |   1 +
 .../JavaSetCursorItemTranslator.java          |   1 +
 .../JavaSetPlayerInventoryTranslator.java     |   4 +-
 .../geysermc/geyser/util/InventoryUtils.java  |   1 +
 .../geyser/util/thirdparty/Fraction.java      | 911 ++++++++++++++++++
 core/src/main/resources/mappings              |   2 +-
 17 files changed, 1856 insertions(+), 26 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/util/thirdparty/Fraction.java

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index 4ddff305e..77ca7bfb5 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -39,6 +39,7 @@ import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.BundleCache;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
@@ -59,19 +60,23 @@ public class GeyserItemStack {
     private DataComponents components;
     private int netId;
 
+    @EqualsAndHashCode.Exclude
+    private BundleCache.BundleData bundleData;
+
     @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE)
     @EqualsAndHashCode.Exclude
     private Item item;
 
     private GeyserItemStack(int javaId, int amount, DataComponents components) {
-        this(javaId, amount, components, 1);
+        this(javaId, amount, components, 1, null);
     }
 
-    private GeyserItemStack(int javaId, int amount, DataComponents components, int netId) {
+    private GeyserItemStack(int javaId, int amount, DataComponents components, int netId, BundleCache.BundleData bundleData) {
         this.javaId = javaId;
         this.amount = amount;
         this.components = components;
         this.netId = netId;
+        this.bundleData = bundleData;
     }
 
     public static @NonNull GeyserItemStack of(int javaId, int amount) {
@@ -173,6 +178,24 @@ public class GeyserItemStack {
         return isEmpty() ? 0 : netId;
     }
 
+    public int getBundleId() {
+        if (isEmpty()) {
+            return -1;
+        }
+
+        return bundleData == null ? -1 : bundleData.bundleId();
+    }
+
+    public void mergeBundleData(GeyserSession session, BundleCache.BundleData oldBundleData) {
+        if (oldBundleData != null && this.bundleData != null) {
+            // Old bundle; re-use old IDs
+            this.bundleData.updateNetIds(session, oldBundleData);
+        } else if (this.bundleData != null) {
+            // New bundle; allocate new ID
+            session.getBundleCache().markNewBundle(this.bundleData);
+        }
+    }
+
     public void add(int add) {
         amount += add;
     }
@@ -186,6 +209,21 @@ public class GeyserItemStack {
     }
 
     public @Nullable ItemStack getItemStack(int newAmount) {
+        if (isEmpty()) {
+            return null;
+        }
+        // Sync our updated bundle data to server, if applicable
+        // Not fresh from server? Then we have changes to apply!~
+        if (bundleData != null && !bundleData.freshFromServer()) {
+            if (!bundleData.contents().isEmpty()) {
+                getOrCreateComponents().put(DataComponentType.BUNDLE_CONTENTS, bundleData.toComponent());
+            } else {
+                if (components != null) {
+                    // Empty list = no component = should delete
+                    components.getDataComponents().remove(DataComponentType.BUNDLE_CONTENTS);
+                }
+            }
+        }
         return isEmpty() ? null : new ItemStack(javaId, newAmount, components);
     }
 
@@ -196,7 +234,8 @@ public class GeyserItemStack {
         ItemData.Builder itemData = ItemTranslator.translateToBedrock(session, javaId, amount, components);
         itemData.netId(getNetId());
         itemData.usingNetId(true);
-        return itemData.build();
+
+        return session.getBundleCache().checkForBundle(this, itemData);
     }
 
     public ItemMapping getMapping(GeyserSession session) {
@@ -229,6 +268,6 @@ public class GeyserItemStack {
     }
 
     public GeyserItemStack copy(int newAmount) {
-        return isEmpty() ? EMPTY : new GeyserItemStack(javaId, newAmount, components == null ? null : components.clone(), netId);
+        return isEmpty() ? EMPTY : new GeyserItemStack(javaId, newAmount, components == null ? null : components.clone(), netId, bundleData == null ? null : bundleData.copy());
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java b/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
index 09d04f17c..c960ed1a2 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
@@ -142,15 +142,21 @@ public abstract class Inventory {
         }
     }
 
-    protected void updateItemNetId(GeyserItemStack oldItem, GeyserItemStack newItem, GeyserSession session) {
+    public static void updateItemNetId(GeyserItemStack oldItem, GeyserItemStack newItem, GeyserSession session) {
         if (!newItem.isEmpty()) {
             ItemDefinition oldMapping = ItemTranslator.getBedrockItemDefinition(session, oldItem);
             ItemDefinition newMapping = ItemTranslator.getBedrockItemDefinition(session, newItem);
             if (oldMapping.equals(newMapping)) {
                 newItem.setNetId(oldItem.getNetId());
+                newItem.mergeBundleData(session, oldItem.getBundleData());
             } else {
                 newItem.setNetId(session.getNextItemNetId());
+                session.getBundleCache().markNewBundle(newItem.getBundleData());
+                session.getBundleCache().onOldItemDelete(oldItem);
             }
+        } else {
+            // Empty item means no more bundle if one existed.
+            session.getBundleCache().onOldItemDelete(oldItem);
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/click/Click.java b/core/src/main/java/org/geysermc/geyser/inventory/click/Click.java
index 6897786c1..cf16d0b6f 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/click/Click.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/click/Click.java
@@ -31,7 +31,10 @@ import lombok.AllArgsConstructor;
 @AllArgsConstructor
 public enum Click {
     LEFT(ContainerActionType.CLICK_ITEM, ClickItemAction.LEFT_CLICK),
+    LEFT_BUNDLE(ContainerActionType.CLICK_ITEM, ClickItemAction.LEFT_CLICK),
+    LEFT_BUNDLE_FROM_CURSOR(ContainerActionType.CLICK_ITEM, ClickItemAction.LEFT_CLICK),
     RIGHT(ContainerActionType.CLICK_ITEM, ClickItemAction.RIGHT_CLICK),
+    RIGHT_BUNDLE(ContainerActionType.CLICK_ITEM, ClickItemAction.RIGHT_CLICK),
     LEFT_SHIFT(ContainerActionType.SHIFT_CLICK_ITEM, ShiftClickItemAction.LEFT_CLICK),
     DROP_ONE(ContainerActionType.DROP_ITEM, DropItemAction.DROP_FROM_SELECTED),
     DROP_ALL(ContainerActionType.DROP_ITEM, DropItemAction.DROP_SELECTED_STACK),
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/click/ClickPlan.java b/core/src/main/java/org/geysermc/geyser/inventory/click/ClickPlan.java
index 9d6f4d3e3..d4344f6e8 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/click/ClickPlan.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/click/ClickPlan.java
@@ -25,19 +25,26 @@
 
 package org.geysermc.geyser.inventory.click;
 
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerActionType;
-import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.data.game.inventory.MoveToHotbarAction;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClickPacket;
-import it.unimi.dsi.fastutil.ints.*;
+import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
+import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
+import it.unimi.dsi.fastutil.ints.IntSet;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.SlotType;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.inventory.BundleInventoryTranslator;
 import org.geysermc.geyser.translator.inventory.CraftingInventoryTranslator;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.geyser.util.thirdparty.Fraction;
+import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerActionType;
+import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
+import org.geysermc.mcprotocollib.protocol.data.game.inventory.MoveToHotbarAction;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClickPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSelectBundleItemPacket;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
 import org.jetbrains.annotations.Contract;
 
 import java.util.ArrayList;
@@ -52,7 +59,8 @@ public final class ClickPlan {
      */
     private Int2ObjectMap<ItemStack> changedItems;
     private GeyserItemStack simulatedCursor;
-    private boolean finished;
+    private int desiredBundleSlot;
+    private boolean executionBegan;
 
     private final GeyserSession session;
     private final InventoryTranslator translator;
@@ -67,7 +75,7 @@ public final class ClickPlan {
         this.simulatedItems = new Int2ObjectOpenHashMap<>(inventory.getSize());
         this.changedItems = null;
         this.simulatedCursor = session.getPlayerInventory().getCursor().copy();
-        this.finished = false;
+        this.executionBegan = false;
 
         gridSize = translator.getGridSize();
     }
@@ -82,7 +90,7 @@ public final class ClickPlan {
     }
 
     public void add(Click click, int slot, boolean force) {
-        if (finished)
+        if (executionBegan)
             throw new UnsupportedOperationException("ClickPlan already executed");
 
         if (click == Click.LEFT_OUTSIDE || click == Click.RIGHT_OUTSIDE) {
@@ -97,6 +105,7 @@ public final class ClickPlan {
     }
 
     public void execute(boolean refresh) {
+        executionBegan = true;
         //update geyser inventory after simulation to avoid net id desync
         resetSimulation();
         ListIterator<ClickAction> planIter = plan.listIterator();
@@ -159,7 +168,27 @@ public final class ClickPlan {
         for (Int2ObjectMap.Entry<GeyserItemStack> simulatedSlot : simulatedItems.int2ObjectEntrySet()) {
             inventory.setItem(simulatedSlot.getIntKey(), simulatedSlot.getValue(), session);
         }
-        finished = true;
+    }
+
+    public void executeForCreativeMode() {
+        executionBegan = true;
+        //update geyser inventory after simulation to avoid net id desync
+        resetSimulation();
+        changedItems = new Int2ObjectOpenHashMap<>();
+        for (ClickAction action : plan) {
+            simulateAction(action);
+        }
+        session.getPlayerInventory().setCursor(simulatedCursor, session);
+        for (Int2ObjectMap.Entry<GeyserItemStack> simulatedSlot : simulatedItems.int2ObjectEntrySet()) {
+            inventory.setItem(simulatedSlot.getIntKey(), simulatedSlot.getValue(), session);
+        }
+        for (Int2ObjectMap.Entry<ItemStack> changedSlot : changedItems.int2ObjectEntrySet()) {
+            ItemStack value = changedSlot.getValue();
+            ItemStack toSend = InventoryUtils.isEmpty(value) ? new ItemStack(-1, 0, null) : value;
+            session.sendDownstreamGamePacket(
+                new ServerboundSetCreativeModeSlotPacket((short) changedSlot.getIntKey(), toSend)
+            );
+        }
     }
 
     public Inventory getInventory() {
@@ -187,6 +216,10 @@ public final class ClickPlan {
         return simulatedItems.computeIfAbsent(slot, k -> inventory.getItem(slot).copy());
     }
 
+    public void setDesiredBundleSlot(int desiredBundleSlot) {
+        this.desiredBundleSlot = desiredBundleSlot;
+    }
+
     public GeyserItemStack getCursor() {
         return simulatedCursor;
     }
@@ -275,8 +308,60 @@ public final class ClickPlan {
                     } else if (InventoryUtils.canStack(cursor, clicked)) {
                         cursor.sub(1);
                         add(action.slot, clicked, 1);
+                    } else {
+                        // Can't stack, but both the cursor and the slot have an item
+                        // (Called for bundles)
+                        setCursor(clicked);
+                        setItem(action.slot, cursor);
                     }
                     break;
+                case LEFT_BUNDLE:
+                    Fraction bundleWeight = BundleInventoryTranslator.calculateBundleWeight(clicked.getBundleData().contents());
+                    int amountToAddInBundle = Math.min(BundleInventoryTranslator.capacityForItemStack(bundleWeight, cursor), cursor.getAmount());
+                    GeyserItemStack toInsertInBundle = cursor.copy(amountToAddInBundle);
+                    if (executionBegan) {
+                        clicked.getBundleData().contents().add(0, toInsertInBundle);
+                        session.getBundleCache().onItemAdded(clicked); // Must be run before onSlotItemChange as the latter exports an ItemStack from the bundle
+                    }
+                    onSlotItemChange(action.slot, clicked);
+                    cursor.sub(amountToAddInBundle);
+                    break;
+                case LEFT_BUNDLE_FROM_CURSOR:
+                    List<GeyserItemStack> contents = cursor.getBundleData().contents();
+                    bundleWeight = BundleInventoryTranslator.calculateBundleWeight(contents);
+                    amountToAddInBundle = Math.min(BundleInventoryTranslator.capacityForItemStack(bundleWeight, clicked), clicked.getAmount());
+                    toInsertInBundle = clicked.copy(amountToAddInBundle);
+                    if (executionBegan) {
+                        cursor.getBundleData().contents().add(0, toInsertInBundle);
+                        session.getBundleCache().onItemAdded(cursor);
+                    }
+                    sub(action.slot, clicked, amountToAddInBundle);
+                    break;
+                case RIGHT_BUNDLE:
+                    if (!cursor.isEmpty()) {
+                        // Bundle should be in player's hand.
+                        GeyserItemStack itemStack = cursor.getBundleData()
+                            .contents()
+                            .remove(0);
+                        if (executionBegan) {
+                            session.getBundleCache().onItemRemoved(cursor, 0);
+                        }
+                        setItem(action.slot, itemStack);
+                        break;
+                    }
+
+                    if (executionBegan) {
+                        sendSelectedBundleSlot(action.slot);
+                    }
+                    GeyserItemStack itemStack = clicked.getBundleData()
+                        .contents()
+                        .remove(desiredBundleSlot);
+                    if (executionBegan) {
+                        session.getBundleCache().onItemRemoved(clicked, desiredBundleSlot);
+                    }
+                    onSlotItemChange(action.slot, clicked);
+                    setCursor(itemStack);
+                    break;
                 case SWAP_TO_HOTBAR_1:
                     swap(action.slot, inventory.getOffsetForHotbar(0), clicked);
                     break;
@@ -319,6 +404,11 @@ public final class ClickPlan {
         }
     }
 
+    private void sendSelectedBundleSlot(int slot) {
+        // Looks like this is also technically sent in creative mode.
+        session.sendDownstreamGamePacket(new ServerboundSelectBundleItemPacket(slot, desiredBundleSlot));
+    }
+
     /**
      * Swap between two inventory slots without a cursor. This should only be used with {@link ContainerActionType#MOVE_TO_HOTBAR_SLOT}
      */
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 3bdf23e39..b3a38f32f 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -158,6 +158,7 @@ import org.geysermc.geyser.session.auth.AuthData;
 import org.geysermc.geyser.session.auth.BedrockClientData;
 import org.geysermc.geyser.session.cache.AdvancementsCache;
 import org.geysermc.geyser.session.cache.BookEditCache;
+import org.geysermc.geyser.session.cache.BundleCache;
 import org.geysermc.geyser.session.cache.ChunkCache;
 import org.geysermc.geyser.session.cache.EntityCache;
 import org.geysermc.geyser.session.cache.EntityEffectCache;
@@ -275,6 +276,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     private final AdvancementsCache advancementsCache;
     private final BookEditCache bookEditCache;
+    private final BundleCache bundleCache;
     private final ChunkCache chunkCache;
     private final EntityCache entityCache;
     private final EntityEffectCache effectCache;
@@ -677,6 +679,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
         this.advancementsCache = new AdvancementsCache(this);
         this.bookEditCache = new BookEditCache(this);
+        this.bundleCache = new BundleCache(this);
         this.chunkCache = new ChunkCache(this);
         this.entityCache = new EntityCache(this);
         this.effectCache = new EntityEffectCache();
@@ -1352,6 +1355,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
                 }
             }
 
+            this.bundleCache.tick();
+
             if (spawned) {
                 // Could move this to the PlayerAuthInput translator, in the event the player lags
                 // but this will work once we implement matching Java custom tick cycles
@@ -1470,6 +1475,13 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
                 hand, worldCache.nextPredictionSequence(), playerEntity.getYaw(), playerEntity.getPitch()));
     }
 
+    public void releaseItem() {
+        // Followed to the Minecraft Protocol specification outlined at wiki.vg
+        ServerboundPlayerActionPacket releaseItemPacket = new ServerboundPlayerActionPacket(PlayerAction.RELEASE_USE_ITEM, Vector3i.ZERO,
+            Direction.DOWN, 0);
+        sendDownstreamGamePacket(releaseItemPacket);
+    }
+
     /**
      * Checks to see if a shield is in either hand to activate blocking. If so, it sets the Bedrock client to display
      * blocking and sends a packet to the Java server.
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java
new file mode 100644
index 000000000..8ad31949b
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java
@@ -0,0 +1,383 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session.cache;
+
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.cloudburstmc.nbt.NbtMap;
+import org.cloudburstmc.nbt.NbtMapBuilder;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
+import org.cloudburstmc.protocol.bedrock.data.inventory.FullContainerName;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.cloudburstmc.protocol.bedrock.packet.ContainerRegistryCleanupPacket;
+import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
+import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.Inventory;
+import org.geysermc.geyser.inventory.PlayerInventory;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.tags.ItemTag;
+import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public final class BundleCache {
+    private static final int BUNDLE_CONTAINER_ID = 125; // BDS 1.21.44
+    private final GeyserSession session;
+    private int nextBundleId;
+
+    private int releaseTick = -1;
+
+    public BundleCache(GeyserSession session) {
+        this.session = session;
+    }
+
+    /**
+     * Checks to see if the given item from the server is a bundle.
+     * If so, we initialize our bundle cache.
+     */
+    public void initialize(GeyserItemStack itemStack) {
+        // Message before 1.21.4 - "Can't check for BUNDLE_CONTENTS, which may be missing if the bundle is empty."
+        // Now irrelevant, but keeping as-is for the time being.
+        if (session.getTagCache().is(ItemTag.BUNDLES, itemStack)) {
+            if (itemStack.getBundleData() != null) {
+                session.getGeyser().getLogger().warning("Stack has bundle data already! It should not!");
+                if (session.getGeyser().getConfig().isDebugMode()) {
+                    session.getGeyser().getLogger().debug("Player: " + session.javaUsername());
+                    session.getGeyser().getLogger().debug("Stack: " + itemStack);
+                }
+            }
+
+            BundleData bundleData;
+            List<ItemStack> rawContents = itemStack.getComponent(DataComponentType.BUNDLE_CONTENTS);
+            if (rawContents != null) {
+                // Use existing list and transform it to support net IDs
+                bundleData = new BundleData(session, rawContents);
+            } else {
+                // This is valid behavior (as of vanilla 1.21.2) if the bundle is empty.
+                // Create new list
+                bundleData = new BundleData();
+            }
+            itemStack.setBundleData(bundleData);
+        }
+    }
+
+    public void markNewBundle(@Nullable BundleData bundleData) {
+        if (bundleData == null) {
+            return;
+        }
+        if (bundleData.bundleId != -1) {
+            return;
+        }
+        bundleData.bundleId = nextBundleId++;
+        for (GeyserItemStack stack : bundleData.contents()) {
+            stack.setNetId(session.getNextItemNetId());
+            session.getBundleCache().markNewBundle(stack.getBundleData());
+        }
+    }
+
+    public ItemData checkForBundle(GeyserItemStack itemStack, ItemData.Builder itemData) {
+        if (itemStack.getBundleData() == null) {
+            return itemData.build();
+        }
+        // Not ideal, since Cloudburst NBT is immutable, but there isn't another ideal intersection between
+        // item instance tracking and item translation
+        // (Java just reads the contents of each item, while Bedrock kind of wants its own ID for each bundle item stack)
+        List<GeyserItemStack> contents = itemStack.getBundleData().contents();
+        int containerId = itemStack.getBundleId();
+
+        if (containerId == -1) {
+            session.getGeyser().getLogger().warning("Bundle ID should not be -1!");
+        }
+
+        NbtMap nbt = itemData.build().getTag();
+        NbtMapBuilder builder = nbt == null ? NbtMap.builder() : nbt.toBuilder();
+        builder.putInt("bundle_id", containerId);
+        itemData.tag(builder.build());
+
+        // Now that the tag is updated...
+        ItemData finalItem = itemData.build();
+
+        if (!itemStack.getBundleData().triggerFullContentsUpdate) {
+            // We are probably in the middle of updating one slot. Let's save bandwidth! :)
+            return finalItem;
+        }
+
+        // This is how BDS does it, so while it isn't pretty, it is accurate.
+        // Ensure that all bundle slots are cleared when we re-send data.
+        // Otherwise, if we don't indicate an item for a slot, Bedrock will think
+        // the old item still exists.
+        ItemData[] array = new ItemData[64];
+        Arrays.fill(array, ItemData.AIR);
+        List<ItemData> bedrockItems = Arrays.asList(array);
+        // Reverse order to ensure contents line up with Java.
+        int j = 0;
+        for (int i = contents.size() - 1; i >= 0; i--) {
+            // Ensure item data can be tracked
+            bedrockItems.set(j++, contents.get(i).getItemData(session));
+        }
+        InventoryContentPacket packet = new InventoryContentPacket();
+        packet.setContainerId(BUNDLE_CONTAINER_ID);
+        packet.setContents(bedrockItems);
+        packet.setContainerNameData(BundleCache.createContainer(containerId));
+        packet.setStorageItem(finalItem);
+        session.sendUpstreamPacket(packet);
+
+        return finalItem;
+    }
+
+    /*
+     * We need to send an InventorySlotPacket to the Bedrock client so it updates its changes and doesn't desync.
+     */
+
+    public void onItemAdded(GeyserItemStack bundle) {
+        BundleData data = bundle.getBundleData();
+        data.freshFromServer = false;
+        data.triggerFullContentsUpdate = false;
+
+        List<GeyserItemStack> contents = data.contents();
+        int bedrockSlot = platformConvertSlot(contents.size(), 0);
+        ItemData bedrockContent = contents.get(0).getItemData(session);
+
+        sendInventoryPacket(data.bundleId(), bedrockSlot, bedrockContent, bundle.getItemData(session));
+
+        data.triggerFullContentsUpdate = true;
+    }
+
+    public void onItemRemoved(GeyserItemStack bundle, int slot) {
+        // Whatever item used to be in here should have been removed *before* this was triggered.
+        BundleData data = bundle.getBundleData();
+        data.freshFromServer = false;
+        data.triggerFullContentsUpdate = false;
+
+        List<GeyserItemStack> contents = data.contents();
+        ItemData baseBundle = bundle.getItemData(session);
+        // This first slot is now blank!
+        sendInventoryPacket(data.bundleId(), platformConvertSlot(contents.size() + 1, 0), ItemData.AIR, baseBundle);
+        // Adjust the index of every item that came before this item.
+        for (int i = 0; i < slot; i++) {
+            sendInventoryPacket(data.bundleId(), platformConvertSlot(contents.size(), i),
+                contents.get(i).getItemData(session), baseBundle);
+        }
+
+        data.triggerFullContentsUpdate = true;
+    }
+
+    private void sendInventoryPacket(int bundleId, int bedrockSlot, ItemData bedrockContent, ItemData baseBundle) {
+        InventorySlotPacket packet = new InventorySlotPacket();
+        packet.setContainerId(BUNDLE_CONTAINER_ID);
+        packet.setItem(bedrockContent);
+        packet.setSlot(bedrockSlot);
+        packet.setContainerNameData(createContainer(bundleId));
+        packet.setStorageItem(baseBundle);
+        session.sendUpstreamPacket(packet);
+    }
+
+    /**
+     * If a bundle is no longer present in the working inventory, delete the cache
+     * from the client.
+     */
+    public void onOldItemDelete(GeyserItemStack itemStack) {
+        if (itemStack.getBundleId() != -1) {
+            // Clean up old container ID, to match BDS behavior.
+            ContainerRegistryCleanupPacket packet = new ContainerRegistryCleanupPacket();
+            packet.getContainers().add(createContainer(itemStack.getBundleId()));
+            session.sendUpstreamPacket(packet);
+        }
+    }
+
+    public void onInventoryClose(Inventory inventory) {
+        if (inventory instanceof PlayerInventory) {
+            // Don't bother; items are still here.
+            return;
+        }
+
+        for (int i = 0; i < inventory.getSize(); i++) {
+            GeyserItemStack item = inventory.getItem(i);
+            onOldItemDelete(item);
+        }
+    }
+
+    /* All utilities to track when a release item packet should be sent.
+    * As of 1.21.50, Bedrock seems to be picky and inspecific when sending its own release packet,
+    * but if Java does not receive a release packet, then it will continue to drop items out of a bundle.
+    * This workaround releases items on behalf of the client if it does not send a packet, while respecting
+    * if Bedrock sends its own. */
+
+    public void awaitRelease() {
+        if (session.getTagCache().is(ItemTag.BUNDLES, session.getPlayerInventory().getItemInHand())) {
+            releaseTick = session.getTicks() + 1;
+        }
+    }
+
+    public void markRelease() {
+        releaseTick = -1;
+    }
+
+    public void tick() {
+        if (this.releaseTick != -1) {
+            if (session.getTicks() >= this.releaseTick) {
+                session.releaseItem();
+                markRelease();
+            }
+        }
+    }
+
+    /**
+     * Bidirectional; works for both Bedrock and Java.
+     */
+    public static int platformConvertSlot(int contentsSize, int rawSlot) {
+        return contentsSize - rawSlot - 1;
+    }
+
+    public static FullContainerName createContainer(int id) {
+        return new FullContainerName(ContainerSlotType.DYNAMIC_CONTAINER, id);
+    }
+
+    /**
+     * Primarily exists to support net IDs within bundles.
+     * Important to prevent accidental item deletion in creative mode.
+     */
+    public static final class BundleData {
+        private final List<GeyserItemStack> contents;
+        /**
+         * Will be set to a positive integer after checking for existing bundle data.
+         */
+        private int bundleId = -1;
+        /**
+         * If false, blocks a complete InventoryContentPacket being sent to the server.
+         */
+        private boolean triggerFullContentsUpdate = true;
+        /**
+         * Sets whether data is accurate from the server; if so, any old bundle contents
+         * will be overwritten.
+         * This will be set to false if we are the most recent change-makers.
+         */
+        private boolean freshFromServer = true;
+
+        BundleData(GeyserSession session, List<ItemStack> contents) {
+            this();
+            for (ItemStack content : contents) {
+                GeyserItemStack itemStack = GeyserItemStack.from(content);
+                // Check recursively
+                session.getBundleCache().initialize(itemStack);
+                this.contents.add(itemStack);
+            }
+        }
+
+        BundleData() {
+            this.contents = new ArrayList<>();
+        }
+
+        public int bundleId() {
+            return bundleId;
+        }
+
+        public List<GeyserItemStack> contents() {
+            return contents;
+        }
+
+        public boolean freshFromServer() {
+            return freshFromServer;
+        }
+
+        public List<ItemStack> toComponent() {
+            List<ItemStack> component = new ArrayList<>(this.contents.size());
+            for (GeyserItemStack content : this.contents) {
+                component.add(content.getItemStack());
+            }
+            return component;
+        }
+
+        /**
+         * Merge in changes from the server and re-use net IDs where possible.
+         */
+        public void updateNetIds(GeyserSession session, BundleData oldData) {
+            List<GeyserItemStack> oldContents = oldData.contents();
+            // Items can't exactly be rearranged in a bundle; they can only be removed at an index, or inserted.
+            int oldIndex = 0;
+            for (int newIndex = 0; newIndex < this.contents.size(); newIndex++) {
+                GeyserItemStack itemStack = this.contents.get(newIndex);
+                if (oldIndex >= oldContents.size()) {
+                    // Assume new item if it goes out of bounds of our existing stack
+                    if (this.freshFromServer) {
+                        // Only update net IDs for new items if the data is fresh from server.
+                        // Otherwise, we can update net IDs for something that already has
+                        // net IDs allocated, which can cause desyncs.
+                        Inventory.updateItemNetId(GeyserItemStack.EMPTY, itemStack, session);
+                        session.getBundleCache().markNewBundle(itemStack.getBundleData());
+                    }
+                    continue;
+                }
+
+                GeyserItemStack oldItem = oldContents.get(oldIndex);
+                // If it stacks with the old item at this index, then
+                if (!InventoryUtils.canStack(oldItem, itemStack)) {
+                    // New item?
+                    boolean found = false;
+                    if (oldIndex + 1 < oldContents.size()) {
+                        oldItem = oldContents.get(oldIndex + 1);
+                        if (InventoryUtils.canStack(oldItem, itemStack)) {
+                            // Permanently increment and assume all contents shifted here
+                            oldIndex++;
+                            found = true;
+                        }
+                    }
+                    if (!found && oldIndex - 1 >= 0) {
+                        oldItem = oldContents.get(oldIndex - 1);
+                        if (InventoryUtils.canStack(oldItem, itemStack)) {
+                            // Permanently decrement and assume all contents shifted here
+                            oldIndex--;
+                            found = true;
+                        }
+                    }
+                    if (!found) {
+                        oldItem = GeyserItemStack.EMPTY;
+                    }
+                }
+
+                if (oldItem != GeyserItemStack.EMPTY || this.freshFromServer) {
+                    Inventory.updateItemNetId(oldItem, itemStack, session);
+                }
+                oldIndex++;
+            }
+            this.bundleId = oldData.bundleId();
+        }
+
+        public BundleData copy() {
+            BundleData data = new BundleData();
+            data.bundleId = this.bundleId;
+            for (GeyserItemStack content : this.contents) {
+                data.contents.add(content.copy());
+            }
+            data.freshFromServer = this.freshFromServer;
+            return data;
+        }
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
new file mode 100644
index 000000000..1b42e537f
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
@@ -0,0 +1,339 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.inventory;
+
+import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
+import it.unimi.dsi.fastutil.ints.IntSet;
+import it.unimi.dsi.fastutil.ints.IntSets;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.ItemStackRequestAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.SwapAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.TransferItemStackRequestAction;
+import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponse;
+import org.geysermc.geyser.inventory.GeyserItemStack;
+import org.geysermc.geyser.inventory.Inventory;
+import org.geysermc.geyser.inventory.click.Click;
+import org.geysermc.geyser.inventory.click.ClickPlan;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.BundleCache;
+import org.geysermc.geyser.util.InventoryUtils;
+import org.geysermc.geyser.util.thirdparty.Fraction;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
+
+import java.util.List;
+
+import static org.geysermc.geyser.translator.inventory.InventoryTranslator.*;
+
+public final class BundleInventoryTranslator {
+    /**
+     * @return a processed bundle interaction, or null to resume normal transaction handling.
+     */
+    @Nullable
+    static ItemStackResponse handleBundle(GeyserSession session, InventoryTranslator translator, Inventory inventory, ItemStackRequest request, boolean sendCreativePackets) {
+        TransferItemStackRequestAction action = null;
+        for (ItemStackRequestAction requestAction : request.getActions()) {
+            if (requestAction instanceof SwapAction swapAction) {
+                if (isBundle(swapAction.getSource()) && isBundle(swapAction.getDestination())) {
+                    // Can be seen when inserting an item that's already present within the bundle
+                    continue;
+                }
+                return null;
+            }
+
+            if (!(requestAction instanceof TransferItemStackRequestAction transferAction)) {
+                // No other known bundle action that does not use transfer actions
+                return null;
+            }
+            boolean sourceIsBundle = isBundle(transferAction.getSource());
+            boolean destIsBundle = isBundle(transferAction.getDestination());
+            if (sourceIsBundle && destIsBundle) {
+                // The client is rearranging the bundle inventory; we're going to ignore translating these actions.
+                continue;
+            }
+            if (sourceIsBundle || destIsBundle) {
+                // This action is moving to a bundle or moving out of a bundle. This is the one we want to track
+                action = transferAction;
+            } else {
+                // Neither location is a bundle location. We don't need to deal with this here.
+                return null;
+            }
+        }
+        if (action == null) {
+            return null;
+        }
+
+        ClickPlan plan = new ClickPlan(session, translator, inventory);
+        if (isBundle(action.getDestination())) {
+            // Placing into bundle
+            var bundleSlotData = action.getDestination();
+            var inventorySlotData = action.getSource();
+            int bundleId = bundleSlotData.getContainerName().getDynamicId();
+            GeyserItemStack cursor = session.getPlayerInventory().getCursor();
+
+            if (cursor.getBundleId() == bundleId) {
+                List<GeyserItemStack> contents = cursor.getBundleData().contents();
+                // Placing items into bundles can mean their contents are empty
+
+                // We are currently holding the bundle and trying to pick an item up.
+                int sourceSlot = translator.bedrockSlotToJava(inventorySlotData);
+                GeyserItemStack sourceItem = inventory.getItem(sourceSlot);
+                if (sourceItem.isEmpty()) {
+                    // This would be treated as just... plumping the bundle down,
+                    // and that should not be called here.
+                    return rejectRequest(request);
+                }
+                if (inventorySlotData.getStackNetworkId() != sourceItem.getNetId()) {
+                    return rejectRequest(request);
+                }
+
+                // Note that this is also called in ClickPlan. Not ideal...
+                Fraction bundleWeight = calculateBundleWeight(contents);
+                int allowedCapacity = Math.min(capacityForItemStack(bundleWeight, sourceItem), sourceItem.getAmount());
+
+                if (action.getCount() != allowedCapacity) {
+                    // Might trigger if bundle weight is different between Java and Bedrock (see calculateBundleWeight)
+                    return rejectRequest(request);
+                }
+
+                plan.add(Click.LEFT_BUNDLE_FROM_CURSOR, sourceSlot);
+                if (sendCreativePackets) {
+                    plan.executeForCreativeMode();
+                } else {
+                    plan.execute(false);
+                }
+                return acceptRequest(request, translator.makeContainerEntries(session, inventory, IntSets.singleton(sourceSlot)));
+            }
+
+            for (int javaSlot = 0; javaSlot < inventory.getSize(); javaSlot++) {
+                GeyserItemStack bundle = inventory.getItem(javaSlot);
+                if (bundle.getBundleId() != bundleId) {
+                    continue;
+                }
+
+                if (!translator.checkNetId(session, inventory, inventorySlotData)) {
+                    return rejectRequest(request);
+                }
+
+                // Placing items into bundles can mean their contents are empty
+                // Bundle slot does not matter; Java always appends an item to the beginning of a bundle inventory
+
+                IntSet affectedSlots = new IntOpenHashSet(2);
+                affectedSlots.add(javaSlot);
+
+                boolean slotIsInventory = !isCursor(inventorySlotData);
+                int sourceSlot;
+                // If source is cursor, logic lines up better with Java.
+                if (slotIsInventory) {
+                    // Simulate picking up the item and adding it to our cursor,
+                    // which is what Java would expect
+                    sourceSlot = translator.bedrockSlotToJava(inventorySlotData);
+                    plan.add(Click.LEFT, sourceSlot);
+                    affectedSlots.add(sourceSlot);
+                } else {
+                    sourceSlot = -1;
+                }
+
+                Fraction bundleWeight = calculateBundleWeight(bundle.getBundleData().contents());
+                // plan.getCursor() covers if we just picked up the item above from a slot
+                int allowedCapacity = Math.min(capacityForItemStack(bundleWeight, plan.getCursor()), plan.getCursor().getAmount());
+                if (action.getCount() != allowedCapacity) {
+                    // Might trigger if bundle weight is different between Java and Bedrock (see calculateBundleWeight)
+                    return rejectRequest(request);
+                }
+
+                plan.add(Click.LEFT_BUNDLE, javaSlot);
+
+                if (slotIsInventory && allowedCapacity != plan.getCursor().getAmount()) {
+                    // We will need to place the item back in its original slot.
+                    plan.add(Click.LEFT, sourceSlot);
+                }
+
+                if (sendCreativePackets) {
+                    plan.executeForCreativeMode();
+                } else {
+                    plan.execute(false);
+                }
+                return acceptRequest(request, translator.makeContainerEntries(session, inventory, affectedSlots));
+            }
+
+            // Could not find bundle in inventory
+
+        } else {
+            // Taking from bundle
+            var bundleSlotData = action.getSource();
+            var inventorySlotData = action.getDestination();
+            int bundleId = bundleSlotData.getContainerName().getDynamicId();
+            GeyserItemStack cursor = session.getPlayerInventory().getCursor();
+            if (cursor.getBundleId() == bundleId) {
+                // We are currently holding the bundle
+                List<GeyserItemStack> contents = cursor.getBundleData().contents();
+                if (contents.isEmpty()) {
+                    // Nothing would be ejected?
+                    return rejectRequest(request);
+                }
+
+                // Can't select bundle slots while holding bundle in any version; don't set desired bundle slot
+
+                if (bundleSlotData.getStackNetworkId() != contents.get(0).getNetId()) {
+                    // We're pulling out the first item; if something mismatches, wuh oh.
+                    return rejectRequest(request);
+                }
+
+                int destSlot = translator.bedrockSlotToJava(inventorySlotData);
+                if (!inventory.getItem(destSlot).isEmpty()) {
+                    // Illegal action to place an item down on an existing stack, even if
+                    // the bundle contains the item.
+                    return rejectRequest(request);
+                }
+                plan.add(Click.RIGHT_BUNDLE, destSlot);
+                if (sendCreativePackets) {
+                    plan.executeForCreativeMode();
+                } else {
+                    plan.execute(false);
+                }
+                return acceptRequest(request, translator.makeContainerEntries(session, inventory, IntSets.singleton(destSlot)));
+            }
+
+            // We need context of what slot the bundle is in.
+            for (int javaSlot = 0; javaSlot < inventory.getSize(); javaSlot++) {
+                GeyserItemStack bundle = inventory.getItem(javaSlot);
+                if (bundle.getBundleId() != bundleId) {
+                    continue;
+                }
+
+                List<GeyserItemStack> contents = bundle.getBundleData().contents();
+                int rawSelectedSlot = bundleSlotData.getSlot();
+                if (rawSelectedSlot >= contents.size()) {
+                    // Illegal?
+                    return rejectRequest(request);
+                }
+
+                // Bedrock's indexes are flipped around - first item shown to it is the last index.
+                int slot = BundleCache.platformConvertSlot(contents.size(), rawSelectedSlot);
+                plan.setDesiredBundleSlot(slot);
+
+                // We'll need it even if the final destination isn't the cursor.
+                // I can't think of a situation where we shouldn't reject it and use a temp slot,
+                // but we will see.
+                if (!cursor.isEmpty()) {
+                    return rejectRequest(request);
+                }
+
+                IntSet affectedSlots = new IntOpenHashSet(2);
+                affectedSlots.add(javaSlot);
+                GeyserItemStack bundledItem = contents.get(slot);
+                if (bundledItem.getNetId() != bundleSlotData.getStackNetworkId()) {
+                    // !!!
+                    return rejectRequest(request);
+                }
+
+                plan.add(Click.RIGHT_BUNDLE, javaSlot);
+                // If false, simple logic that matches nicely with Java Edition
+                if (!isCursor(inventorySlotData)) {
+                    // Alas, two-click time.
+                    int destSlot = translator.bedrockSlotToJava(inventorySlotData);
+                    GeyserItemStack existing = inventory.getItem(destSlot);
+
+                    // Empty slot is good, but otherwise let's just check that
+                    // the two can stack...
+                    if (!existing.isEmpty()) {
+                        if (!InventoryUtils.canStack(bundledItem, existing)) {
+                            return rejectRequest(request);
+                        }
+                    }
+
+                    // Copy the full stack to the new slot.
+                    plan.add(Click.LEFT, destSlot);
+                    affectedSlots.add(destSlot);
+                }
+
+                if (sendCreativePackets) {
+                    plan.executeForCreativeMode();
+                } else {
+                    plan.execute(false);
+                }
+                return acceptRequest(request, translator.makeContainerEntries(session, inventory, affectedSlots));
+            }
+
+            // Could not find bundle in inventory
+        }
+        return rejectRequest(request);
+    }
+
+    private static final Fraction BUNDLE_IN_BUNDLE_WEIGHT = Fraction.getFraction(1, 16);
+
+    public static Fraction calculateBundleWeight(List<GeyserItemStack> contents) {
+        Fraction fraction = Fraction.ZERO;
+
+        for (GeyserItemStack content : contents) {
+            fraction = fraction.add(calculateWeight(content)
+                .multiplyBy(Fraction.getFraction(content.getAmount(), 1)));
+        }
+
+        return fraction;
+    }
+
+    private static Fraction calculateWeight(GeyserItemStack itemStack) {
+        if (itemStack.getBundleData() != null) {
+            return BUNDLE_IN_BUNDLE_WEIGHT.add(calculateBundleWeight(itemStack.getBundleData().contents()));
+        }
+        DataComponents components = itemStack.getComponents();
+        if (components != null) {
+            // NOTE: this seems to be Java-only, so it can technically cause a bundle weight desync,
+            // but it'll be so rare we can probably ignore it.
+            List<?> bees = components.get(DataComponentType.BEES);
+            if (bees != null && !bees.isEmpty()) {
+                // Bees be heavy, I guess.
+                return Fraction.ONE;
+            }
+        }
+        return Fraction.getFraction(1, itemStack.getComponentOrFallback(DataComponentType.MAX_STACK_SIZE, itemStack.asItem().defaultMaxStackSize()));
+    }
+
+    public static int capacityForItemStack(Fraction bundleWeight, GeyserItemStack itemStack) {
+        Fraction inverse = Fraction.ONE.subtract(bundleWeight);
+        return Math.max(inverse.divideBy(calculateWeight(itemStack)).intValue(), 0);
+    }
+
+    static boolean isBundle(ItemStackRequestSlotData slotData) {
+        return slotData.getContainerName().getContainer() == ContainerSlotType.DYNAMIC_CONTAINER;
+    }
+
+    static boolean isBundle(ClickPlan plan, int slot) {
+        return isBundle(plan.getItem(slot));
+    }
+
+    static boolean isBundle(GeyserItemStack stack) {
+        return stack.getBundleData() != null;
+    }
+
+    private BundleInventoryTranslator() {
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index b4f507af5..e6c670eea 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -86,6 +86,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.geysermc.geyser.translator.inventory.BundleInventoryTranslator.isBundle;
+
 @AllArgsConstructor
 public abstract class InventoryTranslator {
 
@@ -241,6 +243,13 @@ public abstract class InventoryTranslator {
                         return rejectRequest(request);
                     }
 
+                    // Might be a bundle action... let's check.
+                    ItemStackResponse bundleResponse = BundleInventoryTranslator.handleBundle(session, this, inventory, request, false);
+                    if (bundleResponse != null) {
+                        // We can simplify a lot of logic because we aren't expecting multi-slot interactions.
+                        return bundleResponse;
+                    }
+
                     int sourceSlot = bedrockSlotToJava(transferAction.getSource());
                     int destSlot = bedrockSlotToJava(transferAction.getDestination());
                     boolean isSourceCursor = isCursor(transferAction.getSource());
@@ -393,6 +402,7 @@ public abstract class InventoryTranslator {
                     break;
                 }
                 case SWAP: {
+                    // TODO breaks with bundles
                     SwapAction swapAction = (SwapAction) action;
                     ItemStackRequestSlotData source = swapAction.getSource();
                     ItemStackRequestSlotData destination = swapAction.getDestination();
@@ -426,18 +436,24 @@ public abstract class InventoryTranslator {
                         }
                     }
 
+                    // A note on all the bundle checks for clicks...
+                    // Left clicking in these contexts can count as using the bundle
+                    // and adding the stack to the contents of the bundle.
+                    // In these cases, we can safely use right-clicking while holding the bundle
+                    // as its stack size is 1.
+
                     if (isSourceCursor && isDestCursor) { //???
                         return rejectRequest(request);
                     } else if (isSourceCursor) { //swap cursor
                         if (InventoryUtils.canStack(cursor, plan.getItem(destSlot))) { //TODO: cannot simply swap if cursor stacks with slot (temp slot)
                             return rejectRequest(request);
                         }
-                        plan.add(Click.LEFT, destSlot);
+                        plan.add(isBundle(plan, destSlot) || isBundle(cursor) ? Click.RIGHT : Click.LEFT, destSlot);
                     } else if (isDestCursor) { //swap cursor
                         if (InventoryUtils.canStack(cursor, plan.getItem(sourceSlot))) { //TODO
                             return rejectRequest(request);
                         }
-                        plan.add(Click.LEFT, sourceSlot);
+                        plan.add(isBundle(plan, sourceSlot) || isBundle(cursor) ? Click.RIGHT : Click.LEFT, sourceSlot);
                     } else {
                         if (!cursor.isEmpty()) { //TODO: (temp slot)
                             return rejectRequest(request);
@@ -449,7 +465,7 @@ public abstract class InventoryTranslator {
                             return rejectRequest(request);
                         }
                         plan.add(Click.LEFT, sourceSlot); //pickup source into cursor
-                        plan.add(Click.LEFT, destSlot); //swap cursor with dest slot
+                        plan.add(isBundle(plan, sourceSlot) || isBundle(plan, destSlot) ? Click.RIGHT : Click.LEFT, destSlot); //swap cursor with dest slot
                         plan.add(Click.LEFT, sourceSlot); //release cursor onto source
                     }
                     break;
@@ -915,6 +931,11 @@ public abstract class InventoryTranslator {
     }
 
     public boolean checkNetId(GeyserSession session, Inventory inventory, ItemStackRequestSlotData slotInfoData) {
+        if (BundleInventoryTranslator.isBundle(slotInfoData)) {
+            // Will thoroughly be investigated, if needed, in bundle checks.
+            return true;
+        }
+
         int netId = slotInfoData.getStackNetworkId();
         // "In my testing, sometimes the client thinks the netId of an item in the crafting grid is 1, even though we never said it was.
         // I think it only happens when we manually set the grid but that was my quick fix"
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index 445b4715b..371d61714 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -265,6 +265,15 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                         return rejectRequest(request, false);
                     }
 
+                    // Might be a bundle action... let's check.
+                    // If we're in creative mode, instead of replacing logic (more hassle for updates),
+                    // let's just reuse as much logic as possible!!
+                    ItemStackResponse bundleResponse = BundleInventoryTranslator.handleBundle(session, this, inventory, request, true);
+                    if (bundleResponse != null) {
+                        // We can simplify a lot of logic because we aren't expecting multi-slot interactions.
+                        return bundleResponse;
+                    }
+
                     int transferAmount = transferAction.getCount();
                     if (isCursor(transferAction.getDestination())) {
                         int sourceSlot = bedrockSlotToJava(transferAction.getSource());
@@ -415,6 +424,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
     @Override
     protected ItemStackResponse translateCreativeRequest(GeyserSession session, Inventory inventory, ItemStackRequest request) {
         ItemStack javaCreativeItem = null;
+        boolean bundle = false;
         IntSet affectedSlots = new IntOpenHashSet();
         CraftState craftState = CraftState.START;
         for (ItemStackRequestAction action : request.getActions()) {
@@ -469,8 +479,10 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                     if (isCursor(transferAction.getDestination())) {
                         if (session.getPlayerInventory().getCursor().isEmpty()) {
                             GeyserItemStack newItemStack = GeyserItemStack.from(javaCreativeItem);
+                            session.getBundleCache().initialize(newItemStack);
                             newItemStack.setAmount(transferAction.getCount());
                             session.getPlayerInventory().setCursor(newItemStack, session);
+                            bundle = newItemStack.getBundleData() != null;
                         } else {
                             session.getPlayerInventory().getCursor().add(transferAction.getCount());
                         }
@@ -479,8 +491,10 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                         int destSlot = bedrockSlotToJava(transferAction.getDestination());
                         if (inventory.getItem(destSlot).isEmpty()) {
                             GeyserItemStack newItemStack = GeyserItemStack.from(javaCreativeItem);
+                            session.getBundleCache().initialize(newItemStack);
                             newItemStack.setAmount(transferAction.getCount());
                             inventory.setItem(destSlot, newItemStack, session);
+                            bundle = newItemStack.getBundleData() != null;
                         } else {
                             inventory.getItem(destSlot).add(transferAction.getCount());
                         }
@@ -520,7 +534,11 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             int slot = it.nextInt();
             sendCreativeAction(session, inventory, slot);
         }
-        return acceptRequest(request, makeContainerEntries(session, inventory, affectedSlots));
+        // On the bundle check:
+        // We can also accept the request, but sending a bad request indicates to Geyser to refresh the inventory
+        // and we need to refresh the inventory to send the bundle ID/inventory to the client.
+        // It's not great, but I don't want to create a container class for request responses
+        return bundle ? rejectRequest(request, false) : acceptRequest(request, makeContainerEntries(session, inventory, affectedSlots));
     }
 
     private static void sendCreativeAction(GeyserSession session, Inventory inventory, int slot) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
index 422c45b9b..db1a05011 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
@@ -411,6 +411,8 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
 
                         session.useItem(Hand.MAIN_HAND);
 
+                        session.getBundleCache().awaitRelease();
+
                         List<LegacySetItemSlotData> legacySlots = packet.getLegacySlots();
                         if (packet.getActions().size() == 1 && !legacySlots.isEmpty()) {
                             InventoryActionData actionData = packet.getActions().get(0);
@@ -439,10 +441,8 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                 break;
             case ITEM_RELEASE:
                 if (packet.getActionType() == 0) {
-                    // Followed to the Minecraft Protocol specification outlined at wiki.vg
-                    ServerboundPlayerActionPacket releaseItemPacket = new ServerboundPlayerActionPacket(PlayerAction.RELEASE_USE_ITEM, Vector3i.ZERO,
-                            Direction.DOWN, 0);
-                    session.sendDownstreamGamePacket(releaseItemPacket);
+                    session.releaseItem();
+                    session.getBundleCache().markRelease();
                 }
                 break;
             case ITEM_USE_ON_ENTITY:
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java
index f2445856d..cc229b993 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetContentTranslator.java
@@ -64,6 +64,7 @@ public class JavaContainerSetContentTranslator extends PacketTranslator<Clientbo
             }
 
             GeyserItemStack newItem = GeyserItemStack.from(packet.getItems()[i]);
+            session.getBundleCache().initialize(newItem);
             inventory.setItem(i, newItem, session);
         }
 
@@ -73,7 +74,9 @@ public class JavaContainerSetContentTranslator extends PacketTranslator<Clientbo
         session.setEmulatePost1_16Logic(stateId > 0 || stateId != inventory.getStateId());
         inventory.setStateId(stateId);
 
-        session.getPlayerInventory().setCursor(GeyserItemStack.from(packet.getCarriedItem()), session);
+        GeyserItemStack cursor = GeyserItemStack.from(packet.getCarriedItem());
+        session.getBundleCache().initialize(cursor);
+        session.getPlayerInventory().setCursor(cursor, session);
         InventoryUtils.updateCursor(session);
 
         if (session.getInventoryTranslator() instanceof SmithingInventoryTranslator) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
index fe61c8579..0ef547248 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerSetSlotTranslator.java
@@ -93,6 +93,7 @@ public class JavaContainerSetSlotTranslator extends PacketTranslator<Clientbound
             }
 
             GeyserItemStack newItem = GeyserItemStack.from(packet.getItem());
+            session.getBundleCache().initialize(newItem);
             if (packet.getContainerId() == 0 && !(translator instanceof PlayerInventoryTranslator)) {
                 // In rare cases, the window ID can still be 0 but Java treats it as valid
                 // This behavior still exists as of Java Edition 1.21.2, despite the new packet
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java
index df11bf1af..649da8ea4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetCursorItemTranslator.java
@@ -38,6 +38,7 @@ public class JavaSetCursorItemTranslator extends PacketTranslator<ClientboundSet
     @Override
     public void translate(GeyserSession session, ClientboundSetCursorItemPacket packet) {
         GeyserItemStack newItem = GeyserItemStack.from(packet.getContents());
+        session.getBundleCache().initialize(newItem);
         session.getPlayerInventory().setCursor(newItem, session);
         InventoryUtils.updateCursor(session);
     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java
index 58b30bfc8..b64805227 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaSetPlayerInventoryTranslator.java
@@ -55,7 +55,9 @@ public class JavaSetPlayerInventoryTranslator extends PacketTranslator<Clientbou
             return;
         }
 
-        session.getPlayerInventory().setItem(slot, GeyserItemStack.from(packet.getContents()), session);
+        GeyserItemStack newItem = GeyserItemStack.from(packet.getContents());
+        session.getBundleCache().initialize(newItem);
+        session.getPlayerInventory().setItem(slot, newItem, session);
         InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), slot);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 14a64d57a..ba11a20c7 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -140,6 +140,7 @@ public class InventoryUtils {
             }
         }
         session.setInventoryTranslator(InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR);
+        session.getBundleCache().onInventoryClose(inventory);
         session.setOpenInventory(null);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/util/thirdparty/Fraction.java b/core/src/main/java/org/geysermc/geyser/util/thirdparty/Fraction.java
new file mode 100644
index 000000000..892743925
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/util/thirdparty/Fraction.java
@@ -0,0 +1,911 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.geysermc.geyser.util.thirdparty; // Geyser
+
+import java.math.BigInteger;
+import java.util.Objects;
+
+/**
+ * {@link Fraction} is a {@link Number} implementation that
+ * stores fractions accurately.
+ *
+ * <p>This class is immutable, and interoperable with most methods that accept
+ * a {@link Number}.</p>
+ *
+ * <p>Note that this class is intended for common use cases, it is <i>int</i>
+ * based and thus suffers from various overflow issues. For a BigInteger based
+ * equivalent, please see the Commons Math BigFraction class.</p>
+ *
+ * @since 2.0
+ */
+// Geyser: Java Edition uses this for 1.21.3 bundle calculation. Rather than
+// Reimplementing an open-source class or bringing in a whole library,
+// the single class is used to ensure accuracy.
+public final class Fraction extends Number implements Comparable<Fraction> {
+
+    /**
+     * Required for serialization support. Lang version 2.0.
+     *
+     * @see java.io.Serializable
+     */
+    private static final long serialVersionUID = 65382027393090L;
+
+    /**
+     * {@link Fraction} representation of 0.
+     */
+    public static final Fraction ZERO = new Fraction(0, 1);
+    /**
+     * {@link Fraction} representation of 1.
+     */
+    public static final Fraction ONE = new Fraction(1, 1);
+    /**
+     * {@link Fraction} representation of 1/2.
+     */
+    public static final Fraction ONE_HALF = new Fraction(1, 2);
+    /**
+     * {@link Fraction} representation of 1/3.
+     */
+    public static final Fraction ONE_THIRD = new Fraction(1, 3);
+    /**
+     * {@link Fraction} representation of 2/3.
+     */
+    public static final Fraction TWO_THIRDS = new Fraction(2, 3);
+    /**
+     * {@link Fraction} representation of 1/4.
+     */
+    public static final Fraction ONE_QUARTER = new Fraction(1, 4);
+    /**
+     * {@link Fraction} representation of 2/4.
+     */
+    public static final Fraction TWO_QUARTERS = new Fraction(2, 4);
+    /**
+     * {@link Fraction} representation of 3/4.
+     */
+    public static final Fraction THREE_QUARTERS = new Fraction(3, 4);
+    /**
+     * {@link Fraction} representation of 1/5.
+     */
+    public static final Fraction ONE_FIFTH = new Fraction(1, 5);
+    /**
+     * {@link Fraction} representation of 2/5.
+     */
+    public static final Fraction TWO_FIFTHS = new Fraction(2, 5);
+    /**
+     * {@link Fraction} representation of 3/5.
+     */
+    public static final Fraction THREE_FIFTHS = new Fraction(3, 5);
+    /**
+     * {@link Fraction} representation of 4/5.
+     */
+    public static final Fraction FOUR_FIFTHS = new Fraction(4, 5);
+
+
+    /**
+     * Add two integers, checking for overflow.
+     *
+     * @param x an addend
+     * @param y an addend
+     * @return the sum {@code x+y}
+     * @throws ArithmeticException if the result can not be represented as
+     * an int
+     */
+    private static int addAndCheck(final int x, final int y) {
+        final long s = (long) x + (long) y;
+        if (s < Integer.MIN_VALUE || s > Integer.MAX_VALUE) {
+            throw new ArithmeticException("overflow: add");
+        }
+        return (int) s;
+    }
+    /**
+     * Creates a {@link Fraction} instance from a {@code double} value.
+     *
+     * <p>This method uses the <a href="https://web.archive.org/web/20210516065058/http%3A//archives.math.utk.edu/articles/atuyl/confrac/">
+     *  continued fraction algorithm</a>, computing a maximum of
+     *  25 convergents and bounding the denominator by 10,000.</p>
+     *
+     * @param value  the double value to convert
+     * @return a new fraction instance that is close to the value
+     * @throws ArithmeticException if {@code |value| &gt; Integer.MAX_VALUE}
+     *  or {@code value = NaN}
+     * @throws ArithmeticException if the calculated denominator is {@code zero}
+     * @throws ArithmeticException if the algorithm does not converge
+     */
+    public static Fraction getFraction(double value) {
+        final int sign = value < 0 ? -1 : 1;
+        value = Math.abs(value);
+        if (value > Integer.MAX_VALUE || Double.isNaN(value)) {
+            throw new ArithmeticException("The value must not be greater than Integer.MAX_VALUE or NaN");
+        }
+        final int wholeNumber = (int) value;
+        value -= wholeNumber;
+
+        int numer0 = 0; // the pre-previous
+        int denom0 = 1; // the pre-previous
+        int numer1 = 1; // the previous
+        int denom1 = 0; // the previous
+        int numer2; // the current, setup in calculation
+        int denom2; // the current, setup in calculation
+        int a1 = (int) value;
+        int a2;
+        double x1 = 1;
+        double x2;
+        double y1 = value - a1;
+        double y2;
+        double delta1, delta2 = Double.MAX_VALUE;
+        double fraction;
+        int i = 1;
+        do {
+            delta1 = delta2;
+            a2 = (int) (x1 / y1);
+            x2 = y1;
+            y2 = x1 - a2 * y1;
+            numer2 = a1 * numer1 + numer0;
+            denom2 = a1 * denom1 + denom0;
+            fraction = (double) numer2 / (double) denom2;
+            delta2 = Math.abs(value - fraction);
+            a1 = a2;
+            x1 = x2;
+            y1 = y2;
+            numer0 = numer1;
+            denom0 = denom1;
+            numer1 = numer2;
+            denom1 = denom2;
+            i++;
+        } while (delta1 > delta2 && denom2 <= 10000 && denom2 > 0 && i < 25);
+        if (i == 25) {
+            throw new ArithmeticException("Unable to convert double to fraction");
+        }
+        return getReducedFraction((numer0 + wholeNumber * denom0) * sign, denom0);
+    }
+
+    /**
+     * Creates a {@link Fraction} instance with the 2 parts
+     * of a fraction Y/Z.
+     *
+     * <p>Any negative signs are resolved to be on the numerator.</p>
+     *
+     * @param numerator  the numerator, for example the three in 'three sevenths'
+     * @param denominator  the denominator, for example the seven in 'three sevenths'
+     * @return a new fraction instance
+     * @throws ArithmeticException if the denominator is {@code zero}
+     * or the denominator is {@code negative} and the numerator is {@code Integer#MIN_VALUE}
+     */
+    public static Fraction getFraction(int numerator, int denominator) {
+        if (denominator == 0) {
+            throw new ArithmeticException("The denominator must not be zero");
+        }
+        if (denominator < 0) {
+            if (numerator == Integer.MIN_VALUE || denominator == Integer.MIN_VALUE) {
+                throw new ArithmeticException("overflow: can't negate");
+            }
+            numerator = -numerator;
+            denominator = -denominator;
+        }
+        return new Fraction(numerator, denominator);
+    }
+    /**
+     * Creates a {@link Fraction} instance with the 3 parts
+     * of a fraction X Y/Z.
+     *
+     * <p>The negative sign must be passed in on the whole number part.</p>
+     *
+     * @param whole  the whole number, for example the one in 'one and three sevenths'
+     * @param numerator  the numerator, for example the three in 'one and three sevenths'
+     * @param denominator  the denominator, for example the seven in 'one and three sevenths'
+     * @return a new fraction instance
+     * @throws ArithmeticException if the denominator is {@code zero}
+     * @throws ArithmeticException if the denominator is negative
+     * @throws ArithmeticException if the numerator is negative
+     * @throws ArithmeticException if the resulting numerator exceeds
+     *  {@code Integer.MAX_VALUE}
+     */
+    public static Fraction getFraction(final int whole, final int numerator, final int denominator) {
+        if (denominator == 0) {
+            throw new ArithmeticException("The denominator must not be zero");
+        }
+        if (denominator < 0) {
+            throw new ArithmeticException("The denominator must not be negative");
+        }
+        if (numerator < 0) {
+            throw new ArithmeticException("The numerator must not be negative");
+        }
+        final long numeratorValue;
+        if (whole < 0) {
+            numeratorValue = whole * (long) denominator - numerator;
+        } else {
+            numeratorValue = whole * (long) denominator + numerator;
+        }
+        if (numeratorValue < Integer.MIN_VALUE || numeratorValue > Integer.MAX_VALUE) {
+            throw new ArithmeticException("Numerator too large to represent as an Integer.");
+        }
+        return new Fraction((int) numeratorValue, denominator);
+    }
+    /**
+     * Creates a Fraction from a {@link String}.
+     *
+     * <p>The formats accepted are:</p>
+     *
+     * <ol>
+     *  <li>{@code double} String containing a dot</li>
+     *  <li>'X Y/Z'</li>
+     *  <li>'Y/Z'</li>
+     *  <li>'X' (a simple whole number)</li>
+     * </ol>
+     * <p>and a .</p>
+     *
+     * @param str  the string to parse, must not be {@code null}
+     * @return the new {@link Fraction} instance
+     * @throws NullPointerException if the string is {@code null}
+     * @throws NumberFormatException if the number format is invalid
+     */
+    public static Fraction getFraction(String str) {
+        Objects.requireNonNull(str, "str");
+        // parse double format
+        int pos = str.indexOf('.');
+        if (pos >= 0) {
+            return getFraction(Double.parseDouble(str));
+        }
+
+        // parse X Y/Z format
+        pos = str.indexOf(' ');
+        if (pos > 0) {
+            final int whole = Integer.parseInt(str.substring(0, pos));
+            str = str.substring(pos + 1);
+            pos = str.indexOf('/');
+            if (pos < 0) {
+                throw new NumberFormatException("The fraction could not be parsed as the format X Y/Z");
+            }
+            final int numer = Integer.parseInt(str.substring(0, pos));
+            final int denom = Integer.parseInt(str.substring(pos + 1));
+            return getFraction(whole, numer, denom);
+        }
+
+        // parse Y/Z format
+        pos = str.indexOf('/');
+        if (pos < 0) {
+            // simple whole number
+            return getFraction(Integer.parseInt(str), 1);
+        }
+        final int numer = Integer.parseInt(str.substring(0, pos));
+        final int denom = Integer.parseInt(str.substring(pos + 1));
+        return getFraction(numer, denom);
+    }
+
+    /**
+     * Creates a reduced {@link Fraction} instance with the 2 parts
+     * of a fraction Y/Z.
+     *
+     * <p>For example, if the input parameters represent 2/4, then the created
+     * fraction will be 1/2.</p>
+     *
+     * <p>Any negative signs are resolved to be on the numerator.</p>
+     *
+     * @param numerator  the numerator, for example the three in 'three sevenths'
+     * @param denominator  the denominator, for example the seven in 'three sevenths'
+     * @return a new fraction instance, with the numerator and denominator reduced
+     * @throws ArithmeticException if the denominator is {@code zero}
+     */
+    public static Fraction getReducedFraction(int numerator, int denominator) {
+        if (denominator == 0) {
+            throw new ArithmeticException("The denominator must not be zero");
+        }
+        if (numerator == 0) {
+            return ZERO; // normalize zero.
+        }
+        // allow 2^k/-2^31 as a valid fraction (where k>0)
+        if (denominator == Integer.MIN_VALUE && (numerator & 1) == 0) {
+            numerator /= 2;
+            denominator /= 2;
+        }
+        if (denominator < 0) {
+            if (numerator == Integer.MIN_VALUE || denominator == Integer.MIN_VALUE) {
+                throw new ArithmeticException("overflow: can't negate");
+            }
+            numerator = -numerator;
+            denominator = -denominator;
+        }
+        // simplify fraction.
+        final int gcd = greatestCommonDivisor(numerator, denominator);
+        numerator /= gcd;
+        denominator /= gcd;
+        return new Fraction(numerator, denominator);
+    }
+
+    /**
+     * Gets the greatest common divisor of the absolute value of
+     * two numbers, using the "binary gcd" method which avoids
+     * division and modulo operations.  See Knuth 4.5.2 algorithm B.
+     * This algorithm is due to Josef Stein (1961).
+     *
+     * @param u  a non-zero number
+     * @param v  a non-zero number
+     * @return the greatest common divisor, never zero
+     */
+    private static int greatestCommonDivisor(int u, int v) {
+        // From Commons Math:
+        if (u == 0 || v == 0) {
+            if (u == Integer.MIN_VALUE || v == Integer.MIN_VALUE) {
+                throw new ArithmeticException("overflow: gcd is 2^31");
+            }
+            return Math.abs(u) + Math.abs(v);
+        }
+        // if either operand is abs 1, return 1:
+        if (Math.abs(u) == 1 || Math.abs(v) == 1) {
+            return 1;
+        }
+        // keep u and v negative, as negative integers range down to
+        // -2^31, while positive numbers can only be as large as 2^31-1
+        // (i.e. we can't necessarily negate a negative number without
+        // overflow)
+        if (u > 0) {
+            u = -u;
+        } // make u negative
+        if (v > 0) {
+            v = -v;
+        } // make v negative
+        // B1. [Find power of 2]
+        int k = 0;
+        while ((u & 1) == 0 && (v & 1) == 0 && k < 31) { // while u and v are both even...
+            u /= 2;
+            v /= 2;
+            k++; // cast out twos.
+        }
+        if (k == 31) {
+            throw new ArithmeticException("overflow: gcd is 2^31");
+        }
+        // B2. Initialize: u and v have been divided by 2^k and at least
+        // one is odd.
+        int t = (u & 1) == 1 ? v : -(u / 2)/* B3 */;
+        // t negative: u was odd, v may be even (t replaces v)
+        // t positive: u was even, v is odd (t replaces u)
+        do {
+            /* assert u<0 && v<0; */
+            // B4/B3: cast out twos from t.
+            while ((t & 1) == 0) { // while t is even.
+                t /= 2; // cast out twos
+            }
+            // B5 [reset max(u,v)]
+            if (t > 0) {
+                u = -t;
+            } else {
+                v = t;
+            }
+            // B6/B3. at this point both u and v should be odd.
+            t = (v - u) / 2;
+            // |u| larger: t positive (replace u)
+            // |v| larger: t negative (replace v)
+        } while (t != 0);
+        return -u * (1 << k); // gcd is u*2^k
+    }
+
+    /**
+     * Multiply two integers, checking for overflow.
+     *
+     * @param x a factor
+     * @param y a factor
+     * @return the product {@code x*y}
+     * @throws ArithmeticException if the result can not be represented as
+     *                             an int
+     */
+    private static int mulAndCheck(final int x, final int y) {
+        final long m = (long) x * (long) y;
+        if (m < Integer.MIN_VALUE || m > Integer.MAX_VALUE) {
+            throw new ArithmeticException("overflow: mul");
+        }
+        return (int) m;
+    }
+
+    /**
+     *  Multiply two non-negative integers, checking for overflow.
+     *
+     * @param x a non-negative factor
+     * @param y a non-negative factor
+     * @return the product {@code x*y}
+     * @throws ArithmeticException if the result can not be represented as
+     * an int
+     */
+    private static int mulPosAndCheck(final int x, final int y) {
+        /* assert x>=0 && y>=0; */
+        final long m = (long) x * (long) y;
+        if (m > Integer.MAX_VALUE) {
+            throw new ArithmeticException("overflow: mulPos");
+        }
+        return (int) m;
+    }
+
+    /**
+     * Subtract two integers, checking for overflow.
+     *
+     * @param x the minuend
+     * @param y the subtrahend
+     * @return the difference {@code x-y}
+     * @throws ArithmeticException if the result can not be represented as
+     * an int
+     */
+    private static int subAndCheck(final int x, final int y) {
+        final long s = (long) x - (long) y;
+        if (s < Integer.MIN_VALUE || s > Integer.MAX_VALUE) {
+            throw new ArithmeticException("overflow: add");
+        }
+        return (int) s;
+    }
+
+    /**
+     * The numerator number part of the fraction (the three in three sevenths).
+     */
+    private final int numerator;
+
+    /**
+     * The denominator number part of the fraction (the seven in three sevenths).
+     */
+    private final int denominator;
+
+    /**
+     * Cached output hashCode (class is immutable).
+     */
+    private transient int hashCode;
+
+    /**
+     * Cached output toString (class is immutable).
+     */
+    private transient String toString;
+
+    /**
+     * Cached output toProperString (class is immutable).
+     */
+    private transient String toProperString;
+
+    /**
+     * Constructs a {@link Fraction} instance with the 2 parts
+     * of a fraction Y/Z.
+     *
+     * @param numerator  the numerator, for example the three in 'three sevenths'
+     * @param denominator  the denominator, for example the seven in 'three sevenths'
+     */
+    private Fraction(final int numerator, final int denominator) {
+        this.numerator = numerator;
+        this.denominator = denominator;
+    }
+
+    /**
+     * Gets a fraction that is the positive equivalent of this one.
+     * <p>More precisely: {@code (fraction &gt;= 0 ? this : -fraction)}</p>
+     *
+     * <p>The returned fraction is not reduced.</p>
+     *
+     * @return {@code this} if it is positive, or a new positive fraction
+     *  instance with the opposite signed numerator
+     */
+    public Fraction abs() {
+        if (numerator >= 0) {
+            return this;
+        }
+        return negate();
+    }
+
+    /**
+     * Adds the value of this fraction to another, returning the result in reduced form.
+     * The algorithm follows Knuth, 4.5.1.
+     *
+     * @param fraction  the fraction to add, must not be {@code null}
+     * @return a {@link Fraction} instance with the resulting values
+     * @throws NullPointerException if the fraction is {@code null}
+     * @throws ArithmeticException if the resulting numerator or denominator exceeds
+     *  {@code Integer.MAX_VALUE}
+     */
+    public Fraction add(final Fraction fraction) {
+        return addSub(fraction, true /* add */);
+    }
+
+    /**
+     * Implement add and subtract using algorithm described in Knuth 4.5.1.
+     *
+     * @param fraction the fraction to subtract, must not be {@code null}
+     * @param isAdd true to add, false to subtract
+     * @return a {@link Fraction} instance with the resulting values
+     * @throws IllegalArgumentException if the fraction is {@code null}
+     * @throws ArithmeticException if the resulting numerator or denominator
+     *   cannot be represented in an {@code int}.
+     */
+    private Fraction addSub(final Fraction fraction, final boolean isAdd) {
+        Objects.requireNonNull(fraction, "fraction");
+        // zero is identity for addition.
+        if (numerator == 0) {
+            return isAdd ? fraction : fraction.negate();
+        }
+        if (fraction.numerator == 0) {
+            return this;
+        }
+        // if denominators are randomly distributed, d1 will be 1 about 61%
+        // of the time.
+        final int d1 = greatestCommonDivisor(denominator, fraction.denominator);
+        if (d1 == 1) {
+            // result is ( (u*v' +/- u'v) / u'v')
+            final int uvp = mulAndCheck(numerator, fraction.denominator);
+            final int upv = mulAndCheck(fraction.numerator, denominator);
+            return new Fraction(isAdd ? addAndCheck(uvp, upv) : subAndCheck(uvp, upv), mulPosAndCheck(denominator,
+                    fraction.denominator));
+        }
+        // the quantity 't' requires 65 bits of precision; see knuth 4.5.1
+        // exercise 7. we're going to use a BigInteger.
+        // t = u(v'/d1) +/- v(u'/d1)
+        final BigInteger uvp = BigInteger.valueOf(numerator).multiply(BigInteger.valueOf(fraction.denominator / d1));
+        final BigInteger upv = BigInteger.valueOf(fraction.numerator).multiply(BigInteger.valueOf(denominator / d1));
+        final BigInteger t = isAdd ? uvp.add(upv) : uvp.subtract(upv);
+        // but d2 doesn't need extra precision because
+        // d2 = gcd(t,d1) = gcd(t mod d1, d1)
+        final int tmodd1 = t.mod(BigInteger.valueOf(d1)).intValue();
+        final int d2 = tmodd1 == 0 ? d1 : greatestCommonDivisor(tmodd1, d1);
+
+        // result is (t/d2) / (u'/d1)(v'/d2)
+        final BigInteger w = t.divide(BigInteger.valueOf(d2));
+        if (w.bitLength() > 31) {
+            throw new ArithmeticException("overflow: numerator too large after multiply");
+        }
+        return new Fraction(w.intValue(), mulPosAndCheck(denominator / d1, fraction.denominator / d2));
+    }
+
+    /**
+     * Compares this object to another based on size.
+     *
+     * <p>Note: this class has a natural ordering that is inconsistent
+     * with equals, because, for example, equals treats 1/2 and 2/4 as
+     * different, whereas compareTo treats them as equal.
+     *
+     * @param other  the object to compare to
+     * @return -1 if this is less, 0 if equal, +1 if greater
+     * @throws ClassCastException if the object is not a {@link Fraction}
+     * @throws NullPointerException if the object is {@code null}
+     */
+    @Override
+    public int compareTo(final Fraction other) {
+        if (this == other) {
+            return 0;
+        }
+        if (numerator == other.numerator && denominator == other.denominator) {
+            return 0;
+        }
+
+        // otherwise see which is less
+        final long first = (long) numerator * (long) other.denominator;
+        final long second = (long) other.numerator * (long) denominator;
+        return Long.compare(first, second);
+    }
+
+    /**
+     * Divide the value of this fraction by another.
+     *
+     * @param fraction  the fraction to divide by, must not be {@code null}
+     * @return a {@link Fraction} instance with the resulting values
+     * @throws NullPointerException if the fraction is {@code null}
+     * @throws ArithmeticException if the fraction to divide by is zero
+     * @throws ArithmeticException if the resulting numerator or denominator exceeds
+     *  {@code Integer.MAX_VALUE}
+     */
+    public Fraction divideBy(final Fraction fraction) {
+        Objects.requireNonNull(fraction, "fraction");
+        if (fraction.numerator == 0) {
+            throw new ArithmeticException("The fraction to divide by must not be zero");
+        }
+        return multiplyBy(fraction.invert());
+    }
+
+    /**
+     * Gets the fraction as a {@code double}. This calculates the fraction
+     * as the numerator divided by denominator.
+     *
+     * @return the fraction as a {@code double}
+     */
+    @Override
+    public double doubleValue() {
+        return (double) numerator / (double) denominator;
+    }
+
+    /**
+     * Compares this fraction to another object to test if they are equal..
+     *
+     * <p>To be equal, both values must be equal. Thus 2/4 is not equal to 1/2.</p>
+     *
+     * @param obj the reference object with which to compare
+     * @return {@code true} if this object is equal
+     */
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj == this) {
+            return true;
+        }
+        if (!(obj instanceof Fraction)) {
+            return false;
+        }
+        final Fraction other = (Fraction) obj;
+        return getNumerator() == other.getNumerator() && getDenominator() == other.getDenominator();
+    }
+
+    /**
+     * Gets the fraction as a {@code float}. This calculates the fraction
+     * as the numerator divided by denominator.
+     *
+     * @return the fraction as a {@code float}
+     */
+    @Override
+    public float floatValue() {
+        return (float) numerator / (float) denominator;
+    }
+
+    /**
+     * Gets the denominator part of the fraction.
+     *
+     * @return the denominator fraction part
+     */
+    public int getDenominator() {
+        return denominator;
+    }
+
+    /**
+     * Gets the numerator part of the fraction.
+     *
+     * <p>This method may return a value greater than the denominator, an
+     * improper fraction, such as the seven in 7/4.</p>
+     *
+     * @return the numerator fraction part
+     */
+    public int getNumerator() {
+        return numerator;
+    }
+
+    /**
+     * Gets the proper numerator, always positive.
+     *
+     * <p>An improper fraction 7/4 can be resolved into a proper one, 1 3/4.
+     * This method returns the 3 from the proper fraction.</p>
+     *
+     * <p>If the fraction is negative such as -7/4, it can be resolved into
+     * -1 3/4, so this method returns the positive proper numerator, 3.</p>
+     *
+     * @return the numerator fraction part of a proper fraction, always positive
+     */
+    public int getProperNumerator() {
+        return Math.abs(numerator % denominator);
+    }
+
+    /**
+     * Gets the proper whole part of the fraction.
+     *
+     * <p>An improper fraction 7/4 can be resolved into a proper one, 1 3/4.
+     * This method returns the 1 from the proper fraction.</p>
+     *
+     * <p>If the fraction is negative such as -7/4, it can be resolved into
+     * -1 3/4, so this method returns the positive whole part -1.</p>
+     *
+     * @return the whole fraction part of a proper fraction, that includes the sign
+     */
+    public int getProperWhole() {
+        return numerator / denominator;
+    }
+
+    /**
+     * Gets a hashCode for the fraction.
+     *
+     * @return a hash code value for this object
+     */
+    @Override
+    public int hashCode() {
+        if (hashCode == 0) {
+            // hash code update should be atomic.
+            hashCode = 37 * (37 * 17 + getNumerator()) + getDenominator();
+        }
+        return hashCode;
+    }
+
+    /**
+     * Gets the fraction as an {@code int}. This returns the whole number
+     * part of the fraction.
+     *
+     * @return the whole number fraction part
+     */
+    @Override
+    public int intValue() {
+        return numerator / denominator;
+    }
+
+    /**
+     * Gets a fraction that is the inverse (1/fraction) of this one.
+     *
+     * <p>The returned fraction is not reduced.</p>
+     *
+     * @return a new fraction instance with the numerator and denominator
+     *         inverted.
+     * @throws ArithmeticException if the fraction represents zero.
+     */
+    public Fraction invert() {
+        if (numerator == 0) {
+            throw new ArithmeticException("Unable to invert zero.");
+        }
+        if (numerator==Integer.MIN_VALUE) {
+            throw new ArithmeticException("overflow: can't negate numerator");
+        }
+        if (numerator<0) {
+            return new Fraction(-denominator, -numerator);
+        }
+        return new Fraction(denominator, numerator);
+    }
+
+    /**
+     * Gets the fraction as a {@code long}. This returns the whole number
+     * part of the fraction.
+     *
+     * @return the whole number fraction part
+     */
+    @Override
+    public long longValue() {
+        return (long) numerator / denominator;
+    }
+
+    /**
+     * Multiplies the value of this fraction by another, returning the
+     * result in reduced form.
+     *
+     * @param fraction  the fraction to multiply by, must not be {@code null}
+     * @return a {@link Fraction} instance with the resulting values
+     * @throws NullPointerException if the fraction is {@code null}
+     * @throws ArithmeticException if the resulting numerator or denominator exceeds
+     *  {@code Integer.MAX_VALUE}
+     */
+    public Fraction multiplyBy(final Fraction fraction) {
+        Objects.requireNonNull(fraction, "fraction");
+        if (numerator == 0 || fraction.numerator == 0) {
+            return ZERO;
+        }
+        // knuth 4.5.1
+        // make sure we don't overflow unless the result *must* overflow.
+        final int d1 = greatestCommonDivisor(numerator, fraction.denominator);
+        final int d2 = greatestCommonDivisor(fraction.numerator, denominator);
+        return getReducedFraction(mulAndCheck(numerator / d1, fraction.numerator / d2),
+                mulPosAndCheck(denominator / d2, fraction.denominator / d1));
+    }
+
+    /**
+     * Gets a fraction that is the negative (-fraction) of this one.
+     *
+     * <p>The returned fraction is not reduced.</p>
+     *
+     * @return a new fraction instance with the opposite signed numerator
+     */
+    public Fraction negate() {
+        // the positive range is one smaller than the negative range of an int.
+        if (numerator==Integer.MIN_VALUE) {
+            throw new ArithmeticException("overflow: too large to negate");
+        }
+        return new Fraction(-numerator, denominator);
+    }
+
+    /**
+     * Gets a fraction that is raised to the passed in power.
+     *
+     * <p>The returned fraction is in reduced form.</p>
+     *
+     * @param power  the power to raise the fraction to
+     * @return {@code this} if the power is one, {@link #ONE} if the power
+     * is zero (even if the fraction equals ZERO) or a new fraction instance
+     * raised to the appropriate power
+     * @throws ArithmeticException if the resulting numerator or denominator exceeds
+     *  {@code Integer.MAX_VALUE}
+     */
+    public Fraction pow(final int power) {
+        if (power == 1) {
+            return this;
+        }
+        if (power == 0) {
+            return ONE;
+        }
+        if (power < 0) {
+            if (power == Integer.MIN_VALUE) { // MIN_VALUE can't be negated.
+                return this.invert().pow(2).pow(-(power / 2));
+            }
+            return this.invert().pow(-power);
+        }
+        final Fraction f = this.multiplyBy(this);
+        if (power % 2 == 0) { // if even...
+            return f.pow(power / 2);
+        }
+        return f.pow(power / 2).multiplyBy(this);
+    }
+
+    /**
+     * Reduce the fraction to the smallest values for the numerator and
+     * denominator, returning the result.
+     *
+     * <p>For example, if this fraction represents 2/4, then the result
+     * will be 1/2.</p>
+     *
+     * @return a new reduced fraction instance, or this if no simplification possible
+     */
+    public Fraction reduce() {
+        if (numerator == 0) {
+            return equals(ZERO) ? this : ZERO;
+        }
+        final int gcd = greatestCommonDivisor(Math.abs(numerator), denominator);
+        if (gcd == 1) {
+            return this;
+        }
+        return getFraction(numerator / gcd, denominator / gcd);
+    }
+
+    /**
+     * Subtracts the value of another fraction from the value of this one,
+     * returning the result in reduced form.
+     *
+     * @param fraction  the fraction to subtract, must not be {@code null}
+     * @return a {@link Fraction} instance with the resulting values
+     * @throws NullPointerException if the fraction is {@code null}
+     * @throws ArithmeticException if the resulting numerator or denominator
+     *   cannot be represented in an {@code int}.
+     */
+    public Fraction subtract(final Fraction fraction) {
+        return addSub(fraction, false /* subtract */);
+    }
+
+    /**
+     * Gets the fraction as a proper {@link String} in the format X Y/Z.
+     *
+     * <p>The format used in '<i>wholeNumber</i> <i>numerator</i>/<i>denominator</i>'.
+     * If the whole number is zero it will be omitted. If the numerator is zero,
+     * only the whole number is returned.</p>
+     *
+     * @return a {@link String} form of the fraction
+     */
+    public String toProperString() {
+        if (toProperString == null) {
+            if (numerator == 0) {
+                toProperString = "0";
+            } else if (numerator == denominator) {
+                toProperString = "1";
+            } else if (numerator == -1 * denominator) {
+                toProperString = "-1";
+            } else if ((numerator > 0 ? -numerator : numerator) < -denominator) {
+                // note that we do the magnitude comparison test above with
+                // NEGATIVE (not positive) numbers, since negative numbers
+                // have a larger range. otherwise numerator==Integer.MIN_VALUE
+                // is handled incorrectly.
+                final int properNumerator = getProperNumerator();
+                if (properNumerator == 0) {
+                    toProperString = Integer.toString(getProperWhole());
+                } else {
+                    toProperString = getProperWhole() + " " + properNumerator + "/" + getDenominator();
+                }
+            } else {
+                toProperString = getNumerator() + "/" + getDenominator();
+            }
+        }
+        return toProperString;
+    }
+
+    /**
+     * Gets the fraction as a {@link String}.
+     *
+     * <p>The format used is '<i>numerator</i>/<i>denominator</i>' always.
+     *
+     * @return a {@link String} form of the fraction
+     */
+    @Override
+    public String toString() {
+        if (toString == null) {
+            toString = getNumerator() + "/" + getDenominator();
+        }
+        return toString;
+    }
+}
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index e277062f3..6808d0e16 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit e277062f3bccbe772baefcd631f0a5442311467c
+Subproject commit 6808d0e16a85e5e569d9d7f89ace59c73196c1f4

From 65f7bdb3c025d6f07c09abbdea73d88fb56f0fec Mon Sep 17 00:00:00 2001
From: Oliver <59418903+Oliver-makes-code@users.noreply.github.com>
Date: Thu, 9 Jan 2025 12:57:27 -0600
Subject: [PATCH 132/165] Fix modded items not having a bedrock ID set (#5271)

---
 .../geyser/registry/populator/CustomItemRegistryPopulator.java   | 1 +
 1 file changed, 1 insertion(+)

diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
index 3d2ca4ef9..ec1e16e79 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
@@ -143,6 +143,7 @@ public class CustomItemRegistryPopulator {
         Items.register(item, customItemData.javaId());
 
         ItemMapping customItemMapping = ItemMapping.builder()
+                .bedrockIdentifier(customIdentifier)
                 .bedrockDefinition(new SimpleItemDefinition(customIdentifier, customItemId, true))
                 .bedrockData(0)
                 .bedrockBlockDefinition(null)

From 1267b2e5ab1c6293930d84c54eda7709344e0833 Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Thu, 9 Jan 2025 20:53:01 +0000
Subject: [PATCH 133/165] Update fabric.mod.json to new fabric api mod id
 (#5272)

---
 bootstrap/mod/fabric/src/main/resources/fabric.mod.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/bootstrap/mod/fabric/src/main/resources/fabric.mod.json b/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
index 4f50768f4..a1c786c2f 100644
--- a/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
+++ b/bootstrap/mod/fabric/src/main/resources/fabric.mod.json
@@ -24,7 +24,7 @@
   ],
   "depends": {
     "fabricloader": ">=0.16.7",
-    "fabric": "*",
+    "fabric-api": "*",
     "minecraft": ">=1.21.4"
   }
 }

From 58e2f17e08998c4945153c2bb25b7259f3d4e217 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Sun, 12 Jan 2025 20:44:33 +0100
Subject: [PATCH 134/165] Fix: Brand message being sent too early (#5265)

* Fix: Brand message not being sent, send lowercase locale, ensure the MCPL default listener comes first

* Refactor disconnect handling

* apparently default listeners aren't always first... huh

* fix issue with bundle cache attempting to check a null inventory
---
 .../event/bedrock/SessionDisconnectEvent.java |   2 +-
 .../connection/GeyserBedrockPingEvent.java    |   6 +-
 .../event/java/ServerDefineCommandsEvent.java |   2 +-
 .../api/event/java/ServerTransferEvent.java   |   2 +-
 .../java/org/geysermc/geyser/GeyserImpl.java  |   5 +-
 .../type/SessionDisconnectEventImpl.java}     |  27 +-
 .../geyser/network/InvalidPacketHandler.java  |  10 +-
 .../geyser/session/DownstreamSession.java     |   5 +-
 .../geyser/session/GeyserSession.java         | 220 ++--------------
 .../geyser/session/GeyserSessionAdapter.java  | 242 ++++++++++++++++++
 .../SessionDisconnectListener.java}           |  61 ++---
 .../java/JavaLoginFinishedTranslator.java     |   3 +-
 .../player/JavaTransferPacketTranslator.java  |   4 +-
 .../geysermc/geyser/util/InventoryUtils.java  |   2 +-
 14 files changed, 338 insertions(+), 253 deletions(-)
 rename core/src/main/java/org/geysermc/geyser/{translator/protocol/java/JavaDisconnectTranslator.java => event/type/SessionDisconnectEventImpl.java} (61%)
 create mode 100644 core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java
 rename core/src/main/java/org/geysermc/geyser/{translator/protocol/java/JavaLoginDisconnectTranslator.java => session/SessionDisconnectListener.java} (58%)

diff --git a/api/src/main/java/org/geysermc/geyser/api/event/bedrock/SessionDisconnectEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/bedrock/SessionDisconnectEvent.java
index 05e3415a0..f97f32f92 100644
--- a/api/src/main/java/org/geysermc/geyser/api/event/bedrock/SessionDisconnectEvent.java
+++ b/api/src/main/java/org/geysermc/geyser/api/event/bedrock/SessionDisconnectEvent.java
@@ -50,7 +50,7 @@ public class SessionDisconnectEvent extends ConnectionEvent {
     }
 
     /**
-     * Sets the disconnect reason, thereby overriding th original reason.
+     * Sets the disconnect message shown to the Bedrock client.
      *
      * @param disconnectReason the reason for the disconnect
      */
diff --git a/api/src/main/java/org/geysermc/geyser/api/event/connection/GeyserBedrockPingEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/connection/GeyserBedrockPingEvent.java
index 10ccb93d5..64d3cb44f 100644
--- a/api/src/main/java/org/geysermc/geyser/api/event/connection/GeyserBedrockPingEvent.java
+++ b/api/src/main/java/org/geysermc/geyser/api/event/connection/GeyserBedrockPingEvent.java
@@ -33,10 +33,10 @@ import org.geysermc.event.Event;
 import java.net.InetSocketAddress;
 
 /**
- * Called whenever Geyser gets pinged
+ * Called whenever Geyser gets pinged by a Bedrock client.
  * <p>
- * This event allows you to modify/obtain the MOTD, maximum player count, and current number of players online,
- * Geyser will reply to the client with what was given.
+ * This event allows you to modify/obtain the MOTD, maximum player count, and current number of players online.
+ * Geyser will reply to the client with the information provided in this event.
  */
 public interface GeyserBedrockPingEvent extends Event {
 
diff --git a/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java
index 299c9d6dd..40268d5b2 100644
--- a/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java
+++ b/api/src/main/java/org/geysermc/geyser/api/event/java/ServerDefineCommandsEvent.java
@@ -37,7 +37,7 @@ import java.util.Set;
  * <br>
  * This event is mapped to the existence of Brigadier on the server.
  */
-public class ServerDefineCommandsEvent extends ConnectionEvent implements Cancellable {
+public final class ServerDefineCommandsEvent extends ConnectionEvent implements Cancellable {
     private final Set<? extends CommandInfo> commands;
     private boolean cancelled;
 
diff --git a/api/src/main/java/org/geysermc/geyser/api/event/java/ServerTransferEvent.java b/api/src/main/java/org/geysermc/geyser/api/event/java/ServerTransferEvent.java
index 594e28ef0..f32d84f6a 100644
--- a/api/src/main/java/org/geysermc/geyser/api/event/java/ServerTransferEvent.java
+++ b/api/src/main/java/org/geysermc/geyser/api/event/java/ServerTransferEvent.java
@@ -37,7 +37,7 @@ import java.util.Map;
  * Fired when the Java server sends a transfer request to a different Java server.
  * Geyser Extensions can listen to this event and set a target server ip/port for Bedrock players to be transferred to.
  */
-public class ServerTransferEvent extends ConnectionEvent {
+public final class ServerTransferEvent extends ConnectionEvent {
 
     private final String host;
     private final int port;
diff --git a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
index 065c1f0cc..5171c0633 100644
--- a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
@@ -74,6 +74,7 @@ import org.geysermc.geyser.configuration.GeyserConfiguration;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.erosion.UnixSocketClientListener;
 import org.geysermc.geyser.event.GeyserEventBus;
+import org.geysermc.geyser.event.type.SessionDisconnectEventImpl;
 import org.geysermc.geyser.extension.GeyserExtensionManager;
 import org.geysermc.geyser.impl.MinecraftVersionImpl;
 import org.geysermc.geyser.level.BedrockDimension;
@@ -86,6 +87,7 @@ import org.geysermc.geyser.registry.provider.ProviderSupplier;
 import org.geysermc.geyser.scoreboard.ScoreboardUpdater;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.PendingMicrosoftAuthentication;
+import org.geysermc.geyser.session.SessionDisconnectListener;
 import org.geysermc.geyser.session.SessionManager;
 import org.geysermc.geyser.session.cache.RegistryCache;
 import org.geysermc.geyser.skin.FloodgateSkinUploader;
@@ -101,7 +103,6 @@ import org.geysermc.geyser.util.MinecraftAuthLogger;
 import org.geysermc.geyser.util.NewsHandler;
 import org.geysermc.geyser.util.VersionCheckUtils;
 import org.geysermc.geyser.util.WebUtils;
-import org.geysermc.mcprotocollib.network.tcp.TcpSession;
 
 import java.io.File;
 import java.io.FileWriter;
@@ -266,6 +267,8 @@ public class GeyserImpl implements GeyserApi, EventRegistrar {
 
         // Register our general permissions when possible
         eventBus.subscribe(this, GeyserRegisterPermissionsEvent.class, Permissions::register);
+        // Replace disconnect messages whenever necessary
+        eventBus.subscribe(this, SessionDisconnectEventImpl.class, SessionDisconnectListener::onSessionDisconnect);
 
         startInstance();
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java b/core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java
similarity index 61%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java
rename to core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java
index 0012390cb..b746979df 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaDisconnectTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
+ * Copyright (c) 2025 GeyserMC. http://geysermc.org
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -23,19 +23,26 @@
  * @link https://github.com/GeyserMC/Geyser
  */
 
-package org.geysermc.geyser.translator.protocol.java;
+package org.geysermc.geyser.event.type;
 
-import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ClientboundDisconnectPacket;
+import lombok.Getter;
+import net.kyori.adventure.text.Component;
+import org.checkerframework.checker.nullness.qual.NonNull;
+import org.geysermc.geyser.api.event.bedrock.SessionDisconnectEvent;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 
-@Translator(packet = ClientboundDisconnectPacket.class)
-public class JavaDisconnectTranslator extends PacketTranslator<ClientboundDisconnectPacket> {
+/**
+ * A wrapper around the {@link SessionDisconnectEvent} that allows
+ * Geyser to access the underlying component when replacing disconnect messages.
+ */
+@Getter
+public class SessionDisconnectEventImpl extends SessionDisconnectEvent {
 
-    @Override
-    public void translate(GeyserSession session, ClientboundDisconnectPacket packet) {
-        session.disconnect(MessageTranslator.convertMessage(packet.getReason(), session.locale()));
+    private final Component reasonComponent;
+
+    public SessionDisconnectEventImpl(@NonNull GeyserSession session, Component reason) {
+        super(session, MessageTranslator.convertToPlainText(reason, session.locale()));
+        this.reasonComponent = reason;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/network/InvalidPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/InvalidPacketHandler.java
index 1b653891e..974d6fdce 100644
--- a/core/src/main/java/org/geysermc/geyser/network/InvalidPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/InvalidPacketHandler.java
@@ -28,6 +28,8 @@ package org.geysermc.geyser.network;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
 import lombok.RequiredArgsConstructor;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.GeyserLogger;
 import org.geysermc.geyser.session.GeyserSession;
 
 import java.util.stream.Stream;
@@ -45,16 +47,20 @@ public class InvalidPacketHandler extends ChannelInboundHandlerAdapter {
                 .findFirst()
                 .orElse(cause);
 
+        GeyserLogger logger = GeyserImpl.getInstance().getLogger();
 
         if (!(rootCause instanceof IllegalArgumentException)) {
             // Kick users that cause exceptions
-            session.getGeyser().getLogger().warning("Exception caught in session of" + session.bedrockUsername() + ": " + rootCause.getMessage());
+            logger.warning("Exception caught in session of" + session.bedrockUsername() + ": " + rootCause.getMessage());
             session.disconnect("An internal error occurred!");
             return;
         }
 
         // Kick users that try to send illegal packets
-        session.getGeyser().getLogger().warning(rootCause.getMessage());
+        logger.warning("Illegal packet from " + session.bedrockUsername() + ": " + rootCause.getMessage());
+        if (logger.isDebug()) {
+            cause.printStackTrace();
+        }
         session.disconnect("Invalid packet received!");
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java b/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
index 8845cdbea..c1db89484 100644
--- a/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.session;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import net.kyori.adventure.text.Component;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.mcprotocollib.network.packet.Packet;
 import org.geysermc.mcprotocollib.network.tcp.TcpSession;
@@ -41,11 +42,11 @@ public class DownstreamSession {
         this.session.send(packet);
     }
 
-    public void disconnect(String reason) {
+    public void disconnect(Component reason) {
         this.session.disconnect(reason);
     }
 
-    public void disconnect(String reason, Throwable throwable) {
+    public void disconnect(Component reason, Throwable throwable) {
         this.session.disconnect(reason, throwable);
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index b3a38f32f..111b966f7 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -41,6 +41,7 @@ import lombok.Getter;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 import net.kyori.adventure.key.Key;
+import net.kyori.adventure.text.Component;
 import net.raphimc.minecraftauth.responsehandler.exception.MinecraftRequestException;
 import net.raphimc.minecraftauth.step.java.StepMCProfile;
 import net.raphimc.minecraftauth.step.java.StepMCToken;
@@ -109,9 +110,6 @@ import org.geysermc.api.util.InputMode;
 import org.geysermc.api.util.UiProfile;
 import org.geysermc.cumulus.form.Form;
 import org.geysermc.cumulus.form.util.FormBuilder;
-import org.geysermc.floodgate.crypto.FloodgateCipher;
-import org.geysermc.floodgate.util.BedrockData;
-import org.geysermc.geyser.Constants;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.bedrock.camera.CameraData;
 import org.geysermc.geyser.api.bedrock.camera.CameraShake;
@@ -121,9 +119,7 @@ import org.geysermc.geyser.api.entity.type.GeyserEntity;
 import org.geysermc.geyser.api.entity.type.player.GeyserPlayerEntity;
 import org.geysermc.geyser.api.event.bedrock.SessionDisconnectEvent;
 import org.geysermc.geyser.api.event.bedrock.SessionLoginEvent;
-import org.geysermc.geyser.api.network.AuthType;
 import org.geysermc.geyser.api.network.RemoteServer;
-import org.geysermc.geyser.api.util.PlatformType;
 import org.geysermc.geyser.command.GeyserCommandSource;
 import org.geysermc.geyser.configuration.EmoteOffhandWorkaroundOption;
 import org.geysermc.geyser.configuration.GeyserConfiguration;
@@ -138,6 +134,7 @@ import org.geysermc.geyser.entity.vehicle.ClientVehicle;
 import org.geysermc.geyser.erosion.AbstractGeyserboundPacketHandler;
 import org.geysermc.geyser.erosion.ErosionCancellationException;
 import org.geysermc.geyser.erosion.GeyserboundHandshakePacketHandler;
+import org.geysermc.geyser.event.type.SessionDisconnectEventImpl;
 import org.geysermc.geyser.impl.camera.CameraDefinitions;
 import org.geysermc.geyser.impl.camera.GeyserCameraData;
 import org.geysermc.geyser.inventory.Inventory;
@@ -174,11 +171,8 @@ import org.geysermc.geyser.session.cache.TagCache;
 import org.geysermc.geyser.session.cache.TeleportCache;
 import org.geysermc.geyser.session.cache.WorldBorder;
 import org.geysermc.geyser.session.cache.WorldCache;
-import org.geysermc.geyser.skin.FloodgateSkinUploader;
 import org.geysermc.geyser.text.GeyserLocale;
-import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
-import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.ChunkUtils;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InventoryUtils;
@@ -187,19 +181,13 @@ import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.geyser.util.MinecraftAuthLogger;
 import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.network.BuiltinFlags;
-import org.geysermc.mcprotocollib.network.Session;
-import org.geysermc.mcprotocollib.network.event.session.ConnectedEvent;
-import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent;
-import org.geysermc.mcprotocollib.network.event.session.PacketErrorEvent;
-import org.geysermc.mcprotocollib.network.event.session.PacketSendingEvent;
-import org.geysermc.mcprotocollib.network.event.session.SessionAdapter;
 import org.geysermc.mcprotocollib.network.packet.Packet;
 import org.geysermc.mcprotocollib.network.tcp.TcpClientSession;
 import org.geysermc.mcprotocollib.network.tcp.TcpSession;
+import org.geysermc.mcprotocollib.protocol.ClientListener;
 import org.geysermc.mcprotocollib.protocol.MinecraftConstants;
 import org.geysermc.mcprotocollib.protocol.MinecraftProtocol;
 import org.geysermc.mcprotocollib.protocol.data.ProtocolState;
-import org.geysermc.mcprotocollib.protocol.data.UnexpectedEncryptionException;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Pose;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.object.Direction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
@@ -212,7 +200,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.setting.SkinPart;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.CustomStatistic;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.Statistic;
 import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundClientInformationPacket;
-import org.geysermc.mcprotocollib.protocol.packet.handshake.serverbound.ClientIntentionPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatCommandSignedPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundClientTickEndPacket;
@@ -221,9 +208,7 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.Serv
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundUseItemPacket;
 import org.geysermc.mcprotocollib.protocol.packet.login.serverbound.ServerboundCustomQueryAnswerPacket;
 
-import java.net.ConnectException;
 import java.net.InetSocketAddress;
-import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -231,6 +216,7 @@ import java.util.BitSet;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Queue;
 import java.util.Set;
@@ -359,8 +345,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     // Exposed for GeyserConnect usage
     protected boolean sentSpawnPacket;
 
-    private boolean loggedIn;
-    private boolean loggingIn;
+    boolean loggedIn;
+    boolean loggingIn;
 
     @Setter
     private boolean spawned;
@@ -525,11 +511,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     @Setter
     private long blockBreakStartTime;
 
-    /**
-     * // TODO
-     */
-    private long destroyProgress;
-
     /**
      * Stores whether the player intended to place a bucket.
      */
@@ -658,6 +639,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     private final GeyserEntityData entityData;
 
+    @Getter(AccessLevel.MODULE)
     private MinecraftProtocol protocol;
 
     private int nanosecondsPerTick = 50000000;
@@ -962,7 +944,6 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
         this.cookies = loginEvent.cookies();
         this.remoteServer = loginEvent.remoteServer();
-        boolean floodgate = this.remoteServer.authType() == AuthType.FLOODGATE;
 
         // Start ticking
         tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, nanosecondsPerTick, nanosecondsPerTick, TimeUnit.NANOSECONDS);
@@ -1001,188 +982,30 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         // We'll handle this since we have the registry data on hand
         downstream.setFlag(MinecraftConstants.SEND_BLANK_KNOWN_PACKS_RESPONSE, false);
 
-        downstream.addListener(new SessionAdapter() {
-            @Override
-            public void packetSending(PacketSendingEvent event) {
-                //todo move this somewhere else
-                if (event.getPacket() instanceof ClientIntentionPacket) {
-                    String addressSuffix;
-                    if (floodgate) {
-                        byte[] encryptedData;
+        // We manually add the default listener to ensure the order of listeners.
+        protocol.setUseDefaultListeners(false);
 
-                        try {
-                            FloodgateSkinUploader skinUploader = geyser.getSkinUploader();
-                            FloodgateCipher cipher = geyser.getCipher();
+        // MCPL listener comes first to handle protocol state switching before Geyser translates packets
+        downstream.addListener(new ClientListener(ProtocolState.LOGIN, loginEvent.transferring()));
+        // Geyser adapter second to ensure translating packets in the correct states
+        downstream.addListener(new GeyserSessionAdapter(this));
 
-                            String bedrockAddress = upstream.getAddress().getAddress().getHostAddress();
-                            // both BungeeCord and Velocity remove the IPv6 scope (if there is one) for Spigot
-                            int ipv6ScopeIndex = bedrockAddress.indexOf('%');
-                            if (ipv6ScopeIndex != -1) {
-                                bedrockAddress = bedrockAddress.substring(0, ipv6ScopeIndex);
-                            }
-
-                            encryptedData = cipher.encryptFromString(BedrockData.of(
-                                    clientData.getGameVersion(),
-                                    authData.name(),
-                                    authData.xuid(),
-                                    clientData.getDeviceOs().ordinal(),
-                                    clientData.getLanguageCode(),
-                                    clientData.getUiProfile().ordinal(),
-                                    clientData.getCurrentInputMode().ordinal(),
-                                    bedrockAddress,
-                                    skinUploader.getId(),
-                                    skinUploader.getVerifyCode()
-                            ).toString());
-                        } catch (Exception e) {
-                            geyser.getLogger().error(GeyserLocale.getLocaleStringLog("geyser.auth.floodgate.encrypt_fail"), e);
-                            disconnect(GeyserLocale.getPlayerLocaleString("geyser.auth.floodgate.encrypt_fail", getClientData().getLanguageCode()));
-                            return;
-                        }
-
-                        addressSuffix = '\0' + new String(encryptedData, StandardCharsets.UTF_8);
-                    } else {
-                        addressSuffix = "";
-                    }
-
-                    ClientIntentionPacket intentionPacket = event.getPacket();
-
-                    String address;
-                    if (geyser.getConfig().getRemote().isForwardHost()) {
-                        address = clientData.getServerAddress().split(":")[0];
-                    } else {
-                        address = intentionPacket.getHostname();
-                    }
-
-                    event.setPacket(intentionPacket.withHostname(address + addressSuffix));
-                }
-            }
-
-            @Override
-            public void connected(ConnectedEvent event) {
-                loggingIn = false;
-                loggedIn = true;
-
-                if (downstream instanceof LocalSession) {
-                    // Connected directly to the server
-                    geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.connect_internal",
-                            authData.name(), protocol.getProfile().getName()));
-                } else {
-                    // Connected to an IP address
-                    geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.connect",
-                            authData.name(), protocol.getProfile().getName(), remoteServer.address()));
-                }
-
-                UUID uuid = protocol.getProfile().getId();
-                if (uuid == null) {
-                    // Set what our UUID *probably* is going to be
-                    if (remoteServer.authType() == AuthType.FLOODGATE) {
-                        uuid = new UUID(0, Long.parseLong(authData.xuid()));
-                    } else {
-                        uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + protocol.getProfile().getName()).getBytes(StandardCharsets.UTF_8));
-                    }
-                }
-                playerEntity.setUuid(uuid);
-                playerEntity.setUsername(protocol.getProfile().getName());
-
-                String locale = clientData.getLanguageCode();
-
-                // Let the user know there locale may take some time to download
-                // as it has to be extracted from a JAR
-                if (locale.equalsIgnoreCase("en_us") && !MinecraftLocale.LOCALE_MAPPINGS.containsKey("en_us")) {
-                    // This should probably be left hardcoded as it will only show for en_us clients
-                    sendMessage("Loading your locale (en_us); if this isn't already downloaded, this may take some time");
-                }
-
-                // Download and load the language for the player
-                MinecraftLocale.downloadAndLoadLocale(locale);
-            }
-
-            @Override
-            public void disconnected(DisconnectedEvent event) {
-                loggingIn = false;
-
-                String disconnectMessage;
-                Throwable cause = event.getCause();
-                if (cause instanceof UnexpectedEncryptionException) {
-                    if (remoteServer.authType() != AuthType.FLOODGATE) {
-                        // Server expects online mode
-                        disconnectMessage = GeyserLocale.getPlayerLocaleString("geyser.network.remote.authentication_type_mismatch", locale());
-                        // Explain that they may be looking for Floodgate.
-                        geyser.getLogger().warning(GeyserLocale.getLocaleStringLog(
-                                geyser.getPlatformType() == PlatformType.STANDALONE ?
-                                        "geyser.network.remote.floodgate_explanation_standalone"
-                                        : "geyser.network.remote.floodgate_explanation_plugin",
-                                Constants.FLOODGATE_DOWNLOAD_LOCATION
-                        ));
-                    } else {
-                        // Likely that Floodgate is not configured correctly.
-                        disconnectMessage = GeyserLocale.getPlayerLocaleString("geyser.network.remote.floodgate_login_error", locale());
-                        if (geyser.getPlatformType() == PlatformType.STANDALONE) {
-                            geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.remote.floodgate_login_error_standalone"));
-                        }
-                    }
-                } else if (cause instanceof ConnectException) {
-                    // Server is offline, probably
-                    disconnectMessage = GeyserLocale.getPlayerLocaleString("geyser.network.remote.server_offline", locale());
-                } else {
-                    disconnectMessage = MessageTranslator.convertMessage(event.getReason());
-                }
-
-                if (downstream instanceof LocalSession) {
-                    geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.disconnect_internal", authData.name(), disconnectMessage));
-                } else {
-                    geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.disconnect", authData.name(), remoteServer.address(), disconnectMessage));
-                }
-                if (cause != null) {
-                    if (cause.getMessage() != null) {
-                        GeyserImpl.getInstance().getLogger().error(cause.getMessage());
-                    } else {
-                        GeyserImpl.getInstance().getLogger().error("An exception occurred: ", cause);
-                    }
-                    if (geyser.getConfig().isDebugMode()) {
-                        cause.printStackTrace();
-                    }
-                }
-                if ((!GeyserSession.this.closed && GeyserSession.this.loggedIn) || cause != null) {
-                    // GeyserSession is disconnected via session.disconnect() called indirectly be the server
-                    // This needs to be "initiated" here when there is an exception, but also when the Netty connection
-                    // is closed without a disconnect packet - in this case, closed will still be false, but loggedIn
-                    // will also be true as GeyserSession#disconnect will not have been called.
-                    GeyserSession.this.disconnect(disconnectMessage);
-                }
-
-                loggedIn = false;
-            }
-
-            @Override
-            public void packetReceived(Session session, Packet packet) {
-                Registries.JAVA_PACKET_TRANSLATORS.translate(packet.getClass(), packet, GeyserSession.this, true);
-            }
-
-            @Override
-            public void packetError(PacketErrorEvent event) {
-                geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.downstream_error",
-                    (event.getPacketClass() != null ? "(" + event.getPacketClass().getSimpleName() + ")" : "") +
-                    event.getCause().getMessage())
-                );
-                if (geyser.getConfig().isDebugMode())
-                    event.getCause().printStackTrace();
-                event.setSuppress(true);
-            }
-        });
+        downstream.connect(false, loginEvent.transferring());
 
         if (!daylightCycle) {
             setDaylightCycle(true);
         }
-
-        downstream.connect(false, loginEvent.transferring());
     }
 
     public void disconnect(String reason) {
+        disconnect(Component.text(reason));
+    }
+
+    public void disconnect(Component reason) {
         if (!closed) {
             loggedIn = false;
 
-            SessionDisconnectEvent disconnectEvent = new SessionDisconnectEvent(this, reason);
+            SessionDisconnectEvent disconnectEvent = new SessionDisconnectEventImpl(this, reason);
             if (authData != null && clientData != null) { // can occur if player disconnects before Bedrock auth finishes
                 // Fire SessionDisconnectEvent
                 geyser.getEventBus().fire(disconnectEvent);
@@ -1819,7 +1642,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         }
 
         if (protocol.getOutboundState() != intendedState) {
-            geyser.getLogger().debug("Tried to send " + packet.getClass().getSimpleName() + " packet while not in " + intendedState.name() + " outbound state");
+            geyser.getLogger().warning("Tried to send " + packet.getClass().getSimpleName() + " packet while not in " + intendedState.name() + " outbound state. Current state: " + protocol.getOutboundState().name());
             return;
         }
 
@@ -2016,7 +1839,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      * Send a packet to the server to indicate client render distance, locale, skin parts, and hand preference.
      */
     public void sendJavaClientSettings() {
-        ServerboundClientInformationPacket clientSettingsPacket = new ServerboundClientInformationPacket(locale(),
+        // Locale is lowercase on Java - (https://github.com/GeyserMC/Geyser/issues/5235)
+        ServerboundClientInformationPacket clientSettingsPacket = new ServerboundClientInformationPacket(locale().toLowerCase(Locale.ROOT),
                 getRenderDistance(), ChatVisibility.FULL, true, SKIN_PARTS,
                 HandPreference.RIGHT_HAND, false, true, ParticleStatus.ALL); // TODO particle status
         sendDownstreamPacket(clientSettingsPacket);
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java
new file mode 100644
index 000000000..9e17e9cd3
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2025 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.session;
+
+import org.geysermc.floodgate.crypto.FloodgateCipher;
+import org.geysermc.floodgate.util.BedrockData;
+import org.geysermc.geyser.Constants;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.api.network.AuthType;
+import org.geysermc.geyser.api.util.PlatformType;
+import org.geysermc.geyser.network.netty.LocalSession;
+import org.geysermc.geyser.registry.Registries;
+import org.geysermc.geyser.session.auth.BedrockClientData;
+import org.geysermc.geyser.skin.FloodgateSkinUploader;
+import org.geysermc.geyser.text.GeyserLocale;
+import org.geysermc.geyser.text.MinecraftLocale;
+import org.geysermc.geyser.translator.text.MessageTranslator;
+import org.geysermc.mcprotocollib.network.Session;
+import org.geysermc.mcprotocollib.network.event.session.ConnectedEvent;
+import org.geysermc.mcprotocollib.network.event.session.DisconnectedEvent;
+import org.geysermc.mcprotocollib.network.event.session.PacketErrorEvent;
+import org.geysermc.mcprotocollib.network.event.session.PacketSendingEvent;
+import org.geysermc.mcprotocollib.network.event.session.SessionAdapter;
+import org.geysermc.mcprotocollib.network.packet.Packet;
+import org.geysermc.mcprotocollib.protocol.data.UnexpectedEncryptionException;
+import org.geysermc.mcprotocollib.protocol.packet.handshake.serverbound.ClientIntentionPacket;
+
+import java.net.ConnectException;
+import java.nio.charset.StandardCharsets;
+import java.util.UUID;
+
+public class GeyserSessionAdapter extends SessionAdapter {
+
+    private final GeyserImpl geyser;
+    private final GeyserSession geyserSession;
+    private final boolean floodgate;
+    private final String locale;
+
+    public GeyserSessionAdapter(GeyserSession session) {
+        this.geyserSession = session;
+        this.floodgate = session.remoteServer().authType() == AuthType.FLOODGATE;
+        this.geyser = GeyserImpl.getInstance();
+        this.locale = session.locale();
+    }
+
+    @Override
+    public void packetSending(PacketSendingEvent event) {
+        if (event.getPacket() instanceof ClientIntentionPacket) {
+            BedrockClientData clientData = geyserSession.getClientData();
+
+            String addressSuffix;
+            if (floodgate) {
+                byte[] encryptedData;
+
+                try {
+                    FloodgateSkinUploader skinUploader = geyser.getSkinUploader();
+                    FloodgateCipher cipher = geyser.getCipher();
+
+                    String bedrockAddress = geyserSession.getUpstream().getAddress().getAddress().getHostAddress();
+                    // both BungeeCord and Velocity remove the IPv6 scope (if there is one) for Spigot
+                    int ipv6ScopeIndex = bedrockAddress.indexOf('%');
+                    if (ipv6ScopeIndex != -1) {
+                        bedrockAddress = bedrockAddress.substring(0, ipv6ScopeIndex);
+                    }
+
+                    encryptedData = cipher.encryptFromString(BedrockData.of(
+                        clientData.getGameVersion(),
+                        geyserSession.bedrockUsername(),
+                        geyserSession.xuid(),
+                        clientData.getDeviceOs().ordinal(),
+                        clientData.getLanguageCode(),
+                        clientData.getUiProfile().ordinal(),
+                        clientData.getCurrentInputMode().ordinal(),
+                        bedrockAddress,
+                        skinUploader.getId(),
+                        skinUploader.getVerifyCode()
+                    ).toString());
+                } catch (Exception e) {
+                    geyser.getLogger().error(GeyserLocale.getLocaleStringLog("geyser.auth.floodgate.encrypt_fail"), e);
+                    geyserSession.disconnect(GeyserLocale.getPlayerLocaleString("geyser.auth.floodgate.encrypt_fail", locale));
+                    return;
+                }
+
+                addressSuffix = '\0' + new String(encryptedData, StandardCharsets.UTF_8);
+            } else {
+                addressSuffix = "";
+            }
+
+            ClientIntentionPacket intentionPacket = event.getPacket();
+
+            String address;
+            if (geyser.getConfig().getRemote().isForwardHost()) {
+                address = clientData.getServerAddress().split(":")[0];
+            } else {
+                address = intentionPacket.getHostname();
+            }
+
+            event.setPacket(intentionPacket.withHostname(address + addressSuffix));
+        }
+    }
+
+    @Override
+    public void connected(ConnectedEvent event) {
+        geyserSession.loggingIn = false;
+        geyserSession.loggedIn = true;
+
+        if (geyserSession.getDownstream().getSession() instanceof LocalSession) {
+            // Connected directly to the server
+            geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.connect_internal",
+                geyserSession.bedrockUsername(), geyserSession.getProtocol().getProfile().getName()));
+        } else {
+            // Connected to an IP address
+            geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.connect",
+                geyserSession.bedrockUsername(), geyserSession.getProtocol().getProfile().getName(), geyserSession.remoteServer().address()));
+        }
+
+        UUID uuid = geyserSession.getProtocol().getProfile().getId();
+        if (uuid == null) {
+            // Set what our UUID *probably* is going to be
+            if (geyserSession.remoteServer().authType() == AuthType.FLOODGATE) {
+                uuid = new UUID(0, Long.parseLong(geyserSession.xuid()));
+            } else {
+                uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + geyserSession.getProtocol().getProfile().getName()).getBytes(StandardCharsets.UTF_8));
+            }
+        }
+        geyserSession.getPlayerEntity().setUuid(uuid);
+        geyserSession.getPlayerEntity().setUsername(geyserSession.getProtocol().getProfile().getName());
+
+        String locale = geyserSession.getClientData().getLanguageCode();
+
+        // Let the user know there locale may take some time to download
+        // as it has to be extracted from a JAR
+        if (locale.equalsIgnoreCase("en_us") && !MinecraftLocale.LOCALE_MAPPINGS.containsKey("en_us")) {
+            // This should probably be left hardcoded as it will only show for en_us clients
+            geyserSession.sendMessage("Loading your locale (en_us); if this isn't already downloaded, this may take some time");
+        }
+
+        // Download and load the language for the player
+        MinecraftLocale.downloadAndLoadLocale(locale);
+    }
+
+    @Override
+    public void disconnected(DisconnectedEvent event) {
+        geyserSession.loggingIn = false;
+
+        String disconnectMessage, customDisconnectMessage = null;
+        Throwable cause = event.getCause();
+        if (cause instanceof UnexpectedEncryptionException) {
+            if (geyserSession.remoteServer().authType() != AuthType.FLOODGATE) {
+                // Server expects online mode
+                customDisconnectMessage = GeyserLocale.getPlayerLocaleString("geyser.network.remote.authentication_type_mismatch", locale);
+                // Explain that they may be looking for Floodgate.
+                geyser.getLogger().warning(GeyserLocale.getLocaleStringLog(
+                    geyser.getPlatformType() == PlatformType.STANDALONE ?
+                        "geyser.network.remote.floodgate_explanation_standalone"
+                        : "geyser.network.remote.floodgate_explanation_plugin",
+                    Constants.FLOODGATE_DOWNLOAD_LOCATION
+                ));
+            } else {
+                // Likely that Floodgate is not configured correctly.
+                customDisconnectMessage = GeyserLocale.getPlayerLocaleString("geyser.network.remote.floodgate_login_error", locale);
+                if (geyser.getPlatformType() == PlatformType.STANDALONE) {
+                    geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.remote.floodgate_login_error_standalone"));
+                }
+            }
+        } else if (cause instanceof ConnectException) {
+            // Server is offline, probably
+            customDisconnectMessage = GeyserLocale.getPlayerLocaleString("geyser.network.remote.server_offline", locale);
+        }
+
+        // Use our helpful disconnect message whenever possible
+        disconnectMessage = customDisconnectMessage != null ? customDisconnectMessage : MessageTranslator.convertMessage(event.getReason());;
+
+        if (geyserSession.getDownstream().getSession() instanceof LocalSession) {
+            geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.disconnect_internal", geyserSession.bedrockUsername(), disconnectMessage));
+        } else {
+            geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.remote.disconnect", geyserSession.bedrockUsername(), geyserSession.remoteServer().address(), disconnectMessage));
+        }
+        if (cause != null) {
+            if (cause.getMessage() != null) {
+                GeyserImpl.getInstance().getLogger().error(cause.getMessage());
+            } else {
+                GeyserImpl.getInstance().getLogger().error("An exception occurred: ", cause);
+            }
+            if (geyser.getConfig().isDebugMode()) {
+                cause.printStackTrace();
+            }
+        }
+        if ((!geyserSession.isClosed() && geyserSession.loggedIn) || cause != null) {
+            // GeyserSession is disconnected via session.disconnect() called indirectly be the server
+            // This needs to be "initiated" here when there is an exception, but also when the Netty connection
+            // is closed without a disconnect packet - in this case, closed will still be false, but loggedIn
+            // will also be true as GeyserSession#disconnect will not have been called.
+            if (customDisconnectMessage != null) {
+                geyserSession.disconnect(customDisconnectMessage);
+            } else {
+                geyserSession.disconnect(event.getReason());
+            }
+        }
+
+        geyserSession.loggedIn = false;
+    }
+
+    @Override
+    public void packetReceived(Session session, Packet packet) {
+        Registries.JAVA_PACKET_TRANSLATORS.translate(packet.getClass(), packet, geyserSession, true);
+    }
+
+    @Override
+    public void packetError(PacketErrorEvent event) {
+        geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.downstream_error",
+            (event.getPacketClass() != null ? "(" + event.getPacketClass().getSimpleName() + ")" : "") +
+                event.getCause().getMessage())
+        );
+        if (geyser.getConfig().isDebugMode())
+            event.getCause().printStackTrace();
+        event.setSuppress(true);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java b/core/src/main/java/org/geysermc/geyser/session/SessionDisconnectListener.java
similarity index 58%
rename from core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java
rename to core/src/main/java/org/geysermc/geyser/session/SessionDisconnectListener.java
index 0dd843dfa..da1ed75f4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/session/SessionDisconnectListener.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
+ * Copyright (c) 2025 GeyserMC. http://geysermc.org
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
@@ -23,59 +23,59 @@
  * @link https://github.com/GeyserMC/Geyser
  */
 
-package org.geysermc.geyser.translator.protocol.java;
+package org.geysermc.geyser.session;
 
-import org.geysermc.mcprotocollib.protocol.packet.login.clientbound.ClientboundLoginDisconnectPacket;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.TextComponent;
 import net.kyori.adventure.text.TranslatableComponent;
 import org.geysermc.geyser.api.util.PlatformType;
+import org.geysermc.geyser.event.type.SessionDisconnectEventImpl;
 import org.geysermc.geyser.network.GameProtocol;
-import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.GeyserLocale;
-import org.geysermc.geyser.translator.protocol.PacketTranslator;
-import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 
 import java.util.List;
 
-@Translator(packet = ClientboundLoginDisconnectPacket.class)
-public class JavaLoginDisconnectTranslator extends PacketTranslator<ClientboundLoginDisconnectPacket> {
+/**
+ * Geyser's internal listener to modify disconnection messages
+ * for user-friendly messages.
+ * By listening to the event instead of firing the event with the changed message,
+ * third-party-users are able to see the original disconnection message.
+ */
+public final class SessionDisconnectListener {
 
-    @Override
-    public void translate(GeyserSession session, ClientboundLoginDisconnectPacket packet) {
-        Component disconnectReason = packet.getReason();
+    private SessionDisconnectListener() {
+        // no-op
+    }
+
+    public static void onSessionDisconnect(SessionDisconnectEventImpl event) {
+        Component disconnectReason = event.getReasonComponent();
+        GeyserSession session = (GeyserSession) event.connection();
 
         String serverDisconnectMessage = MessageTranslator.convertMessage(disconnectReason, session.locale());
-        String disconnectMessage;
         if (testForOutdatedServer(disconnectReason)) {
             String locale = session.locale();
             PlatformType platform = session.getGeyser().getPlatformType();
             String outdatedType = (platform == PlatformType.BUNGEECORD || platform == PlatformType.VELOCITY || platform == PlatformType.VIAPROXY) ?
-                    "geyser.network.remote.outdated.proxy" : "geyser.network.remote.outdated.server";
-            disconnectMessage = GeyserLocale.getPlayerLocaleString(outdatedType, locale, GameProtocol.getJavaVersions().get(0)) + '\n'
-                    + GeyserLocale.getPlayerLocaleString("geyser.network.remote.original_disconnect_message", locale, serverDisconnectMessage);
+                "geyser.network.remote.outdated.proxy" : "geyser.network.remote.outdated.server";
+            event.disconnectReason(GeyserLocale.getPlayerLocaleString(outdatedType, locale, GameProtocol.getJavaVersions().get(0)) + '\n'
+                + GeyserLocale.getPlayerLocaleString("geyser.network.remote.original_disconnect_message", locale, serverDisconnectMessage));
         } else if (testForMissingProfilePublicKey(disconnectReason)) {
-            disconnectMessage = "Please set `enforce-secure-profile` to `false` in server.properties for Bedrock players to be able to connect." + '\n'
-                    + GeyserLocale.getPlayerLocaleString("geyser.network.remote.original_disconnect_message", session.locale(), serverDisconnectMessage);
-        } else {
-            disconnectMessage = serverDisconnectMessage;
+            event.disconnectReason("Please set `enforce-secure-profile` to `false` in server.properties for Bedrock players to be able to connect." + '\n'
+                + GeyserLocale.getPlayerLocaleString("geyser.network.remote.original_disconnect_message", session.locale(), serverDisconnectMessage));
         }
-
-        // The client doesn't manually get disconnected so we have to do it ourselves
-        session.disconnect(disconnectMessage);
     }
 
-    private boolean testForOutdatedServer(Component disconnectReason) {
+    private static boolean testForOutdatedServer(Component disconnectReason) {
         if (disconnectReason instanceof TranslatableComponent component) {
             String key = component.key();
             return "multiplayer.disconnect.incompatible".equals(key) ||
-                    // Seen with Velocity 1.18 rejecting a 1.19 client
-                    "multiplayer.disconnect.outdated_client".equals(key) ||
-                    // Legacy string (starting from at least 1.15.2)
-                    "multiplayer.disconnect.outdated_server".equals(key)
-                    // Reproduced on 1.15.2 server with ViaVersion 4.0.0-21w20a with 1.18.2 Java client
-                    || key.startsWith("Outdated server!");
+                // Seen with Velocity 1.18 rejecting a 1.19 client
+                "multiplayer.disconnect.outdated_client".equals(key) ||
+                // Legacy string (starting from at least 1.15.2)
+                "multiplayer.disconnect.outdated_server".equals(key)
+                // Reproduced on 1.15.2 server with ViaVersion 4.0.0-21w20a with 1.18.2 Java client
+                || key.startsWith("Outdated server!");
         } else {
             if (disconnectReason instanceof TextComponent component) {
                 if (component.content().startsWith("Outdated server!")) {
@@ -95,7 +95,8 @@ public class JavaLoginDisconnectTranslator extends PacketTranslator<ClientboundL
         return false;
     }
 
-    private boolean testForMissingProfilePublicKey(Component disconnectReason) {
+    private static boolean testForMissingProfilePublicKey(Component disconnectReason) {
         return disconnectReason instanceof TranslatableComponent component && "multiplayer.disconnect.missing_public_key".equals(component.key());
     }
+
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java
index cebf71efd..36c1ef197 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginFinishedTranslator.java
@@ -34,6 +34,7 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.PluginMessageUtils;
 import org.geysermc.mcprotocollib.auth.GameProfile;
+import org.geysermc.mcprotocollib.protocol.data.ProtocolState;
 import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundCustomPayloadPacket;
 import org.geysermc.mcprotocollib.protocol.packet.login.clientbound.ClientboundLoginFinishedPacket;
 
@@ -73,7 +74,7 @@ public class JavaLoginFinishedTranslator extends PacketTranslator<ClientboundLog
         session.getClientData().setOriginalString(null);
 
         // configuration phase stuff that the vanilla client replies with after receiving the GameProfilePacket
-        session.sendDownstreamPacket(new ServerboundCustomPayloadPacket(Key.key("brand"), PluginMessageUtils.getGeyserBrandData()));
+        session.sendDownstreamPacket(new ServerboundCustomPayloadPacket(Key.key("brand"), PluginMessageUtils.getGeyserBrandData()), ProtocolState.CONFIGURATION);
         session.sendJavaClientSettings();
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaTransferPacketTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaTransferPacketTranslator.java
index ad793f934..6f9085b2b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaTransferPacketTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/player/JavaTransferPacketTranslator.java
@@ -25,10 +25,10 @@
 
 package org.geysermc.geyser.translator.protocol.java.entity.player;
 
+import net.kyori.adventure.text.Component;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.event.java.ServerTransferEvent;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.mcprotocollib.protocol.packet.common.clientbound.ClientboundTransferPacket;
@@ -49,7 +49,7 @@ public class JavaTransferPacketTranslator extends PacketTranslator<ClientboundTr
         if (event.bedrockHost() != null && !event.bedrockHost().isBlank() && event.bedrockPort() != -1) {
             session.transfer(event.bedrockHost(), event.bedrockPort());
         } else {
-            session.disconnect(MinecraftLocale.getLocaleString("disconnect.transfer", session.locale()));
+            session.disconnect(Component.translatable("disconnect.transfer"));
         }
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index ba11a20c7..b71caa1dc 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -138,9 +138,9 @@ public class InventoryUtils {
             ) {
                 session.setClosingInventory(true);
             }
+            session.getBundleCache().onInventoryClose(inventory);
         }
         session.setInventoryTranslator(InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR);
-        session.getBundleCache().onInventoryClose(inventory);
         session.setOpenInventory(null);
     }
 

From 07629a42c9226b75501010a2959c5377dffcc1d5 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 15 Jan 2025 23:25:57 +0100
Subject: [PATCH 135/165] Only send the ServerboundClientTickEndPacket while in
 the GAME protocol state, make locale non-null

Fixes https://github.com/GeyserMC/Geyser/issues/5278
---
 .../main/java/org/geysermc/geyser/session/GeyserSession.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 111b966f7..f40dcfecc 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -1180,7 +1180,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
             this.bundleCache.tick();
 
-            if (spawned) {
+            if (spawned && protocol.getOutboundState() == ProtocolState.GAME) {
                 // Could move this to the PlayerAuthInput translator, in the event the player lags
                 // but this will work once we implement matching Java custom tick cycles
                 sendDownstreamGamePacket(ServerboundClientTickEndPacket.INSTANCE);
@@ -1400,7 +1400,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     @Override
     public String locale() {
-        return clientData.getLanguageCode();
+        return clientData != null ? clientData.getLanguageCode() : GeyserLocale.getDefaultLocale();
     }
 
     @Override

From a7d475e7e45189d7448d4324b80e91cb2d39df40 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Fri, 17 Jan 2025 22:47:15 +0100
Subject: [PATCH 136/165] fix black particles around invisible area effect
 cloud entities

---
 core/src/main/java/org/geysermc/geyser/entity/type/Entity.java   | 1 +
 .../geyser/entity/type/living/monster/CreakingEntity.java        | 1 -
 2 files changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
index 0d3214709..c986a8067 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/Entity.java
@@ -176,6 +176,7 @@ public class Entity implements GeyserEntity {
         setFlag(EntityFlag.HAS_COLLISION, true);
         setFlag(EntityFlag.CAN_SHOW_NAME, true);
         setFlag(EntityFlag.CAN_CLIMB, true);
+        setFlag(EntityFlag.HIDDEN_WHEN_INVISIBLE, true);
         // Let the Java server (or us) supply all sounds for an entity
         setClientSideSilent();
     }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
index 1b9fdd8a4..166cdc053 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/monster/CreakingEntity.java
@@ -53,7 +53,6 @@ public class CreakingEntity extends MonsterEntity {
     @Override
     protected void initializeMetadata() {
         super.initializeMetadata();
-        setFlag(EntityFlag.HIDDEN_WHEN_INVISIBLE, true);
         setFlag(EntityFlag.FIRE_IMMUNE, true);
     }
 

From 613718a52d108871efc5569615cc68f93e96098c Mon Sep 17 00:00:00 2001
From: Alex <40795980+AlexProgrammerDE@users.noreply.github.com>
Date: Sat, 18 Jan 2025 13:53:09 +0100
Subject: [PATCH 137/165] Implement session restructure mcpl PR, fix disconnect
 messages in configuration stage (#5196)

* Implement session restructure mcpl PR

* Bump mcpl

* Update mcpl api usage

* Update MCPL to release, fix https://github.com/GeyserMC/Geyser/issues/5281 (https://github.com/GeyserMC/MCProtocolLib/commit/1daf036f57096692b4a18778f8c6e0c12dc7b424)

* Use correct mcpl dependency

* apparently 1.21.4-1 doesn't exist? back to snapshots then

---------

Co-authored-by: onebeastchris <github@onechris.mozmail.com>
---
 .../platform/spigot/GeyserSpigotInjector.java |   7 +-
 .../type/SessionDisconnectEventImpl.java      |   2 +-
 .../updater/AnvilInventoryUpdater.java        |   3 +-
 .../netty/LocalChannelWithRemoteAddress.java  |   7 +-
 .../geyser/network/netty/LocalSession.java    | 151 ++++--------------
 .../geyser/session/DownstreamSession.java     |   4 +-
 .../geyser/session/GeyserSession.java         |  58 +++----
 .../translator/item/CustomItemTranslator.java |   4 +-
 gradle/libs.versions.toml                     |   2 +-
 9 files changed, 79 insertions(+), 159 deletions(-)

diff --git a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
index 9f7e21579..3098ef0e0 100644
--- a/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
+++ b/bootstrap/spigot/src/main/java/org/geysermc/geyser/platform/spigot/GeyserSpigotInjector.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.platform.spigot;
 
+import org.geysermc.mcprotocollib.protocol.MinecraftConstants;
 import org.geysermc.mcprotocollib.protocol.MinecraftProtocol;
 import com.viaversion.viaversion.bukkit.handlers.BukkitChannelInitializer;
 import io.netty.bootstrap.ServerBootstrap;
@@ -176,9 +177,9 @@ public class GeyserSpigotInjector extends GeyserInjector {
      */
     private void workAroundWeirdBug(GeyserBootstrap bootstrap) {
         MinecraftProtocol protocol = new MinecraftProtocol();
-        LocalSession session = new LocalSession(bootstrap.getGeyserConfig().getRemote().address(),
-                bootstrap.getGeyserConfig().getRemote().port(), this.serverSocketAddress,
-                InetAddress.getLoopbackAddress().getHostAddress(), protocol, Runnable::run);
+        LocalSession session = new LocalSession(this.serverSocketAddress, InetAddress.getLoopbackAddress().getHostAddress(), protocol, Runnable::run);
+        session.setFlag(MinecraftConstants.CLIENT_HOST, bootstrap.getGeyserConfig().getRemote().address());
+        session.setFlag(MinecraftConstants.CLIENT_PORT, bootstrap.getGeyserConfig().getRemote().port());
         session.connect();
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java b/core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java
index b746979df..c845b2399 100644
--- a/core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/event/type/SessionDisconnectEventImpl.java
@@ -42,7 +42,7 @@ public class SessionDisconnectEventImpl extends SessionDisconnectEvent {
     private final Component reasonComponent;
 
     public SessionDisconnectEventImpl(@NonNull GeyserSession session, Component reason) {
-        super(session, MessageTranslator.convertToPlainText(reason, session.locale()));
+        super(session, MessageTranslator.convertMessageRaw(reason, session.locale()));
         this.reasonComponent = reason;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index 3ea78a942..aadaeb356 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -47,6 +47,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.Unbreakable;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 
 import java.util.List;
@@ -424,7 +425,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
 
     private boolean hasDurability(GeyserItemStack itemStack) {
         if (itemStack.asItem().defaultMaxDamage() > 0) {
-            return itemStack.getComponentOrFallback(DataComponentType.UNBREAKABLE, false);
+            return itemStack.getComponent(DataComponentType.UNBREAKABLE) != null;
         }
         return false;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/LocalChannelWithRemoteAddress.java b/core/src/main/java/org/geysermc/geyser/network/netty/LocalChannelWithRemoteAddress.java
index ac2b6898a..dacb4de69 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/LocalChannelWithRemoteAddress.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/LocalChannelWithRemoteAddress.java
@@ -28,18 +28,19 @@ package org.geysermc.geyser.network.netty;
 import io.netty.channel.local.LocalChannel;
 
 import java.net.InetSocketAddress;
+import java.net.SocketAddress;
 
 /**
  * Client -> server storing the spoofed remote address.
  */
 public class LocalChannelWithRemoteAddress extends LocalChannel {
-    private InetSocketAddress spoofedAddress;
+    private SocketAddress spoofedAddress;
 
-    public InetSocketAddress spoofedRemoteAddress() {
+    public SocketAddress spoofedRemoteAddress() {
         return spoofedAddress;
     }
 
-    public void spoofedRemoteAddress(InetSocketAddress socketAddress) {
+    public void spoofedRemoteAddress(SocketAddress socketAddress) {
         this.spoofedAddress = socketAddress;
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
index 3b86a0bf9..e1847bdee 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
@@ -27,150 +27,65 @@ package org.geysermc.geyser.network.netty;
 
 import io.netty.bootstrap.Bootstrap;
 import io.netty.buffer.ByteBufAllocator;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.ChannelInboundHandlerAdapter;
-import io.netty.channel.ChannelInitializer;
+import io.netty.channel.Channel;
+import io.netty.channel.ChannelFactory;
+import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelOption;
-import io.netty.channel.ChannelPipeline;
-import io.netty.channel.DefaultEventLoopGroup;
+import io.netty.channel.ReflectiveChannelFactory;
 import io.netty.channel.unix.PreferredDirectByteBufAllocator;
-import io.netty.handler.codec.haproxy.HAProxyCommand;
-import io.netty.handler.codec.haproxy.HAProxyMessage;
-import io.netty.handler.codec.haproxy.HAProxyMessageEncoder;
-import io.netty.handler.codec.haproxy.HAProxyProtocolVersion;
-import io.netty.handler.codec.haproxy.HAProxyProxiedProtocol;
-import io.netty.handler.timeout.ReadTimeoutHandler;
-import io.netty.handler.timeout.WriteTimeoutHandler;
-import io.netty.util.concurrent.DefaultThreadFactory;
 import org.checkerframework.checker.nullness.qual.NonNull;
-import org.geysermc.mcprotocollib.network.BuiltinFlags;
-import org.geysermc.mcprotocollib.network.codec.PacketCodecHelper;
+import org.geysermc.mcprotocollib.network.helper.NettyHelper;
+import org.geysermc.mcprotocollib.network.netty.MinecraftChannelInitializer;
 import org.geysermc.mcprotocollib.network.packet.PacketProtocol;
-import org.geysermc.mcprotocollib.network.tcp.FlushHandler;
-import org.geysermc.mcprotocollib.network.tcp.TcpFlowControlHandler;
-import org.geysermc.mcprotocollib.network.tcp.TcpPacketCodec;
-import org.geysermc.mcprotocollib.network.tcp.TcpPacketCompression;
-import org.geysermc.mcprotocollib.network.tcp.TcpPacketEncryptor;
-import org.geysermc.mcprotocollib.network.tcp.TcpPacketSizer;
-import org.geysermc.mcprotocollib.network.tcp.TcpSession;
-import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
+import org.geysermc.mcprotocollib.network.session.ClientNetworkSession;
 
-import java.net.Inet4Address;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Manages a Minecraft Java session over our LocalChannel implementations.
  */
-public final class LocalSession extends TcpSession {
-    private static DefaultEventLoopGroup DEFAULT_EVENT_LOOP_GROUP;
+public final class LocalSession extends ClientNetworkSession {
     private static PreferredDirectByteBufAllocator PREFERRED_DIRECT_BYTE_BUF_ALLOCATOR = null;
 
-    private final SocketAddress targetAddress;
-    private final String clientIp;
-    private final PacketCodecHelper codecHelper;
+    private final SocketAddress spoofedRemoteAddress;
 
-    public LocalSession(String host, int port, SocketAddress targetAddress, String clientIp, PacketProtocol protocol, Executor packetHandlerExecutor) {
-        super(host, port, protocol, packetHandlerExecutor);
-        this.targetAddress = targetAddress;
-        this.clientIp = clientIp;
-        this.codecHelper = protocol.createHelper();
+    public LocalSession(SocketAddress targetAddress, String clientIp, PacketProtocol protocol, Executor packetHandlerExecutor) {
+        super(targetAddress, protocol, packetHandlerExecutor, null, null);
+        this.spoofedRemoteAddress = new InetSocketAddress(clientIp, 0);
     }
 
     @Override
-    public void connect(boolean wait, boolean transferring) {
-        if (this.disconnected) {
-            throw new IllegalStateException("Connection has already been disconnected.");
-        }
-
-        if (DEFAULT_EVENT_LOOP_GROUP == null) {
-            DEFAULT_EVENT_LOOP_GROUP = new DefaultEventLoopGroup(new DefaultThreadFactory(this.getClass(), true));
-            Runtime.getRuntime().addShutdownHook(new Thread(
-                () -> DEFAULT_EVENT_LOOP_GROUP.shutdownGracefully(100, 500, TimeUnit.MILLISECONDS)));
-        }
-
-        final Bootstrap bootstrap = new Bootstrap();
-        bootstrap.channel(LocalChannelWithRemoteAddress.class);
-        bootstrap.handler(new ChannelInitializer<LocalChannelWithRemoteAddress>() {
-            @Override
-            public void initChannel(@NonNull LocalChannelWithRemoteAddress channel) {
-                channel.spoofedRemoteAddress(new InetSocketAddress(clientIp, 0));
-                PacketProtocol protocol = getPacketProtocol();
-                protocol.newClientSession(LocalSession.this, transferring);
-
-                ChannelPipeline pipeline = channel.pipeline();
-
-                addHAProxySupport(pipeline);
-
-                pipeline.addLast("read-timeout", new ReadTimeoutHandler(getFlag(BuiltinFlags.READ_TIMEOUT, 30)));
-                pipeline.addLast("write-timeout", new WriteTimeoutHandler(getFlag(BuiltinFlags.WRITE_TIMEOUT, 0)));
-
-                pipeline.addLast("encryption", new TcpPacketEncryptor());
-                pipeline.addLast("sizer", new TcpPacketSizer(protocol.getPacketHeader(), getCodecHelper()));
-                pipeline.addLast("compression", new TcpPacketCompression(getCodecHelper()));
-
-                pipeline.addLast("flow-control", new TcpFlowControlHandler());
-                pipeline.addLast("codec", new TcpPacketCodec(LocalSession.this, true));
-                pipeline.addLast("flush-handler", new FlushHandler());
-                pipeline.addLast("manager", LocalSession.this);
-            }
-        }).group(DEFAULT_EVENT_LOOP_GROUP).option(ChannelOption.CONNECT_TIMEOUT_MILLIS, getFlag(BuiltinFlags.CLIENT_CONNECT_TIMEOUT, 30) * 1000);
+    protected ChannelFactory<? extends Channel> getChannelFactory() {
+        return new ReflectiveChannelFactory<>(LocalChannelWithRemoteAddress.class);
+    }
 
+    @Override
+    protected void setOptions(Bootstrap bootstrap) {
         if (PREFERRED_DIRECT_BYTE_BUF_ALLOCATOR != null) {
             bootstrap.option(ChannelOption.ALLOCATOR, PREFERRED_DIRECT_BYTE_BUF_ALLOCATOR);
         }
-
-        bootstrap.remoteAddress(targetAddress);
-
-        CompletableFuture<Void> handleFuture = new CompletableFuture<>();
-        bootstrap.connect().addListener((futureListener) -> {
-            if (!futureListener.isSuccess()) {
-                exceptionCaught(null, futureListener.cause());
-            }
-
-            handleFuture.complete(null);
-        });
-
-        if (wait) {
-            handleFuture.join();
-        }
     }
 
     @Override
-    public MinecraftCodecHelper getCodecHelper() {
-        return (MinecraftCodecHelper) this.codecHelper;
-    }
+    protected ChannelHandler getChannelHandler() {
+        return new MinecraftChannelInitializer<>(channel -> {
+            PacketProtocol protocol = getPacketProtocol();
+            protocol.newClientSession(LocalSession.this);
 
-    // TODO duplicate code
-    private void addHAProxySupport(ChannelPipeline pipeline) {
-        InetSocketAddress clientAddress = getFlag(BuiltinFlags.CLIENT_PROXIED_ADDRESS);
-        if (clientAddress != null) {
-            pipeline.addFirst("proxy-protocol-packet-sender", new ChannelInboundHandlerAdapter() {
-                @Override
-                public void channelActive(@NonNull ChannelHandlerContext ctx) throws Exception {
-                    HAProxyProxiedProtocol proxiedProtocol = clientAddress.getAddress() instanceof Inet4Address ? HAProxyProxiedProtocol.TCP4 : HAProxyProxiedProtocol.TCP6;
-                    InetSocketAddress remoteAddress;
-                    if (ctx.channel().remoteAddress() instanceof InetSocketAddress) {
-                        remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
-                    } else {
-                        remoteAddress = new InetSocketAddress(host, port);
-                    }
-                    ctx.channel().writeAndFlush(new HAProxyMessage(
-                        HAProxyProtocolVersion.V2, HAProxyCommand.PROXY, proxiedProtocol,
-                        clientAddress.getAddress().getHostAddress(), remoteAddress.getAddress().getHostAddress(),
-                        clientAddress.getPort(), remoteAddress.getPort()
-                    ));
-                    ctx.pipeline().remove(this);
-                    ctx.pipeline().remove("proxy-protocol-encoder");
-                    super.channelActive(ctx);
-                }
-            });
-            pipeline.addFirst("proxy-protocol-encoder", HAProxyMessageEncoder.INSTANCE);
-        }
-        }
+            return LocalSession.this;
+        }, true) {
+            @Override
+            public void initChannel(@NonNull Channel channel) throws Exception {
+                ((LocalChannelWithRemoteAddress) channel).spoofedRemoteAddress(spoofedRemoteAddress);
+
+                NettyHelper.initializeHAProxySupport(LocalSession.this, channel);
+
+                super.initChannel(channel);
+            }
+        };
+    }
 
     /**
      * Should only be called when direct ByteBufs should be preferred. At this moment, this should only be called on BungeeCord.
diff --git a/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java b/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
index c1db89484..22827ccfa 100644
--- a/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
@@ -29,14 +29,14 @@ import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import net.kyori.adventure.text.Component;
 import org.checkerframework.checker.nullness.qual.NonNull;
+import org.geysermc.mcprotocollib.network.ClientSession;
 import org.geysermc.mcprotocollib.network.packet.Packet;
-import org.geysermc.mcprotocollib.network.tcp.TcpSession;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
 
 @Getter
 @RequiredArgsConstructor
 public class DownstreamSession {
-    private final TcpSession session;
+    private final ClientSession session;
 
     public void sendPacket(@NonNull Packet packet) {
         this.session.send(packet);
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index f40dcfecc..1cb5d1fd4 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -181,9 +181,9 @@ import org.geysermc.geyser.util.MathUtils;
 import org.geysermc.geyser.util.MinecraftAuthLogger;
 import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.network.BuiltinFlags;
+import org.geysermc.mcprotocollib.network.ClientSession;
 import org.geysermc.mcprotocollib.network.packet.Packet;
-import org.geysermc.mcprotocollib.network.tcp.TcpClientSession;
-import org.geysermc.mcprotocollib.network.tcp.TcpSession;
+import org.geysermc.mcprotocollib.network.session.ClientNetworkSession;
 import org.geysermc.mcprotocollib.protocol.ClientListener;
 import org.geysermc.mcprotocollib.protocol.MinecraftConstants;
 import org.geysermc.mcprotocollib.protocol.MinecraftProtocol;
@@ -199,6 +199,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.setting.ParticleStatus;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.SkinPart;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.CustomStatistic;
 import org.geysermc.mcprotocollib.protocol.data.game.statistic.Statistic;
+import org.geysermc.mcprotocollib.protocol.data.handshake.HandshakeIntent;
 import org.geysermc.mcprotocollib.protocol.packet.common.serverbound.ServerboundClientInformationPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatCommandSignedPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.ServerboundChatPacket;
@@ -770,7 +771,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         // Default move speed
         // Bedrock clients move very fast by default until they get an attribute packet correcting the speed
         attributesPacket.setAttributes(Collections.singletonList(
-                GeyserAttributeType.MOVEMENT_SPEED.getAttribute()));
+            GeyserAttributeType.MOVEMENT_SPEED.getAttribute()));
         upstream.sendPacket(attributesPacket);
 
         GameRulesChangedPacket gamerulePacket = new GameRulesChangedPacket();
@@ -826,8 +827,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
             StepMCToken.MCToken mcToken = mcProfile.getMcToken();
 
             protocol = new MinecraftProtocol(
-                    new GameProfile(mcProfile.getId(), mcProfile.getName()),
-                    mcToken.getAccessToken()
+                new GameProfile(mcProfile.getId(), mcProfile.getName()),
+                mcToken.getAccessToken()
             );
             geyser.saveAuthChain(bedrockUsername(), GSON.toJson(step.toJson(response)));
             return Boolean.TRUE;
@@ -872,7 +873,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         sendUpstreamPacket(packet);
 
         final PendingMicrosoftAuthentication.AuthenticationTask task = geyser.getPendingMicrosoftAuthentication().getOrCreateTask(
-                getAuthData().xuid()
+            getAuthData().xuid()
         );
         if (task.getAuthentication() != null && task.getAuthentication().isDone()) {
             onMicrosoftLoginComplete(task);
@@ -898,8 +899,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
             if (ex != null) {
                 geyser.getLogger().error("Failed to log in with Microsoft code!", ex);
                 if (ex instanceof CompletionException ce
-                        && ce.getCause() instanceof MinecraftRequestException mre
-                        && mre.getResponse().getStatusCode() == 404) {
+                    && ce.getCause() instanceof MinecraftRequestException mre
+                    && mre.getResponse().getStatusCode() == 404) {
                     // Player is trying to join with a Microsoft account that doesn't have Java Edition purchased
                     disconnect(GeyserLocale.getPlayerLocaleString("geyser.network.remote.invalid_account", locale()));
                 } else {
@@ -912,8 +913,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
             StepMCToken.MCToken mcToken = mcProfile.getMcToken();
 
             this.protocol = new MinecraftProtocol(
-                    new GameProfile(mcProfile.getId(), mcProfile.getName()),
-                    mcToken.getAccessToken()
+                new GameProfile(mcProfile.getId(), mcProfile.getName()),
+                mcToken.getAccessToken()
             );
 
             try {
@@ -937,7 +938,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         GeyserImpl.getInstance().eventBus().fire(loginEvent);
         if (loginEvent.isCancelled()) {
             String disconnectReason = loginEvent.disconnectReason() == null ?
-                    BedrockDisconnectReasons.DISCONNECTED : loginEvent.disconnectReason();
+                BedrockDisconnectReasons.DISCONNECTED : loginEvent.disconnectReason();
             disconnect(disconnectReason);
             return;
         }
@@ -948,15 +949,17 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         // Start ticking
         tickThread = tickEventLoop.scheduleAtFixedRate(this::tick, nanosecondsPerTick, nanosecondsPerTick, TimeUnit.NANOSECONDS);
 
-        TcpSession downstream;
+        ClientSession downstream;
         if (geyser.getBootstrap().getSocketAddress() != null) {
             // We're going to connect through the JVM and not through TCP
-            downstream = new LocalSession(this.remoteServer.address(), this.remoteServer.port(),
-                    geyser.getBootstrap().getSocketAddress(), upstream.getAddress().getAddress().getHostAddress(),
-                    this.protocol, this.tickEventLoop);
+            downstream = new LocalSession(geyser.getBootstrap().getSocketAddress(),
+                upstream.getAddress().getAddress().getHostAddress(),
+                this.protocol, this.tickEventLoop);
+            downstream.setFlag(MinecraftConstants.CLIENT_HOST, this.remoteServer.address());
+            downstream.setFlag(MinecraftConstants.CLIENT_PORT, this.remoteServer.port());
             this.downstream = new DownstreamSession(downstream);
         } else {
-            downstream = new TcpClientSession(this.remoteServer.address(), this.remoteServer.port(), "0.0.0.0", 0, this.protocol, null, tickEventLoop);
+            downstream = new ClientNetworkSession(new InetSocketAddress(this.remoteServer.address(), this.remoteServer.port()), this.protocol, tickEventLoop, null, null);
             this.downstream = new DownstreamSession(downstream);
 
             boolean resolveSrv = false;
@@ -986,11 +989,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         protocol.setUseDefaultListeners(false);
 
         // MCPL listener comes first to handle protocol state switching before Geyser translates packets
-        downstream.addListener(new ClientListener(ProtocolState.LOGIN, loginEvent.transferring()));
+        downstream.addListener(new ClientListener(HandshakeIntent.LOGIN));
         // Geyser adapter second to ensure translating packets in the correct states
         downstream.addListener(new GeyserSessionAdapter(this));
 
-        downstream.connect(false, loginEvent.transferring());
+        downstream.setFlag(BuiltinFlags.CLIENT_TRANSFERRING, loginEvent.transferring());
+        downstream.connect(false);
 
         if (!daylightCycle) {
             setDaylightCycle(true);
@@ -1287,7 +1291,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     public void setClientData(BedrockClientData data) {
         this.clientData = data;
         this.inputCache.setInputMode(
-                org.cloudburstmc.protocol.bedrock.data.InputMode.values()[data.getCurrentInputMode().ordinal()]);
+            org.cloudburstmc.protocol.bedrock.data.InputMode.values()[data.getCurrentInputMode().ordinal()]);
     }
 
     /**
@@ -1295,7 +1299,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
      */
     public void useItem(Hand hand) {
         sendDownstreamGamePacket(new ServerboundUseItemPacket(
-                hand, worldCache.nextPredictionSequence(), playerEntity.getYaw(), playerEntity.getPitch()));
+            hand, worldCache.nextPredictionSequence(), playerEntity.getYaw(), playerEntity.getPitch()));
     }
 
     public void releaseItem() {
@@ -1351,7 +1355,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private boolean disableBlocking() {
         if (playerEntity.getFlag(EntityFlag.BLOCKING)) {
             ServerboundPlayerActionPacket releaseItemPacket = new ServerboundPlayerActionPacket(PlayerAction.RELEASE_USE_ITEM,
-                    Vector3i.ZERO, Direction.DOWN, 0);
+                Vector3i.ZERO, Direction.DOWN, 0);
             sendDownstreamGamePacket(releaseItemPacket);
             playerEntity.setFlag(EntityFlag.BLOCKING, false);
             return true;
@@ -1361,7 +1365,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     public void requestOffhandSwap() {
         ServerboundPlayerActionPacket swapHandsPacket = new ServerboundPlayerActionPacket(PlayerAction.SWAP_HANDS, Vector3i.ZERO,
-                Direction.DOWN, 0);
+            Direction.DOWN, 0);
         sendDownstreamGamePacket(swapHandsPacket);
     }
 
@@ -1585,7 +1589,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
             unconfirmedTeleport.resetUnconfirmedFor();
             geyser.getLogger().debug("Resending teleport " + unconfirmedTeleport.getTeleportConfirmId());
             getPlayerEntity().moveAbsolute(Vector3f.from(unconfirmedTeleport.getX(), unconfirmedTeleport.getY(), unconfirmedTeleport.getZ()),
-                    unconfirmedTeleport.getYaw(), unconfirmedTeleport.getPitch(), playerEntity.isOnGround(), true);
+                unconfirmedTeleport.getYaw(), unconfirmedTeleport.getPitch(), playerEntity.isOnGround(), true);
         }
     }
 
@@ -1841,8 +1845,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     public void sendJavaClientSettings() {
         // Locale is lowercase on Java - (https://github.com/GeyserMC/Geyser/issues/5235)
         ServerboundClientInformationPacket clientSettingsPacket = new ServerboundClientInformationPacket(locale().toLowerCase(Locale.ROOT),
-                getRenderDistance(), ChatVisibility.FULL, true, SKIN_PARTS,
-                HandPreference.RIGHT_HAND, false, true, ParticleStatus.ALL); // TODO particle status
+            getRenderDistance(), ChatVisibility.FULL, true, SKIN_PARTS,
+            HandPreference.RIGHT_HAND, false, true, ParticleStatus.ALL); // TODO particle status
         sendDownstreamPacket(clientSettingsPacket);
     }
 
@@ -1895,8 +1899,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         return switch (pose) {
             case SNEAKING -> 1.27f;
             case SWIMMING,
-                    FALL_FLYING, // Elytra
-                    SPIN_ATTACK -> 0.4f; // Trident spin attack
+                 FALL_FLYING, // Elytra
+                 SPIN_ATTACK -> 0.4f; // Trident spin attack
             case SLEEPING -> 0.2f;
             default -> EntityDefinitions.PLAYER.offset();
         };
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
index fdc90c215..c6318c461 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
@@ -119,9 +119,7 @@ public final class CustomItemTranslator {
 
     private static boolean isDamagableItem(DataComponents components) {
         // mapping.getMaxDamage > 0 should also be checked (return false if not true) but we already check prior to this function
-        Boolean unbreakable = components.get(DataComponentType.UNBREAKABLE);
-        // Tag must either not be present or be set to false
-        return unbreakable == null || !unbreakable;
+        return components.get(DataComponentType.UNBREAKABLE) == null;
     }
 
     private CustomItemTranslator() {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 65cef50f8..598fb4779 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241213.160944-20"
 protocol-codec = "3.0.0.Beta5-20241213.160944-20"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-20241222.190029-11"
+mcprotocollib = "1.21.4-20250118.113140-16"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From dff7cf2136dfde6d513f28386444709e54968130 Mon Sep 17 00:00:00 2001
From: Alex <40795980+AlexProgrammerDE@users.noreply.github.com>
Date: Sat, 18 Jan 2025 17:10:27 +0100
Subject: [PATCH 138/165] Use vanilla dns resolving (#5283)

* Use vanilla dns resolving

* Update gradle/libs.versions.toml

Co-authored-by: chris <github@onechris.mozmail.com>

* Update gradle/libs.versions.toml

Co-authored-by: chris <github@onechris.mozmail.com>

---------

Co-authored-by: chris <github@onechris.mozmail.com>
---
 gradle/libs.versions.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 598fb4779..e5e8a3faa 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241213.160944-20"
 protocol-codec = "3.0.0.Beta5-20241213.160944-20"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-20250118.113140-16"
+mcprotocollib = "1.21.4-20250118.154631-17"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From 98f9bf6b6281a268e9ae1ac1eccb2c4a10dfebde Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 19 Jan 2025 14:29:58 +0100
Subject: [PATCH 139/165] Fix issues with Geyser-Spigot that occurring with
 older server versions

---
 .../geyser/entity/type/TextDisplayEntity.java    |  2 +-
 .../geyser/network/netty/LocalSession.java       | 16 ++++++++++++++++
 .../geysermc/geyser/session/GeyserSession.java   |  5 +++--
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
index 0cd207c52..ccd93d12a 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
@@ -67,7 +67,7 @@ public class TextDisplayEntity extends DisplayBaseEntity {
     }
 
     public void setText(EntityMetadata<Component, ?> entityMetadata) {
-        this.dirtyMetadata.put(EntityDataTypes.NAME, MessageTranslator.convertMessage(entityMetadata.getValue()));
+        this.dirtyMetadata.put(EntityDataTypes.NAME, MessageTranslator.convertMessage(entityMetadata.getValue(), session.locale()));
         calculateLineCount(entityMetadata.getValue());
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
index e1847bdee..0f6e6b5bc 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/LocalSession.java
@@ -31,8 +31,11 @@ import io.netty.channel.Channel;
 import io.netty.channel.ChannelFactory;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelOption;
+import io.netty.channel.DefaultEventLoopGroup;
+import io.netty.channel.EventLoopGroup;
 import io.netty.channel.ReflectiveChannelFactory;
 import io.netty.channel.unix.PreferredDirectByteBufAllocator;
+import io.netty.util.concurrent.DefaultThreadFactory;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.mcprotocollib.network.helper.NettyHelper;
 import org.geysermc.mcprotocollib.network.netty.MinecraftChannelInitializer;
@@ -42,11 +45,13 @@ import org.geysermc.mcprotocollib.network.session.ClientNetworkSession;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.concurrent.Executor;
+import java.util.concurrent.TimeUnit;
 
 /**
  * Manages a Minecraft Java session over our LocalChannel implementations.
  */
 public final class LocalSession extends ClientNetworkSession {
+    private static DefaultEventLoopGroup DEFAULT_EVENT_LOOP_GROUP;
     private static PreferredDirectByteBufAllocator PREFERRED_DIRECT_BYTE_BUF_ALLOCATOR = null;
 
     private final SocketAddress spoofedRemoteAddress;
@@ -68,6 +73,17 @@ public final class LocalSession extends ClientNetworkSession {
         }
     }
 
+    @Override
+    protected EventLoopGroup getEventLoopGroup() {
+        if (DEFAULT_EVENT_LOOP_GROUP == null) {
+            DEFAULT_EVENT_LOOP_GROUP = new DefaultEventLoopGroup(new DefaultThreadFactory(this.getClass(), true));
+            Runtime.getRuntime().addShutdownHook(new Thread(
+                () -> DEFAULT_EVENT_LOOP_GROUP.shutdownGracefully(100, 500, TimeUnit.MILLISECONDS)));
+        }
+
+        return DEFAULT_EVENT_LOOP_GROUP;
+    }
+
     @Override
     protected ChannelHandler getChannelHandler() {
         return new MinecraftChannelInitializer<>(channel -> {
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 1cb5d1fd4..fc8f82dd0 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -173,6 +173,7 @@ import org.geysermc.geyser.session.cache.WorldBorder;
 import org.geysermc.geyser.session.cache.WorldCache;
 import org.geysermc.geyser.text.GeyserLocale;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
+import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.ChunkUtils;
 import org.geysermc.geyser.util.EntityUtils;
 import org.geysermc.geyser.util.InventoryUtils;
@@ -1025,7 +1026,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
                 // Downstream's disconnect will fire an event that prints a log message
                 // Otherwise, we print a message here
                 String address = geyser.getConfig().isLogPlayerIpAddresses() ? upstream.getAddress().getAddress().toString() : "<IP address withheld>";
-                geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.disconnect", address, reason));
+                geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.disconnect", address, MessageTranslator.convertMessage(reason)));
             }
 
             // Disconnect upstream if necessary
@@ -1646,7 +1647,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         }
 
         if (protocol.getOutboundState() != intendedState) {
-            geyser.getLogger().warning("Tried to send " + packet.getClass().getSimpleName() + " packet while not in " + intendedState.name() + " outbound state. Current state: " + protocol.getOutboundState().name());
+            geyser.getLogger().debug("Tried to send " + packet.getClass().getSimpleName() + " packet while not in " + intendedState.name() + " outbound state. Current state: " + protocol.getOutboundState().name());
             return;
         }
 

From 5836dabcdaa8945762d690f7e2784895959060dd Mon Sep 17 00:00:00 2001
From: Alex <40795980+AlexProgrammerDE@users.noreply.github.com>
Date: Tue, 21 Jan 2025 16:11:09 +0100
Subject: [PATCH 140/165] Use mcpl staticify PR (#5284)

* Use mcpl staticify PR

* Fix missing generic arg

* Update libs.versions.toml
---
 .../org/geysermc/geyser/level/WorldManager.java  |  5 ++---
 .../registry/loader/RecipeRegistryLoader.java    | 16 ++++++++--------
 .../DataComponentRegistryPopulator.java          |  8 +++-----
 .../geyser/session/DownstreamSession.java        | 10 ----------
 .../level/JavaLevelChunkWithLightTranslator.java |  3 ++-
 .../scoreboard/network/ScoreboardIssueTests.java |  2 +-
 gradle/libs.versions.toml                        |  2 +-
 7 files changed, 17 insertions(+), 29 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/level/WorldManager.java b/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
index a85462108..c33fc7665 100644
--- a/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
@@ -39,7 +39,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemCodecHelper;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.Difficulty;
 
 import java.util.HashMap;
@@ -203,9 +202,9 @@ public abstract class WorldManager {
         try {
             Map<DataComponentType<?>, DataComponent<?, ?>> components = new HashMap<>();
             Int2ObjectMaps.fastForEach(map, entry -> {
-                DataComponentType type = DataComponentType.from(entry.getIntKey());
+                DataComponentType<?> type = DataComponentType.from(entry.getIntKey());
                 ByteBuf buf = Unpooled.wrappedBuffer(entry.getValue());
-                DataComponent value = type.readDataComponent(ItemCodecHelper.INSTANCE, buf);
+                DataComponent<?, ?> value = type.readDataComponent(buf);
                 components.put(type, value);
             });
             return new DataComponents(components);
diff --git a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
index 4cbd2ea47..74c36c00a 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/loader/RecipeRegistryLoader.java
@@ -31,7 +31,7 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtType;
 import org.geysermc.geyser.inventory.recipe.GeyserRecipe;
-import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
+import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.Ingredient;
@@ -81,10 +81,10 @@ public abstract class RecipeRegistryLoader implements RegistryLoader<String, Map
 //        }
 //    }
 
-    private static List<GeyserRecipe> getShapelessRecipes(List<NbtMap> recipes, MinecraftCodecHelper helper) {
+    private static List<GeyserRecipe> getShapelessRecipes(List<NbtMap> recipes) {
         List<GeyserRecipe> deserializedRecipes = new ObjectArrayList<>(recipes.size());
         for (NbtMap recipe : recipes) {
-            ItemStack output = toItemStack(recipe.getCompound("output"), helper);
+            ItemStack output = toItemStack(recipe.getCompound("output"));
             List<NbtMap> rawInputs = recipe.getList("inputs", NbtType.COMPOUND);
             Ingredient[] javaInputs = new Ingredient[rawInputs.size()];
             for (int i = 0; i < rawInputs.size(); i++) {
@@ -95,16 +95,16 @@ public abstract class RecipeRegistryLoader implements RegistryLoader<String, Map
         return deserializedRecipes;
     }
 
-    private static List<GeyserRecipe> getShapedRecipes(List<NbtMap> recipes, MinecraftCodecHelper helper) {
+    private static List<GeyserRecipe> getShapedRecipes(List<NbtMap> recipes) {
         List<GeyserRecipe> deserializedRecipes = new ObjectArrayList<>(recipes.size());
         for (NbtMap recipe : recipes) {
-            ItemStack output = toItemStack(recipe.getCompound("output"), helper);
+            ItemStack output = toItemStack(recipe.getCompound("output"));
             List<int[]> shape = recipe.getList("shape", NbtType.INT_ARRAY);
 
             // In the recipes mapping, each recipe is mapped by a number
             List<ItemStack> letterToRecipe = new ArrayList<>();
             for (NbtMap rawInput : recipe.getList("inputs", NbtType.COMPOUND)) {
-                letterToRecipe.add(toItemStack(rawInput, helper));
+                letterToRecipe.add(toItemStack(rawInput));
             }
 
             Ingredient[] inputs = new Ingredient[shape.size() * shape.get(0).length];
@@ -126,14 +126,14 @@ public abstract class RecipeRegistryLoader implements RegistryLoader<String, Map
      * id is the Java item ID as an integer, components is an optional String of the data components serialized
      * as bytes in Base64 (so MCProtocolLib can parse the data).
      */
-    private static ItemStack toItemStack(NbtMap nbt, MinecraftCodecHelper helper) {
+    private static ItemStack toItemStack(NbtMap nbt) {
         int id = nbt.getInt("id");
         int count = nbt.getInt("count", 1);
         String componentsRaw = nbt.getString("components", null);
         if (componentsRaw != null) {
             byte[] bytes = Base64.getDecoder().decode(componentsRaw);
             ByteBuf buf = Unpooled.wrappedBuffer(bytes);
-            DataComponents components = helper.readDataComponentPatch(buf);
+            DataComponents components = MinecraftTypes.readDataComponentPatch(buf);
             return new ItemStack(id, count, components);
         }
         return new ItemStack(id, count);
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
index d8547bbfc..742564a39 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
@@ -36,11 +36,10 @@ import it.unimi.dsi.fastutil.objects.ObjectArrayList;
 import org.geysermc.geyser.GeyserBootstrap;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.registry.Registries;
-import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
+import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemCodecHelper;
 
 import java.io.InputStream;
 import java.io.InputStreamReader;
@@ -71,10 +70,9 @@ public final class DataComponentRegistryPopulator {
                     String encodedValue = componentEntry.getValue().getAsString();
                     byte[] bytes = Base64.getDecoder().decode(encodedValue);
                     ByteBuf buf = Unpooled.wrappedBuffer(bytes);
-                    MinecraftCodecHelper helper = new MinecraftCodecHelper();
-                    int varInt = helper.readVarInt(buf);
+                    int varInt = MinecraftTypes.readVarInt(buf);
                     DataComponentType<?> dataComponentType = DataComponentType.from(varInt);
-                    DataComponent<?, ?> dataComponent = dataComponentType.readDataComponent(ItemCodecHelper.INSTANCE, buf);
+                    DataComponent<?, ?> dataComponent = dataComponentType.readDataComponent(buf);
 
                     map.put(dataComponentType, dataComponent);
                 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java b/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
index 22827ccfa..a55f84ab2 100644
--- a/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/DownstreamSession.java
@@ -31,7 +31,6 @@ import net.kyori.adventure.text.Component;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.mcprotocollib.network.ClientSession;
 import org.geysermc.mcprotocollib.network.packet.Packet;
-import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodecHelper;
 
 @Getter
 @RequiredArgsConstructor
@@ -53,13 +52,4 @@ public class DownstreamSession {
     public boolean isClosed() {
         return !this.session.isConnected();
     }
-
-    /**
-     * Gets the codec helper for this session.
-     *
-     * @return the codec helper for this session
-     */
-    public MinecraftCodecHelper getCodecHelper() {
-        return (MinecraftCodecHelper) this.session.getCodecHelper();
-    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java
index af3c8595e..f4b74be02 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/level/JavaLevelChunkWithLightTranslator.java
@@ -61,6 +61,7 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.BlockEntityUtils;
 import org.geysermc.geyser.util.ChunkUtils;
+import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.chunk.BitStorage;
 import org.geysermc.mcprotocollib.protocol.data.game.chunk.ChunkSection;
 import org.geysermc.mcprotocollib.protocol.data.game.chunk.DataPalette;
@@ -115,7 +116,7 @@ public class JavaLevelChunkWithLightTranslator extends PacketTranslator<Clientbo
             ByteBuf in = Unpooled.wrappedBuffer(packet.getChunkData());
             boolean extendedCollisionNextSection = false;
             for (int sectionY = 0; sectionY < chunkSize; sectionY++) {
-                ChunkSection javaSection = session.getDownstream().getCodecHelper().readChunkSection(in);
+                ChunkSection javaSection = MinecraftTypes.readChunkSection(in);
                 javaChunks[sectionY] = javaSection.getChunkData();
                 javaBiomes[sectionY] = javaSection.getBiomeData();
                 boolean extendedCollision = extendedCollisionNextSection;
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
index 0b3d2c5e7..e01ea7cd3 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
@@ -212,7 +212,7 @@ public class ScoreboardIssueTests {
             });
 
             // metadata set: invisible, custom name, custom name visible
-            context.translate(setEntityDataTranslator, new ClientboundSetEntityDataPacket(1298, new EntityMetadata[]{
+            context.translate(setEntityDataTranslator, new ClientboundSetEntityDataPacket(1298, new EntityMetadata<?, ?>[]{
                 new ByteEntityMetadata(0, MetadataType.BYTE, (byte) 0x20),
                 new ObjectEntityMetadata<>(2, MetadataType.OPTIONAL_CHAT, Optional.of(Component.text("tesss"))),
                 new BooleanEntityMetadata(3, MetadataType.BOOLEAN, true)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e5e8a3faa..f74de4de0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta5-20241213.160944-20"
 protocol-codec = "3.0.0.Beta5-20241213.160944-20"
 raknet = "1.0.0.CR3-20240416.144209-1"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-20250118.154631-17"
+mcprotocollib = "1.21.4-20250121.131208-18"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From c666028eb695e616c7c75bd72a27e0eec3674b52 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 29 Jan 2025 00:42:44 +0100
Subject: [PATCH 141/165] Update Bedrock network library fixes
 https://github.com/GeyserMC/Geyser/issues/4971

---
 gradle/libs.versions.toml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index f74de4de0..2943521e0 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -13,7 +13,7 @@ websocket = "1.5.1"
 protocol-connection = "3.0.0.Beta5-20241213.160944-20"
 protocol-common = "3.0.0.Beta5-20241213.160944-20"
 protocol-codec = "3.0.0.Beta5-20241213.160944-20"
-raknet = "1.0.0.CR3-20240416.144209-1"
+raknet = "1.0.0.CR3-20250128.101054-17"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.4-20250121.131208-18"
 adventure = "4.14.0"

From da6e2f678ba1d18f035061629254ba1c08b920ab Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 29 Jan 2025 18:18:14 +0100
Subject: [PATCH 142/165] Fix custom stone cutter recipes

closes https://github.com/GeyserMC/Geyser/issues/5257, closes https://github.com/GeyserMC/Geyser/issues/5268
---
 .../inventory/StonecutterContainer.java       |  2 +-
 .../session/cache/tags/GeyserHolderSet.java   | 20 ++++++++++++++-----
 .../java/JavaUpdateRecipesTranslator.java     | 18 +++++++++--------
 3 files changed, 26 insertions(+), 14 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/StonecutterContainer.java b/core/src/main/java/org/geysermc/geyser/inventory/StonecutterContainer.java
index 269a4fb7d..1eb115847 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/StonecutterContainer.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/StonecutterContainer.java
@@ -25,11 +25,11 @@
 
 package org.geysermc.geyser.inventory;
 
-import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import lombok.Getter;
 import lombok.Setter;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 
 public class StonecutterContainer extends Container {
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
index c77f0a642..227436efc 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/tags/GeyserHolderSet.java
@@ -33,6 +33,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.TagCache;
 import org.geysermc.geyser.session.cache.registry.JavaRegistryKey;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 
 import java.util.List;
 import java.util.Objects;
@@ -54,15 +55,24 @@ public final class GeyserHolderSet<T> {
     private final int @Nullable [] holders;
 
     public GeyserHolderSet(JavaRegistryKey<T> registry, int @NonNull [] holders) {
-        this.registry = registry;
-        this.tag = null;
-        this.holders = holders;
+        this(registry, null, holders);
     }
 
     public GeyserHolderSet(JavaRegistryKey<T> registry, @NonNull Tag<T> tagId) {
+        this(registry, tagId, null);
+    }
+
+    private GeyserHolderSet(JavaRegistryKey<T> registry, @Nullable Tag<T> tag, int @Nullable [] holders) {
         this.registry = registry;
-        this.tag = tagId;
-        this.holders = null;
+        this.tag = tag;
+        this.holders = holders;
+    }
+
+    /**
+     * Constructs a {@link GeyserHolderSet} from a MCPL HolderSet.
+     */
+    public static <T> GeyserHolderSet<T> fromHolderSet(JavaRegistryKey<T> registry, @NonNull HolderSet holderSet) {
+        return new GeyserHolderSet<>(registry, new Tag<>(registry, holderSet.getLocation()), holderSet.getHolders());
     }
 
     /**
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
index 3872321af..db2d2d403 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateRecipesTranslator.java
@@ -45,6 +45,8 @@ import org.geysermc.geyser.inventory.recipe.TrimRecipe;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.session.cache.registry.JavaRegistries;
+import org.geysermc.geyser.session.cache.tags.GeyserHolderSet;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
@@ -120,16 +122,16 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
         List<SelectableRecipe> stonecutterRecipes = packet.getStonecutterRecipes();
         for (SelectableRecipe recipe : stonecutterRecipes) {
             // Hardcoding the heck out of this until we see different examples of how this works.
-            HolderSet ingredient = recipe.input().getValues();
-            if (ingredient.getHolders() == null || ingredient.getHolders().length != 1) {
-                session.getGeyser().getLogger().debug("Ignoring stonecutter recipe for weird input: " + recipe);
-                continue;
-            }
             if (!(recipe.recipe() instanceof ItemStackSlotDisplay)) {
-                session.getGeyser().getLogger().debug("Ignoring stonecutter recipe for weird output: " + recipe);
+                session.getGeyser().getLogger().warning("Ignoring stonecutter recipe for weird output: " + recipe);
                 continue;
             }
-            rawStonecutterData.computeIfAbsent(ingredient.getHolders()[0], $ -> new ArrayList<>()).add(recipe);
+
+            int[] ingredients = GeyserHolderSet.fromHolderSet(JavaRegistries.ITEM, recipe.input().getValues())
+                .resolveRaw(session.getTagCache());
+            for (int ingredient : ingredients) {
+                rawStonecutterData.computeIfAbsent(ingredient, $ -> new ArrayList<>()).add(recipe);
+            }
         }
 
         Int2ObjectMap<GeyserStonecutterData> stonecutterRecipeMap = new Int2ObjectOpenHashMap<>();
@@ -142,7 +144,7 @@ public class JavaUpdateRecipesTranslator extends PacketTranslator<ClientboundUpd
             for (SelectableRecipe recipe : data.getValue()) {
                 // As of 1.16.4, all stonecutter recipes have one ingredient option
                 HolderSet ingredient = recipe.input().getValues();
-                int javaInput = ingredient.getHolders()[0];
+                int javaInput = data.getIntKey();
                 ItemMapping mapping = session.getItemMappings().getMapping(javaInput);
                 if (mapping.getJavaItem() == Items.AIR) {
                     // Modded ?

From f328e5bb6ba8e95349226b646b445cdd5fca1e49 Mon Sep 17 00:00:00 2001
From: rtm516 <rtm516@users.noreply.github.com>
Date: Thu, 30 Jan 2025 01:34:07 +0000
Subject: [PATCH 143/165] Add new issue types to templates (#5312)

* Add new issue types to templates

* Update bug_report.yml

* Update feature_request.yml
---
 .github/ISSUE_TEMPLATE/bug_report.yml      | 3 ++-
 .github/ISSUE_TEMPLATE/feature_request.yml | 5 +++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index 036d838ef..ecdb8deed 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -1,11 +1,12 @@
 name: Bug report
 description: Create a report to help us improve
+type: Bug
 body:
 - type: markdown
   attributes:
     value: |
       Thanks for taking the time to fill out this bug report for Geyser! Fill out the following form to your best ability to help us fix the problem.
-      Only use this if you're absolutely sure that you found a bug and can reproduce it. For anything else, use: [our Discord server](https://discord.gg/geysermc), [the FAQ](https://github.com/GeyserMC/Geyser/wiki/FAQ) or the [Common Issues](https://github.com/GeyserMC/Geyser/wiki/Common-Issues).
+      Only use this if you're absolutely sure that you found a bug and can reproduce it. For anything else, use: [our Discord server](https://discord.gg/geysermc), [the FAQ](https://geysermc.org/wiki/geyser/faq) or the [Common Issues](https://geysermc.org/wiki/geyser/common-issues).
 - type: textarea
   attributes:
     label: Describe the bug
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index d0e42478b..872e30b8e 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -1,12 +1,13 @@
 name: Feature request
 description: Suggest an idea for this project
 labels: "Feature Request"
+type: Feature
 body:
 - type: markdown
   attributes:
     value: |
       Thanks for taking the time to fill out this feature request for Geyser! Please fill out the following form to your best ability to help us understand your feature request and significantly improve the chance of getting added.
-      For anything else than a feature request, use: [our Discord server](https://discord.gg/geysermc), [the FAQ](https://github.com/GeyserMC/Geyser/wiki/FAQ) or [the Common Issues](https://github.com/GeyserMC/Geyser/wiki/Common-Issues).
+      For anything else than a feature request, use: [our Discord server](https://discord.gg/geysermc), [the FAQ](https://geysermc.org/wiki/geyser/faq) or the [Common Issues](https://geysermc.org/wiki/geyser/common-issues).
 - type: textarea
   attributes:
     label: What feature do you want to see added?
@@ -18,4 +19,4 @@ body:
     label: Are there any alternatives?
     description: List any alternatives you might have tried
   validations:
-    required: true
\ No newline at end of file
+    required: true

From ea13e588cd21a815cecf180b9e0bc3039b087e39 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Sun, 2 Feb 2025 15:16:34 +0100
Subject: [PATCH 144/165] Fix: non-vanilla custom blockstate registration
 (#5310)

* Try fixing custom blockstate registration

* another attempt; round two

* register collisions

* don't register block states twice
---
 .../custom/nonvanilla/JavaBlockItem.java      |  7 --
 .../custom/nonvanilla/JavaBlockState.java     |  2 +-
 .../geyser/level/block/type/Block.java        | 14 ++-
 .../geyser/registry/BlockRegistries.java      |  2 +-
 .../populator/BlockRegistryPopulator.java     | 70 +--------------
 .../CustomBlockRegistryPopulator.java         | 86 ++++++++++++++++++-
 6 files changed, 101 insertions(+), 80 deletions(-)
 delete mode 100644 api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockItem.java

diff --git a/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockItem.java b/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockItem.java
deleted file mode 100644
index 5143246d9..000000000
--- a/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockItem.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.geysermc.geyser.api.block.custom.nonvanilla;
-
-import org.checkerframework.checker.index.qual.NonNegative;
-import org.checkerframework.checker.nullness.qual.NonNull;
-
-public record JavaBlockItem(@NonNull String identifier, @NonNegative int javaId, @NonNegative int stackSize) {
-}
diff --git a/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockState.java b/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockState.java
index 0dd0d3b33..61b868cc3 100644
--- a/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockState.java
+++ b/api/src/main/java/org/geysermc/geyser/api/block/custom/nonvanilla/JavaBlockState.java
@@ -70,7 +70,7 @@ public interface JavaBlockState {
     @Nullable String pistonBehavior();
 
     /**
-     * Gets whether the block state has block entity
+     * Gets whether the block state has a block entity
      * 
      * @return whether the block state has block entity
      * @deprecated Does not have an effect. If you were using this to
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/type/Block.java b/core/src/main/java/org/geysermc/geyser/level/block/type/Block.java
index a005fc103..494946c4a 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/type/Block.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/type/Block.java
@@ -240,7 +240,8 @@ public class Block {
         private Supplier<Item> pickItem;
 
         // We'll use this field after building
-        private Property<?>[] propertyKeys;
+        private Property<?>[] propertyKeys = null;
+        private @Nullable Integer javaId = null;
 
         /**
          * For states that we're just tracking for mirroring Java states.
@@ -298,11 +299,18 @@ public class Block {
             return this;
         }
 
+        public Builder javaId(int javaId) {
+            this.javaId = javaId;
+            return this;
+        }
+
         private List<BlockState> build(Block block) {
             if (states.isEmpty()) {
-                BlockState state = new BlockState(block, BlockRegistries.BLOCK_STATES.get().size());
+                if (javaId == null) {
+                    javaId = BlockRegistries.BLOCK_STATES.get().size();
+                }
+                BlockState state = new BlockState(block, javaId);
                 BlockRegistries.BLOCK_STATES.get().add(state);
-                propertyKeys = null;
                 return List.of(state);
             } else if (states.size() == 1) {
                 // We can optimize because we don't need to worry about combinations
diff --git a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
index 521d67542..b7316605b 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/BlockRegistries.java
@@ -135,9 +135,9 @@ public class BlockRegistries {
         CustomSkullRegistryPopulator.populate();
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.PRE_INIT);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.DEFINITION);
-        CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.NON_VANILLA_REGISTRATION);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_JAVA);
         COLLISIONS.load();
+        CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.NON_VANILLA_REGISTRATION);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.VANILLA_REGISTRATION);
         CustomBlockRegistryPopulator.populate(CustomBlockRegistryPopulator.Stage.CUSTOM_REGISTRATION);
         BlockRegistryPopulator.populate(BlockRegistryPopulator.Stage.INIT_BEDROCK);
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index e86bfe7c4..cb002d6f0 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -32,8 +32,6 @@ import com.google.common.collect.Interner;
 import com.google.common.collect.Interners;
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
-import it.unimi.dsi.fastutil.ints.IntSet;
 import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectMaps;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
@@ -52,19 +50,14 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.block.custom.CustomBlockData;
 import org.geysermc.geyser.api.block.custom.CustomBlockState;
 import org.geysermc.geyser.api.block.custom.nonvanilla.JavaBlockState;
-import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.level.block.property.Properties;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.level.block.type.FlowerPotBlock;
-import org.geysermc.geyser.level.physics.PistonBehavior;
 import org.geysermc.geyser.registry.BlockRegistries;
-import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.BlockMappings;
 import org.geysermc.geyser.registry.type.GeyserBedrockBlock;
-import org.geysermc.geyser.util.BlockUtils;
-import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 
 import java.io.DataInputStream;
 import java.io.InputStream;
@@ -72,7 +65,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.BitSet;
-import java.util.Comparator;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
@@ -114,8 +106,8 @@ public final class BlockRegistryPopulator {
      * Stores the raw blocks NBT until it is no longer needed.
      */
     private static List<NbtMap> BLOCKS_NBT;
-    private static int MIN_CUSTOM_RUNTIME_ID = -1;
-    private static int JAVA_BLOCKS_SIZE = -1;
+    public static int MIN_CUSTOM_RUNTIME_ID = -1;
+    public static int JAVA_BLOCKS_SIZE = -1;
 
     private static void nullifyBlocksNbt() {
         BLOCKS_NBT = null;
@@ -411,19 +403,6 @@ public final class BlockRegistryPopulator {
             throw new AssertionError("Unable to load Java block mappings", e);
         }
 
-        JAVA_BLOCKS_SIZE = BlockRegistries.BLOCK_STATES.get().size();
-
-        if (!BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().isEmpty()) {
-            MIN_CUSTOM_RUNTIME_ID = BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().keySet().stream().min(Comparator.comparing(JavaBlockState::javaId)).orElseThrow().javaId();
-            int maxCustomRuntimeID = BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().keySet().stream().max(Comparator.comparing(JavaBlockState::javaId)).orElseThrow().javaId();
-
-            if (MIN_CUSTOM_RUNTIME_ID < blocksNbt.size()) {
-                throw new RuntimeException("Non vanilla custom block state overrides runtime ID must start after the last vanilla block state (" + JAVA_BLOCKS_SIZE + ")");
-            }
-
-            JAVA_BLOCKS_SIZE = maxCustomRuntimeID + 1; // Runtime ids start at 0, so we need to add 1
-        }
-
         int javaRuntimeId = -1;
         for (BlockState javaBlockState : BlockRegistries.BLOCK_STATES.get()) {
             javaRuntimeId++;
@@ -432,49 +411,8 @@ public final class BlockRegistryPopulator {
             BlockRegistries.JAVA_IDENTIFIER_TO_ID.register(javaId, javaRuntimeId);
         }
 
-        if (!BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().isEmpty()) {
-            IntSet usedNonVanillaRuntimeIDs = new IntOpenHashSet();
-
-            for (JavaBlockState javaBlockState : BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().keySet()) {
-                if (!usedNonVanillaRuntimeIDs.add(javaBlockState.javaId())) {
-                    throw new RuntimeException("Duplicate runtime ID " + javaBlockState.javaId() + " for non vanilla Java block state " + javaBlockState.identifier());
-                }
-
-                String javaId = javaBlockState.identifier();
-                int stateRuntimeId = javaBlockState.javaId();
-                String pistonBehavior = javaBlockState.pistonBehavior();
-
-                Block.Builder builder = Block.builder()
-                        .destroyTime(javaBlockState.blockHardness())
-                        .pushReaction(pistonBehavior == null ? PistonBehavior.NORMAL : PistonBehavior.getByName(pistonBehavior));
-                if (!javaBlockState.canBreakWithHand()) {
-                    builder.requiresCorrectToolForDrops();
-                }
-                String cleanJavaIdentifier = BlockUtils.getCleanIdentifier(javaBlockState.identifier());
-                String pickItem = javaBlockState.pickItem();
-                Block block = new Block(cleanJavaIdentifier, builder) {
-                    @Override
-                    public ItemStack pickItem(BlockState state) {
-                        if (this.item == null) {
-                            this.item = Registries.JAVA_ITEM_IDENTIFIERS.get(pickItem);
-                            if (this.item == null) {
-                                GeyserImpl.getInstance().getLogger().warning("We could not find item " + pickItem
-                                        + " for getting the item for block " + javaBlockState.identifier());
-                                this.item = Items.AIR;
-                            }
-                        }
-                        return new ItemStack(this.item.javaId());
-                    }
-                };
-                block.setJavaId(javaBlockState.stateGroupId());
-
-                BlockRegistries.JAVA_BLOCKS.registerWithAnyIndex(javaBlockState.stateGroupId(), block, Blocks.AIR);
-                BlockRegistries.JAVA_IDENTIFIER_TO_ID.register(javaId, stateRuntimeId);
-                BlockRegistries.BLOCK_STATES.register(stateRuntimeId, new BlockState(block, stateRuntimeId));
-            }
-        }
-
         BLOCKS_NBT = blocksNbt;
+        JAVA_BLOCKS_SIZE = blocksNbt.size();
 
         JsonNode blockInteractionsJson;
         try (InputStream stream = GeyserImpl.getInstance().getBootstrap().getResourceOrThrow("mappings/interactions.json")) {
@@ -485,8 +423,6 @@ public final class BlockRegistryPopulator {
 
         BlockRegistries.INTERACTIVE.set(toBlockStateSet((ArrayNode) blockInteractionsJson.get("always_consumes")));
         BlockRegistries.INTERACTIVE_MAY_BUILD.set(toBlockStateSet((ArrayNode) blockInteractionsJson.get("requires_may_build")));
-
-        BlockRegistries.BLOCK_STATES.freeze();
     }
 
     private static BitSet toBlockStateSet(ArrayNode node) {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java
index a43df3f52..46bfcb45e 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomBlockRegistryPopulator.java
@@ -27,6 +27,8 @@ package org.geysermc.geyser.registry.populator;
 
 import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
 import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
+import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
+import it.unimi.dsi.fastutil.ints.IntSet;
 import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.cloudburstmc.nbt.NbtMap;
@@ -48,23 +50,38 @@ import org.geysermc.geyser.api.block.custom.property.CustomBlockProperty;
 import org.geysermc.geyser.api.block.custom.property.PropertyType;
 import org.geysermc.geyser.api.event.lifecycle.GeyserDefineCustomBlocksEvent;
 import org.geysermc.geyser.api.util.CreativeCategory;
+import org.geysermc.geyser.item.Items;
+import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.level.block.GeyserCustomBlockComponents;
 import org.geysermc.geyser.level.block.GeyserCustomBlockData;
 import org.geysermc.geyser.level.block.GeyserCustomBlockState;
 import org.geysermc.geyser.level.block.GeyserGeometryComponent;
 import org.geysermc.geyser.level.block.GeyserMaterialInstance;
+import org.geysermc.geyser.level.block.type.Block;
+import org.geysermc.geyser.level.block.type.BlockState;
+import org.geysermc.geyser.level.physics.BoundingBox;
+import org.geysermc.geyser.level.physics.PistonBehavior;
 import org.geysermc.geyser.registry.BlockRegistries;
+import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.mappings.MappingsConfigReader;
 import org.geysermc.geyser.registry.type.CustomSkull;
+import org.geysermc.geyser.translator.collision.OtherCollision;
+import org.geysermc.geyser.util.BlockUtils;
 import org.geysermc.geyser.util.MathUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 
 import java.util.ArrayList;
-import java.util.concurrent.atomic.AtomicInteger;
+import java.util.Arrays;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import static org.geysermc.geyser.registry.populator.BlockRegistryPopulator.JAVA_BLOCKS_SIZE;
+import static org.geysermc.geyser.registry.populator.BlockRegistryPopulator.MIN_CUSTOM_RUNTIME_ID;
 
 public class CustomBlockRegistryPopulator {
 
@@ -231,6 +248,73 @@ public class CustomBlockRegistryPopulator {
      */
     private static void populateNonVanilla() {
         BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.set(NON_VANILLA_BLOCK_STATE_OVERRIDES);
+
+        if (NON_VANILLA_BLOCK_STATE_OVERRIDES.isEmpty()) {
+            // Nothing left to register, freeze block state registry
+            BlockRegistries.BLOCK_STATES.freeze();
+            return;
+        }
+
+        MIN_CUSTOM_RUNTIME_ID = BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().keySet().stream().min(Comparator.comparing(JavaBlockState::javaId)).orElseThrow().javaId();
+        int maxCustomRuntimeID = BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().keySet().stream().max(Comparator.comparing(JavaBlockState::javaId)).orElseThrow().javaId();
+
+        if (MIN_CUSTOM_RUNTIME_ID < BlockRegistries.BLOCK_STATES.get().size()) {
+            throw new RuntimeException("Non vanilla custom block state overrides runtime ID must start after the last vanilla block state (" + JAVA_BLOCKS_SIZE + ")");
+        }
+
+        JAVA_BLOCKS_SIZE = maxCustomRuntimeID + 1; // Runtime ids start at 0, so we need to add 1
+
+        // Now: Vanilla blocks are already loaded and registered; let's load non-vanilla properly too
+        IntSet usedNonVanillaRuntimeIDs = new IntOpenHashSet();
+
+        for (JavaBlockState javaBlockState : BlockRegistries.NON_VANILLA_BLOCK_STATE_OVERRIDES.get().keySet()) {
+            if (!usedNonVanillaRuntimeIDs.add(javaBlockState.javaId())) {
+                throw new RuntimeException("Duplicate runtime ID " + javaBlockState.javaId() + " for non vanilla Java block state " + javaBlockState.identifier());
+            }
+
+            String javaId = javaBlockState.identifier();
+            int stateRuntimeId = javaBlockState.javaId();
+            String pistonBehavior = javaBlockState.pistonBehavior();
+
+            Block.Builder builder = Block.builder()
+                .javaId(stateRuntimeId)
+                .destroyTime(javaBlockState.blockHardness())
+                .pushReaction(pistonBehavior == null ? PistonBehavior.NORMAL : PistonBehavior.getByName(pistonBehavior));
+            if (!javaBlockState.canBreakWithHand()) {
+                builder.requiresCorrectToolForDrops();
+            }
+            String cleanJavaIdentifier = BlockUtils.getCleanIdentifier(javaBlockState.identifier());
+            String pickItem = javaBlockState.pickItem();
+            Block block = new Block(cleanJavaIdentifier, builder) {
+                @Override
+                public ItemStack pickItem(BlockState state) {
+                    if (this.item == null) {
+                        this.item = Registries.JAVA_ITEM_IDENTIFIERS.get(pickItem);
+                        if (this.item == null) {
+                            GeyserImpl.getInstance().getLogger().warning("We could not find item " + pickItem
+                                + " for getting the item for block " + javaBlockState.identifier());
+                            this.item = Items.AIR;
+                        }
+                    }
+                    return new ItemStack(this.item.javaId());
+                }
+            };
+            block.setJavaId(javaBlockState.stateGroupId());
+
+            BlockRegistries.JAVA_BLOCKS.registerWithAnyIndex(javaBlockState.stateGroupId(), block, Blocks.AIR);
+            BlockRegistries.JAVA_IDENTIFIER_TO_ID.register(javaId, stateRuntimeId);
+
+            // TODO register different collision types?
+            BoundingBox[] geyserCollisions = Arrays.stream(javaBlockState.collision())
+                .map(box -> new BoundingBox(box.middleX(), box.middleY(), box.middleZ(),
+                    box.sizeX(), box.sizeY(), box.sizeZ()))
+                .toArray(BoundingBox[]::new);
+            OtherCollision collision = new OtherCollision(geyserCollisions);
+            BlockRegistries.COLLISIONS.registerWithAnyIndex(javaBlockState.javaId(), collision, collision);
+        }
+
+        BlockRegistries.BLOCK_STATES.freeze();
+
         if (!NON_VANILLA_BLOCK_STATE_OVERRIDES.isEmpty()) {
             GeyserImpl.getInstance().getLogger().info("Registered " + NON_VANILLA_BLOCK_STATE_OVERRIDES.size() + " non-vanilla block overrides.");
         }

From 0416b55959a16880d37f24545d0063e90fe51ce8 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 4 Feb 2025 16:57:37 +0100
Subject: [PATCH 145/165] Fix: Looms modifying default data components causing
 visual bugs Closes https://github.com/GeyserMC/Geyser/issues/5273

---
 .../geyser/inventory/GeyserItemStack.java     |  5 +++--
 .../updater/AnvilInventoryUpdater.java        |  5 ++---
 .../inventory/BundleInventoryTranslator.java  |  2 +-
 .../inventory/LoomInventoryTranslator.java    | 19 ++++++++-----------
 4 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index 77ca7bfb5..c4a3542d1 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -50,6 +50,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSta
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
 import java.util.HashMap;
+import java.util.function.Supplier;
 
 @Data
 public class GeyserItemStack {
@@ -169,9 +170,9 @@ public class GeyserItemStack {
         return value;
     }
 
-    public <T> T getComponentOrFallback(@NonNull DataComponentType<T> type, T def) {
+    public <T> T getComponentElseGet(@NonNull DataComponentType<T> type, Supplier<T> supplier) {
         T value = getComponent(type);
-        return value == null ? def : value;
+        return value == null ? supplier.get() : value;
     }
 
     public int getNetId() {
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index aadaeb356..8282607af 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -47,7 +47,6 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.Unbreakable;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 
 import java.util.List;
@@ -420,7 +419,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
     }
 
     private int getRepairCost(GeyserItemStack itemStack) {
-        return itemStack.getComponentOrFallback(DataComponentType.REPAIR_COST, 0);
+        return itemStack.getComponentElseGet(DataComponentType.REPAIR_COST, () -> 0);
     }
 
     private boolean hasDurability(GeyserItemStack itemStack) {
@@ -431,6 +430,6 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
     }
 
     private int getDamage(GeyserItemStack itemStack) {
-        return itemStack.getComponentOrFallback(DataComponentType.DAMAGE, 0);
+        return itemStack.getComponentElseGet(DataComponentType.DAMAGE, () -> 0);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
index 1b42e537f..bbe94ba95 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
@@ -314,7 +314,7 @@ public final class BundleInventoryTranslator {
                 return Fraction.ONE;
             }
         }
-        return Fraction.getFraction(1, itemStack.getComponentOrFallback(DataComponentType.MAX_STACK_SIZE, itemStack.asItem().defaultMaxStackSize()));
+        return Fraction.getFraction(1, itemStack.getComponentElseGet(DataComponentType.MAX_STACK_SIZE, () -> itemStack.asItem().defaultMaxStackSize()));
     }
 
     public static int capacityForItemStack(Fraction bundleWeight, GeyserItemStack itemStack) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
index 1fef4c4fd..998108154 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
@@ -93,10 +93,8 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
         PATTERN_TO_INDEX.put("vhr", index++);
         PATTERN_TO_INDEX.put("hhb", index++);
         PATTERN_TO_INDEX.put("bo", index++);
-        index++; // Bordure indented, does not appear to exist in Bedrock?
         PATTERN_TO_INDEX.put("gra", index++);
         PATTERN_TO_INDEX.put("gru", index);
-        // Bricks do not appear to be a pattern on Bedrock, either
     }
 
     public LoomInventoryTranslator() {
@@ -120,7 +118,7 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
 
     @Override
     protected boolean shouldHandleRequestFirst(ItemStackRequestAction action, Inventory inventory) {
-        // If the LOOM_MATERIAL slot is not empty, we are crafting a pattern that does not come from an item
+        // If the LOOM_MATERIAL slot is empty, we are crafting a pattern that does not come from an item
         return action.getType() == ItemStackRequestActionType.CRAFT_LOOM && inventory.getItem(2).isEmpty();
     }
 
@@ -135,10 +133,6 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
             return rejectRequest(request);
         }
 
-        // Get the patterns compound tag
-        List<NbtMap> newBlockEntityTag = craftData.getResultItems()[0].getTag().getList("Patterns", NbtType.COMPOUND);
-        // Get the pattern that the Bedrock client requests - the last pattern in the Patterns list
-        NbtMap pattern = newBlockEntityTag.get(newBlockEntityTag.size() - 1);
         String bedrockPattern = ((CraftLoomAction) headerData).getPatternId();
 
         // Get the Java index of this pattern
@@ -146,6 +140,12 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
         if (index == -1) {
             return rejectRequest(request);
         }
+
+        // Get the patterns compound tag
+        List<NbtMap> newBlockEntityTag = craftData.getResultItems()[0].getTag().getList("Patterns", NbtType.COMPOUND);
+        // Get the pattern that the Bedrock client requests - the last pattern in the Patterns list
+        NbtMap pattern = newBlockEntityTag.get(newBlockEntityTag.size() - 1);
+
         // Java's formula: 4 * row + col
         // And the Java loom window has a fixed row/width of four
         // So... Number / 4 = row (so we don't have to bother there), and number % 4 is our column, which leads us back to our index. :)
@@ -156,10 +156,7 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
         inputCopy.setNetId(session.getNextItemNetId());
         BannerPatternLayer bannerPatternLayer = BannerItem.getJavaBannerPattern(session, pattern); // TODO
         if (bannerPatternLayer != null) {
-            List<BannerPatternLayer> patternsList = inputCopy.getComponent(DataComponentType.BANNER_PATTERNS);
-            if (patternsList == null) {
-                patternsList = new ArrayList<>();
-            }
+            List<BannerPatternLayer> patternsList = new ArrayList<>(inputCopy.getComponentElseGet(DataComponentType.BANNER_PATTERNS, ArrayList::new));
             patternsList.add(bannerPatternLayer);
             inputCopy.getOrCreateComponents().put(DataComponentType.BANNER_PATTERNS, patternsList);
         }

From b96f9157e9ebb7aca2409620ea3c75964cb09db1 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 6 Feb 2025 18:40:32 +0100
Subject: [PATCH 146/165] Fix: Use real barrels whenever possible instead of
 fak chest workaround

Fixes https://github.com/GeyserMC/Geyser/issues/5292, fixes https://github.com/GeyserMC/Geyser/issues/5294
---
 .../chest/SingleChestInventoryTranslator.java        |  7 +++----
 .../org/geysermc/geyser/util/InventoryUtils.java     | 12 ++++++++++--
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java
index 264b2eb29..94bdeb281 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java
@@ -38,15 +38,14 @@ import org.geysermc.geyser.session.GeyserSession;
 public class SingleChestInventoryTranslator extends ChestInventoryTranslator {
     private final InventoryHolder holder;
 
-    // TODO add barrel???
     public SingleChestInventoryTranslator(int size) {
         super(size, 27);
         this.holder = new BlockInventoryHolder(Blocks.CHEST.defaultBlockState().withValue(Properties.CHEST_TYPE, ChestType.SINGLE), ContainerType.CONTAINER,
-                Blocks.ENDER_CHEST, Blocks.TRAPPED_CHEST) {
+                Blocks.ENDER_CHEST, Blocks.TRAPPED_CHEST, Blocks.BARREL) {
             @Override
             protected boolean isValidBlock(BlockState blockState) {
-                if (blockState.is(Blocks.ENDER_CHEST)) {
-                    // Can't have double ender chests
+                if (blockState.is(Blocks.ENDER_CHEST) || blockState.is(Blocks.BARREL)) {
+                    // Can't have double ender chests or barrels
                     return true;
                 }
 
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index b71caa1dc..042f37a89 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -45,6 +45,7 @@ import org.geysermc.geyser.inventory.recipe.GeyserShapedRecipe;
 import org.geysermc.geyser.inventory.recipe.GeyserShapelessRecipe;
 import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.level.BedrockDimension;
+import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
@@ -173,15 +174,22 @@ public class InventoryUtils {
         if (position.getY() < minY) {
             return null;
         }
-        if (position.getY() >= maxY) {
+        if (position.getY() >= maxY || !canUseWorldSpace(session, position)) {
             position = flatPlayerPosition.sub(0, 4, 0);
-            if (position.getY() >= maxY) {
+            if (position.getY() >= maxY || !canUseWorldSpace(session, position)) {
                 return null;
             }
         }
         return position;
     }
 
+    @SuppressWarnings("BooleanMethodIsAlwaysInverted")
+    private static boolean canUseWorldSpace(GeyserSession session, Vector3i position) {
+        BlockState state = session.getGeyser().getWorldManager().blockAt(session, position);
+        // Block entities require more data to be restored; so let's avoid using these positions
+        return state.block().blockEntityType() == null;
+    }
+
     public static void updateCursor(GeyserSession session) {
         InventorySlotPacket cursorPacket = new InventorySlotPacket();
         cursorPacket.setContainerId(ContainerId.UI);

From c98796aeb6fa121f33f598dfa46a09bb117c7531 Mon Sep 17 00:00:00 2001
From: Roch Blondiaux <68775690+RochBlondiaux@users.noreply.github.com>
Date: Tue, 11 Feb 2025 18:03:31 +0100
Subject: [PATCH 147/165] Implemented a way to close forms from floodgate
 (#5247)

* feat: send close form packet when receiving empty form data

* use session#closeForm

---------

Co-authored-by: Roch Blonndiaux <contact@roch-blondiaux.com>
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
---
 .../protocol/java/JavaCustomPayloadTranslator.java         | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java
index c3108167b..d5c3c246c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaCustomPayloadTranslator.java
@@ -67,6 +67,12 @@ public class JavaCustomPayloadTranslator extends PacketTranslator<ClientboundCus
             session.ensureInEventLoop(() -> {
                 byte[] data = packet.getData();
 
+                // If the data is empty, we just need to close the form
+                if (data.length == 0) {
+                    session.closeForm();
+                    return;
+                }
+
                 // receive: first byte is form type, second and third are the id, remaining is the form data
                 // respond: first and second byte id, remaining is form response data
 
@@ -96,7 +102,6 @@ public class JavaCustomPayloadTranslator extends PacketTranslator<ClientboundCus
                 });
                 session.sendForm(form);
             });
-
         } else if (channel.equals(PluginMessageChannels.TRANSFER)) {
             session.ensureInEventLoop(() -> {
                 byte[] data = packet.getData();

From b8477aa40190172ce56031d15edbf17f69e74bb6 Mon Sep 17 00:00:00 2001
From: Roman Alexander <romanalexander@users.noreply.github.com>
Date: Wed, 12 Feb 2025 03:38:24 +0900
Subject: [PATCH 148/165] 1.21.60 (#5325)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* initial changes

* More work on 1.21.60's fun changes

* I misread 😅

* Use 1.21.60 mappings for updated item components

* Fix: Creative up/down flight

---------

Co-authored-by: onebeastchris <github@onechris.mozmail.com>
---
 .../java/org/geysermc/geyser/Constants.java   |     3 -
 .../java/org/geysermc/geyser/GeyserImpl.java  |    51 -
 .../geyser/item/GeyserCustomMappingData.java  |     3 +-
 .../geysermc/geyser/network/GameProtocol.java |    14 +-
 .../geyser/network/LoggingPacketHandler.java  |    12 +-
 .../registry/PacketTranslatorRegistry.java    |     2 +
 .../populator/BlockRegistryPopulator.java     |    36 +-
 .../CreativeItemRegistryPopulator.java        |    48 +-
 .../CustomItemRegistryPopulator.java          |    17 +-
 .../populator/ItemRegistryPopulator.java      |   141 +-
 .../registry/type/GeyserItemDefinition.java   |    49 -
 .../geyser/registry/type/ItemMappings.java    |     8 +-
 .../type/NonVanillaItemRegistration.java      |     5 +-
 .../geyser/registry/type/PaletteItem.java     |     4 +-
 .../geyser/session/GeyserSession.java         |    11 +-
 .../inventory/PlayerInventoryTranslator.java  |    10 +-
 .../resources/bedrock/biome_definitions.dat   |   Bin 37891 -> 39004 bytes
 .../bedrock/block_palette.1_21_60.nbt         |   Bin 0 -> 193020 bytes
 .../bedrock/creative_items.1_21_60.json       |  8917 +++++++++++++
 .../resources/bedrock/item_components.nbt     |   Bin 0 -> 12649 bytes
 .../resources/bedrock/item_tags.1_21_60.json  |   829 ++
 .../bedrock/runtime_item_states.1_21_60.json  | 10730 ++++++++++++++++
 core/src/main/resources/languages             |     2 +-
 core/src/main/resources/mappings              |     2 +-
 gradle/libs.versions.toml                     |     6 +-
 25 files changed, 20694 insertions(+), 206 deletions(-)
 delete mode 100644 core/src/main/java/org/geysermc/geyser/registry/type/GeyserItemDefinition.java
 create mode 100644 core/src/main/resources/bedrock/block_palette.1_21_60.nbt
 create mode 100644 core/src/main/resources/bedrock/creative_items.1_21_60.json
 create mode 100644 core/src/main/resources/bedrock/item_components.nbt
 create mode 100644 core/src/main/resources/bedrock/item_tags.1_21_60.json
 create mode 100644 core/src/main/resources/bedrock/runtime_item_states.1_21_60.json

diff --git a/core/src/main/java/org/geysermc/geyser/Constants.java b/core/src/main/java/org/geysermc/geyser/Constants.java
index 7f00075d8..2b58e7e84 100644
--- a/core/src/main/java/org/geysermc/geyser/Constants.java
+++ b/core/src/main/java/org/geysermc/geyser/Constants.java
@@ -36,9 +36,6 @@ public final class Constants {
 
     public static final String FLOODGATE_DOWNLOAD_LOCATION = "https://geysermc.org/download#floodgate";
     public static final String GEYSER_DOWNLOAD_LOCATION = "https://geysermc.org/download";
-
-    @Deprecated
-    static final String SAVED_REFRESH_TOKEN_FILE = "saved-refresh-tokens.json";
     static final String SAVED_AUTH_CHAINS_FILE = "saved-auth-chains.json";
 
     public static final String GEYSER_CUSTOM_NAMESPACE = "geyser_custom";
diff --git a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
index 5171c0633..e81d528aa 100644
--- a/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
+++ b/core/src/main/java/org/geysermc/geyser/GeyserImpl.java
@@ -29,7 +29,6 @@ import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.gson.Gson;
 import io.netty.channel.epoll.Epoll;
 import io.netty.util.NettyRuntime;
 import io.netty.util.concurrent.DefaultThreadFactory;
@@ -39,8 +38,6 @@ import lombok.Getter;
 import lombok.Setter;
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
-import net.raphimc.minecraftauth.step.java.session.StepFullJavaSession;
-import net.raphimc.minecraftauth.step.msa.StepMsaToken;
 import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
@@ -99,7 +96,6 @@ import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.AssetUtils;
 import org.geysermc.geyser.util.CooldownUtils;
 import org.geysermc.geyser.util.Metrics;
-import org.geysermc.geyser.util.MinecraftAuthLogger;
 import org.geysermc.geyser.util.NewsHandler;
 import org.geysermc.geyser.util.VersionCheckUtils;
 import org.geysermc.geyser.util.WebUtils;
@@ -566,53 +562,6 @@ public class GeyserImpl implements GeyserApi, EventRegistrar {
             // May be written/read to on multiple threads from each GeyserSession as well as writing the config
             savedAuthChains = new ConcurrentHashMap<>();
 
-            // TODO Remove after a while - just a migration help
-            //noinspection deprecation
-            File refreshTokensFile = bootstrap.getSavedUserLoginsFolder().resolve(Constants.SAVED_REFRESH_TOKEN_FILE).toFile();
-            if (refreshTokensFile.exists()) {
-                logger.info("Migrating refresh tokens to auth chains...");
-                TypeReference<Map<String, String>> type = new TypeReference<>() { };
-                Map<String, String> refreshTokens = null;
-                try {
-                    refreshTokens = JSON_MAPPER.readValue(refreshTokensFile, type);
-                } catch (IOException e) {
-                    // ignored - we'll just delete this file :))
-                }
-
-                if (refreshTokens != null) {
-                    List<String> validUsers = config.getSavedUserLogins();
-                    final Gson gson = new Gson();
-                    for (Map.Entry<String, String> entry : refreshTokens.entrySet()) {
-                        String user = entry.getKey();
-                        if (!validUsers.contains(user)) {
-                            continue;
-                        }
-
-                        // Migrate refresh tokens to auth chains
-                        try {
-                            StepFullJavaSession javaSession = PendingMicrosoftAuthentication.AUTH_FLOW.apply(false, 10);
-                            StepFullJavaSession.FullJavaSession fullJavaSession = javaSession.getFromInput(
-                                MinecraftAuthLogger.INSTANCE,
-                                PendingMicrosoftAuthentication.AUTH_CLIENT,
-                                new StepMsaToken.RefreshToken(entry.getValue())
-                            );
-
-                            String authChain = gson.toJson(javaSession.toJson(fullJavaSession));
-                            savedAuthChains.put(user, authChain);
-                        } catch (Exception e) {
-                            GeyserImpl.getInstance().getLogger().warning("Could not migrate " + entry.getKey() + " to an auth chain! " +
-                                "They will need to sign in the next time they join Geyser.");
-                        }
-
-                        // Ensure the new additions are written to the file
-                        scheduleAuthChainsWrite();
-                    }
-                }
-
-                // Finally: Delete it. Goodbye!
-                refreshTokensFile.delete();
-            }
-
             File authChainsFile = bootstrap.getSavedUserLoginsFolder().resolve(Constants.SAVED_AUTH_CHAINS_FILE).toFile();
             if (authChainsFile.exists()) {
                 TypeReference<Map<String, String>> type = new TypeReference<>() { };
diff --git a/core/src/main/java/org/geysermc/geyser/item/GeyserCustomMappingData.java b/core/src/main/java/org/geysermc/geyser/item/GeyserCustomMappingData.java
index d71f2e548..22c457179 100644
--- a/core/src/main/java/org/geysermc/geyser/item/GeyserCustomMappingData.java
+++ b/core/src/main/java/org/geysermc/geyser/item/GeyserCustomMappingData.java
@@ -26,7 +26,6 @@
 package org.geysermc.geyser.item;
 
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ComponentItemData;
 
-public record GeyserCustomMappingData(ComponentItemData componentItemData, ItemDefinition itemDefinition, String stringId, int integerId) {
+public record GeyserCustomMappingData(ItemDefinition itemDefinition, String stringId, int integerId) {
 }
diff --git a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
index 7aaeef87d..8625dfac5 100644
--- a/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
+++ b/core/src/main/java/org/geysermc/geyser/network/GameProtocol.java
@@ -29,6 +29,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
+import org.cloudburstmc.protocol.bedrock.codec.v776.Bedrock_v776;
 import org.cloudburstmc.protocol.bedrock.netty.codec.packet.BedrockPacketCodec;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftCodec;
@@ -47,8 +48,8 @@ public final class GameProtocol {
      * Default Bedrock codec that should act as a fallback. Should represent the latest available
      * release of the game that Geyser supports.
      */
-    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v766.CODEC.toBuilder()
-        .minecraftVersion("1.21.51")
+    public static final BedrockCodec DEFAULT_BEDROCK_CODEC = CodecProcessor.processCodec(Bedrock_v776.CODEC.toBuilder()
+        .minecraftVersion("1.21.60")
         .build());
 
     /**
@@ -66,9 +67,10 @@ public final class GameProtocol {
         SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v748.CODEC.toBuilder()
             .minecraftVersion("1.21.40 - 1.21.44")
             .build()));
-        SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC.toBuilder()
+        SUPPORTED_BEDROCK_CODECS.add(CodecProcessor.processCodec(Bedrock_v766.CODEC.toBuilder()
             .minecraftVersion("1.21.50 - 1.21.51")
-            .build());
+            .build()));
+        SUPPORTED_BEDROCK_CODECS.add(DEFAULT_BEDROCK_CODEC);
     }
 
     /**
@@ -91,6 +93,10 @@ public final class GameProtocol {
         return session.getUpstream().getProtocolVersion() == Bedrock_v748.CODEC.getProtocolVersion();
     }
 
+    public static boolean isPreCreativeInventoryRewrite(int protocolVersion) {
+        return protocolVersion < 776;
+    }
+
     /**
      * Gets the {@link PacketCodec} for Minecraft: Java Edition.
      *
diff --git a/core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java
index 910f76ffb..2d8db9517 100644
--- a/core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java
+++ b/core/src/main/java/org/geysermc/geyser/network/LoggingPacketHandler.java
@@ -896,4 +896,14 @@ public class LoggingPacketHandler implements BedrockPacketHandler {
     public PacketSignal handle(TrimDataPacket packet) {
         return defaultHandler(packet);
     }
-}
\ No newline at end of file
+
+    @Override
+    public PacketSignal handle(MovementPredictionSyncPacket packet) {
+        return defaultHandler(packet);
+    }
+
+    @Override
+    public PacketSignal handle(ServerboundDiagnosticsPacket packet) {
+        return defaultHandler(packet);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java b/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java
index e81935edf..3fd79b8a6 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/PacketTranslatorRegistry.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.registry;
 
+import org.cloudburstmc.protocol.bedrock.packet.ServerboundDiagnosticsPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundDelimiterPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.ClientboundTabListPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.level.ClientboundChunkBatchStartPacket;
@@ -49,6 +50,7 @@ public class PacketTranslatorRegistry<T> extends AbstractMappedRegistry<Class<?
         IGNORED_PACKETS.add(ClientboundDelimiterPacket.class); // Not implemented, spams logs
         IGNORED_PACKETS.add(ClientboundLightUpdatePacket.class); // Light is handled on Bedrock for us
         IGNORED_PACKETS.add(ClientboundTabListPacket.class); // Cant be implemented in Bedrock
+        IGNORED_PACKETS.add(ServerboundDiagnosticsPacket.class); // spammy
     }
 
     protected PacketTranslatorRegistry() {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index cb002d6f0..29591ce9e 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -44,6 +44,7 @@ import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.nbt.NbtUtils;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
+import org.cloudburstmc.protocol.bedrock.codec.v776.Bedrock_v776;
 import org.cloudburstmc.protocol.bedrock.data.BlockPropertyData;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.geysermc.geyser.GeyserImpl;
@@ -116,7 +117,40 @@ public final class BlockRegistryPopulator {
     private static void registerBedrockBlocks() {
         var blockMappers = ImmutableMap.<ObjectIntPair<String>, Remapper>builder()
                 .put(ObjectIntPair.of("1_21_40", Bedrock_v748.CODEC.getProtocolVersion()), Conversion766_748::remapBlock)
-                .put(ObjectIntPair.of("1_21_50", Bedrock_v766.CODEC.getProtocolVersion()), tag -> tag)
+                .put(ObjectIntPair.of("1_21_50", Bedrock_v766.CODEC.getProtocolVersion()), tag -> tag) // TODO: Finish me
+                .put(ObjectIntPair.of("1_21_60", Bedrock_v776.CODEC.getProtocolVersion()), tag -> {
+                    final String name = tag.getString("name");
+                    if (name.equals("minecraft:creaking_heart") && tag.getCompound("states").containsKey("active")) {
+                        NbtMapBuilder builder = tag.getCompound("states").toBuilder();
+                        builder.remove("active");
+                        builder.putString("creaking_heart_state", "awake");
+                        NbtMap states = builder.build();
+                        return tag.toBuilder().putCompound("states", states).build();
+                    }
+                    if ((name.endsWith("_door") || name.endsWith("fence_gate")) && tag.getCompound("states").containsKey("direction")) {
+                        NbtMapBuilder builder = tag.getCompound("states").toBuilder();
+                        Integer directionCardinality = (Integer) builder.remove("direction");
+                        switch (directionCardinality) {
+                            case 0:
+                                builder.putString("minecraft:cardinal_direction", "south");
+                                break;
+                            case 1:
+                                builder.putString("minecraft:cardinal_direction", "west");
+                                break;
+                            case 2:
+                                builder.putString( "minecraft:cardinal_direction" , "north");
+                                break;
+                            case 3:
+                                builder.putString("minecraft:cardinal_direction", "east");
+                                break;
+                            default:
+                                throw new AssertionError("Invalid direction: " + directionCardinality);
+                        }
+                        NbtMap states = builder.build();
+                        return tag.toBuilder().putCompound("states", states).build();
+                    }
+                    return tag;
+                })
                 .build();
 
         // We can keep this strong as nothing should be garbage collected
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java
index 01dcd38a6..633957f8e 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CreativeItemRegistryPopulator.java
@@ -31,6 +31,9 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtUtils;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemCategory;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemGroup;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.GeyserBootstrap;
 import org.geysermc.geyser.GeyserImpl;
@@ -42,11 +45,13 @@ import org.geysermc.geyser.registry.type.GeyserMappingItem;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Base64;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
+import java.util.function.BiConsumer;
 import java.util.function.BiPredicate;
-import java.util.function.Consumer;
 
 public class CreativeItemRegistryPopulator {
     private static final List<BiPredicate<String, Integer>> JAVA_ONLY_ITEM_FILTER = List.of(
@@ -54,7 +59,42 @@ public class CreativeItemRegistryPopulator {
             (identifier, data) -> identifier.equals("minecraft:empty_map") && data == 2
     );
 
-    static void populate(ItemRegistryPopulator.PaletteVersion palette, Map<String, ItemDefinition> definitions, Map<String, GeyserMappingItem> items, Consumer<ItemData.Builder> itemConsumer) {
+    static List<CreativeItemGroup> readCreativeItemGroups(ItemRegistryPopulator.PaletteVersion palette, List<CreativeItemData> creativeItemData) {
+        GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
+
+        JsonNode creativeItemEntries;
+        try (InputStream stream = bootstrap.getResourceOrThrow(String.format("bedrock/creative_items.%s.json", palette.version()))) {
+            creativeItemEntries = GeyserImpl.JSON_MAPPER.readTree(stream).get("groups");
+        } catch (Exception e) {
+            throw new AssertionError("Unable to load creative item groups", e);
+        }
+
+        List<CreativeItemGroup> creativeItemGroups = new ArrayList<>();
+        for (JsonNode creativeItemEntry : creativeItemEntries) {
+            CreativeItemCategory category = CreativeItemCategory.valueOf(creativeItemEntry.get("category").asText().toUpperCase(Locale.ROOT));
+            String name = creativeItemEntry.get("name").asText();
+
+            JsonNode icon = creativeItemEntry.get("icon");
+            String identifier = icon.get("id").asText();
+
+            ItemData itemData;
+            if (identifier.equals("minecraft:air")) {
+                itemData = ItemData.AIR;
+            } else {
+                itemData = creativeItemData.stream()
+                    .map(CreativeItemData::getItem)
+                    .filter(item -> item.getDefinition().getIdentifier().equals(identifier))
+                    .findFirst()
+                    .orElseThrow();
+            }
+
+            creativeItemGroups.add(new CreativeItemGroup(category, name, itemData));
+        }
+
+        return creativeItemGroups;
+    }
+
+    static void populate(ItemRegistryPopulator.PaletteVersion palette, Map<String, ItemDefinition> definitions, Map<String, GeyserMappingItem> items, BiConsumer<ItemData.Builder, Integer> itemConsumer) {
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
         // Load creative items
@@ -72,7 +112,9 @@ public class CreativeItemRegistryPopulator {
                 continue;
             }
 
-            itemConsumer.accept(itemBuilder);
+            int groupId = itemNode.get("groupId") != null ? itemNode.get("groupId").asInt() : 0;
+
+            itemConsumer.accept(itemBuilder, groupId);
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
index ec1e16e79..cd19ab147 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
@@ -33,7 +33,6 @@ import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ComponentItemData;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.item.custom.CustomItemData;
 import org.geysermc.geyser.api.item.custom.CustomRenderOffsets;
@@ -106,12 +105,10 @@ public class CustomItemRegistryPopulator {
     }
 
     public static GeyserCustomMappingData registerCustomItem(String customItemName, Item javaItem, GeyserMappingItem mapping, CustomItemData customItemData, int bedrockId, int protocolVersion) {
-        ItemDefinition itemDefinition = new SimpleItemDefinition(customItemName, bedrockId, true);
-
         NbtMapBuilder builder = createComponentNbt(customItemData, javaItem, mapping, customItemName, bedrockId, protocolVersion);
-        ComponentItemData componentItemData = new ComponentItemData(customItemName, builder.build());
+        ItemDefinition itemDefinition = new SimpleItemDefinition(customItemName, bedrockId, 1, true, builder.build());
 
-        return new GeyserCustomMappingData(componentItemData, itemDefinition, customItemName, bedrockId);
+        return new GeyserCustomMappingData(itemDefinition, customItemName, bedrockId);
     }
 
     static boolean initialCheck(String identifier, CustomItemData item, Map<String, GeyserMappingItem> mappings) {
@@ -142,9 +139,11 @@ public class CustomItemRegistryPopulator {
         Item item = new Item(customIdentifier, Item.builder().components(components));
         Items.register(item, customItemData.javaId());
 
+        NbtMapBuilder builder = createComponentNbt(customItemData, customItemData.identifier(), customItemId,
+            customItemData.isHat(), customItemData.displayHandheld(), protocolVersion);
         ItemMapping customItemMapping = ItemMapping.builder()
                 .bedrockIdentifier(customIdentifier)
-                .bedrockDefinition(new SimpleItemDefinition(customIdentifier, customItemId, true))
+                .bedrockDefinition(new SimpleItemDefinition(customIdentifier, customItemId, 1, true, builder.build()))
                 .bedrockData(0)
                 .bedrockBlockDefinition(null)
                 .toolType(customItemData.toolType())
@@ -153,11 +152,7 @@ public class CustomItemRegistryPopulator {
                 .javaItem(item)
                 .build();
 
-        NbtMapBuilder builder = createComponentNbt(customItemData, customItemData.identifier(), customItemId,
-                customItemData.isHat(), customItemData.displayHandheld(), protocolVersion);
-        ComponentItemData componentItemData = new ComponentItemData(customIdentifier, builder.build());
-
-        return new NonVanillaItemRegistration(componentItemData, item, customItemMapping);
+        return new NonVanillaItemRegistration(item, customItemMapping);
     }
 
     private static NbtMapBuilder createComponentNbt(CustomItemData customItemData, Item javaItem, GeyserMappingItem mapping,
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index f7b45ba1d..6e269b5a3 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -47,10 +47,12 @@ import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.nbt.NbtUtils;
 import org.cloudburstmc.protocol.bedrock.codec.v748.Bedrock_v748;
 import org.cloudburstmc.protocol.bedrock.codec.v766.Bedrock_v766;
+import org.cloudburstmc.protocol.bedrock.codec.v776.Bedrock_v776;
 import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ComponentItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemGroup;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.Constants;
 import org.geysermc.geyser.GeyserBootstrap;
@@ -68,6 +70,7 @@ import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.level.block.property.Properties;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.BlockMappings;
@@ -147,6 +150,7 @@ public class ItemRegistryPopulator {
         List<PaletteVersion> paletteVersions = new ArrayList<>(2);
         paletteVersions.add(new PaletteVersion("1_21_40", Bedrock_v748.CODEC.getProtocolVersion(), itemFallbacks, (item, mapping) -> mapping));
         paletteVersions.add(new PaletteVersion("1_21_50", Bedrock_v766.CODEC.getProtocolVersion()));
+        paletteVersions.add(new PaletteVersion("1_21_60", Bedrock_v776.CODEC.getProtocolVersion()));
 
         GeyserBootstrap bootstrap = GeyserImpl.getInstance().getBootstrap();
 
@@ -161,7 +165,8 @@ public class ItemRegistryPopulator {
         }
 
         NbtMap vanillaComponents;
-        try (InputStream stream = bootstrap.getResourceOrThrow("mappings/item_components.nbt")) {
+        // TODO e.g. breeze rod icon does not load with our modified item components
+        try (InputStream stream = bootstrap.getResourceOrThrow("bedrock/item_components.nbt")) {
             vanillaComponents = (NbtMap) NbtUtils.createGZIPReader(stream, true, true).readTag();
         } catch (Exception e) {
             throw new AssertionError("Unable to load Bedrock item components", e);
@@ -195,7 +200,8 @@ public class ItemRegistryPopulator {
 
             // Used for custom items
             int nextFreeBedrockId = 0;
-            List<ComponentItemData> componentItemData = new ObjectArrayList<>();
+            // TODO yeet
+            List<ItemDefinition> componentItemData = new ObjectArrayList<>();
 
             Int2ObjectMap<ItemDefinition> registry = new Int2ObjectOpenHashMap<>();
             Map<String, ItemDefinition> definitions = new Object2ObjectLinkedOpenHashMap<>();
@@ -206,7 +212,15 @@ public class ItemRegistryPopulator {
                     nextFreeBedrockId = id + 1;
                 }
 
-                ItemDefinition definition = new SimpleItemDefinition(entry.getName().intern(), id, false);
+                NbtMap components = null;
+                if (entry.isComponentBased()) {
+                    components = vanillaComponents.getCompound(entry.getName());
+                    if (components == null) {
+                        throw new RuntimeException("Could not find vanilla components for vanilla component based item! " + entry.getName());
+                    }
+                }
+
+                ItemDefinition definition = new SimpleItemDefinition(entry.getName().intern(), id, entry.getVersion(), entry.isComponentBased(), components);
                 definitions.put(entry.getName(), definition);
                 registry.put(definition.getRuntimeId(), definition);
             }
@@ -222,7 +236,7 @@ public class ItemRegistryPopulator {
             // Temporary mapping to create stored items
             Map<Item, ItemMapping> javaItemToMapping = new Object2ObjectOpenHashMap<>();
 
-            List<ItemData> creativeItems = new ArrayList<>();
+            List<CreativeItemData> creativeItems = new ArrayList<>();
             Set<String> noBlockDefinitions = new ObjectOpenHashSet<>();
 
             // Fix: Usage of structure blocks/voids in recipes
@@ -231,9 +245,9 @@ public class ItemRegistryPopulator {
             noBlockDefinitions.add("minecraft:structure_void");
 
             AtomicInteger creativeNetId = new AtomicInteger();
-            CreativeItemRegistryPopulator.populate(palette, definitions, items, itemBuilder -> {
+            CreativeItemRegistryPopulator.populate(palette, definitions, items, (itemBuilder, groupId) -> {
                 ItemData item = itemBuilder.netId(creativeNetId.incrementAndGet()).build();
-                creativeItems.add(item);
+                creativeItems.add(new CreativeItemData(item, item.getNetId(), groupId));
 
                 if (item.getBlockDefinition() != null) {
                     String identifier = item.getDefinition().getIdentifier();
@@ -255,6 +269,13 @@ public class ItemRegistryPopulator {
                 }
             });
 
+            List<CreativeItemGroup> creativeItemGroups;
+            if (GameProtocol.isPreCreativeInventoryRewrite(palette.protocolVersion)) {
+                creativeItemGroups = new ArrayList<>();
+            } else {
+                creativeItemGroups = CreativeItemRegistryPopulator.readCreativeItemGroups(palette, creativeItems);
+            }
+
             BlockMappings blockMappings = BlockRegistries.BLOCKS.forVersion(palette.protocolVersion());
 
             Set<Item> javaOnlyItems = new ObjectOpenHashSet<>();
@@ -410,13 +431,13 @@ public class ItemRegistryPopulator {
                             }
 
                             for (int j = 0; j < creativeItems.size(); j++) {
-                                ItemData itemData = creativeItems.get(j);
-                                if (itemData.getDefinition().equals(definition)) {
-                                    if (itemData.getDamage() != 0) {
+                                CreativeItemData itemData = creativeItems.get(j);
+                                if (itemData.getItem().getDefinition().equals(definition)) {
+                                    if (itemData.getItem().getDamage() != 0) {
                                         break;
                                     }
 
-                                    NbtMap states = ((GeyserBedrockBlock) itemData.getBlockDefinition()).getState().getCompound("states");
+                                    NbtMap states = ((GeyserBedrockBlock) itemData.getItem().getBlockDefinition()).getState().getCompound("states");
 
                                     boolean valid = true;
                                     for (Map.Entry<String, Object> nbtEntry : requiredBlockStates.entrySet()) {
@@ -432,19 +453,25 @@ public class ItemRegistryPopulator {
                                             int customProtocolId = nextFreeBedrockId++;
                                             mappingItem = mappingItem.withBedrockData(customProtocolId);
                                             bedrockIdentifier = customBlockData.identifier();
-                                            definition = new SimpleItemDefinition(bedrockIdentifier, customProtocolId, true);
+                                            definition = new SimpleItemDefinition(bedrockIdentifier, customProtocolId, 1, false, null);
                                             registry.put(customProtocolId, definition);
                                             customBlockItemDefinitions.put(customBlockData, definition);
                                             customIdMappings.put(customProtocolId, bedrockIdentifier);
-                                            
-                                            creativeItems.set(j, itemData.toBuilder()
+
+                                            CreativeItemData newData = new CreativeItemData(itemData.getItem().toBuilder()
                                                 .definition(definition)
                                                 .blockDefinition(bedrockBlock)
                                                 .netId(itemData.getNetId())
                                                 .count(1)
-                                                .build());
+                                                .build(), itemData.getNetId(), 0);
+
+                                            creativeItems.set(j, newData);
                                         } else {
-                                            creativeItems.set(j, itemData.toBuilder().blockDefinition(bedrockBlock).build());
+                                            CreativeItemData creativeItemData = new CreativeItemData(itemData.getItem().toBuilder()
+                                                .blockDefinition(bedrockBlock)
+                                                .build(), itemData.getNetId(), 0);
+
+                                            creativeItems.set(j, creativeItemData);
                                         }
                                         break;
                                     }
@@ -494,16 +521,17 @@ public class ItemRegistryPopulator {
                         );
 
                         if (customItem.creativeCategory().isPresent()) {
-                            creativeItems.add(ItemData.builder()
+                            CreativeItemData creativeItemData = new CreativeItemData(ItemData.builder()
                                     .netId(creativeNetId.incrementAndGet())
                                     .definition(customMapping.itemDefinition())
                                     .blockDefinition(null)
                                     .count(1)
-                                    .build());
+                                    .build(), creativeNetId.get(), customItem.creativeCategory().getAsInt());
+                            creativeItems.add(creativeItemData);
                         }
 
                         // ComponentItemData - used to register some custom properties
-                        componentItemData.add(customMapping.componentItemData());
+                        componentItemData.add(customMapping.itemDefinition());
                         customItemOptions.add(Pair.of(customItem.customItemOptions(), customMapping.itemDefinition()));
                         registry.put(customMapping.integerId(), customMapping.itemDefinition());
 
@@ -564,9 +592,11 @@ public class ItemRegistryPopulator {
 
             if (customItemsAllowed) {
                 // Add furnace minecart
-                ItemDefinition definition = new SimpleItemDefinition("geysermc:furnace_minecart", nextFreeBedrockId, true);
+                int furnaceMinecartId = nextFreeBedrockId++;
+                ItemDefinition definition = new SimpleItemDefinition("geysermc:furnace_minecart", furnaceMinecartId, 1, true, registerFurnaceMinecart(furnaceMinecartId));
                 definitions.put("geysermc:furnace_minecart", definition);
                 registry.put(definition.getRuntimeId(), definition);
+                componentItemData.add(definition);
 
                 mappings.set(Items.FURNACE_MINECART.javaId(), ItemMapping.builder()
                         .javaItem(Items.FURNACE_MINECART)
@@ -577,13 +607,12 @@ public class ItemRegistryPopulator {
                         .customItemOptions(Collections.emptyList()) // TODO check for custom items with furnace minecart
                         .build());
 
-                creativeItems.add(ItemData.builder()
-                        .netId(creativeNetId.incrementAndGet())
-                        .definition(definition)
-                        .count(1)
-                        .build());
-
-                registerFurnaceMinecart(nextFreeBedrockId++, componentItemData, palette.protocolVersion);
+                creativeItems.add(new CreativeItemData(ItemData.builder()
+                    .usingNetId(true)
+                    .netId(creativeNetId.incrementAndGet())
+                    .definition(definition)
+                    .count(1)
+                    .build(), creativeNetId.get(), 99)); // todo do not hardcode!
 
                 // Register any completely custom items given to us
                 IntSet registeredJavaIds = new IntOpenHashSet(); // Used to check for duplicate item java ids
@@ -598,7 +627,7 @@ public class ItemRegistryPopulator {
                     int customItemId = nextFreeBedrockId++;
                     NonVanillaItemRegistration registration = CustomItemRegistryPopulator.registerCustomItem(customItem, customItemId, palette.protocolVersion);
 
-                    componentItemData.add(registration.componentItemData());
+                    componentItemData.add(registration.mapping().getBedrockDefinition());
                     ItemMapping mapping = registration.mapping();
                     Item javaItem = registration.javaItem();
                     while (javaItem.javaId() >= mappings.size()) {
@@ -609,34 +638,17 @@ public class ItemRegistryPopulator {
                     registry.put(customItemId, mapping.getBedrockDefinition());
 
                     if (customItem.creativeCategory().isPresent()) {
-                        creativeItems.add(ItemData.builder()
-                                .definition(registration.mapping().getBedrockDefinition())
-                                .netId(creativeNetId.incrementAndGet())
-                                .count(1)
-                                .build());
+                        CreativeItemData creativeItemData = new CreativeItemData(ItemData.builder()
+                            .definition(registration.mapping().getBedrockDefinition())
+                            .netId(creativeNetId.incrementAndGet())
+                            .count(1)
+                            .build(), creativeNetId.get(), customItem.creativeCategory().getAsInt());
+
+                        creativeItems.add(creativeItemData);
                     }
                 }
             }
 
-            for (Map.Entry<String, Object> entry : vanillaComponents.entrySet()) {
-                String id = entry.getKey();
-                ItemDefinition definition = definitions.get(id);
-                if (definition == null) {
-                    // Newer item most likely
-                    GeyserImpl.getInstance().getLogger().debug(
-                            "Skipping vanilla component " + id + " for protocol " + palette.protocolVersion()
-                    );
-                    continue;
-                }
-
-                NbtMapBuilder root = NbtMap.builder()
-                        .putString("name", id)
-                        .putInt("id", definition.getRuntimeId())
-                        .putCompound("components", (NbtMap) entry.getValue());
-
-                componentItemData.add(new ComponentItemData(id, root.build()));
-            }
-
             // Register the item forms of custom blocks
             if (BlockRegistries.CUSTOM_BLOCKS.get().length != 0) {
                 for (CustomBlockData customBlock : BlockRegistries.CUSTOM_BLOCKS.get()) {
@@ -654,7 +666,8 @@ public class ItemRegistryPopulator {
                     int customProtocolId = nextFreeBedrockId++;
                     String identifier = customBlock.identifier();
 
-                    final ItemDefinition definition = new SimpleItemDefinition(identifier, customProtocolId, true);
+                    // TODO verify
+                    final ItemDefinition definition = new SimpleItemDefinition(identifier, customProtocolId, 1, false, null);
                     registry.put(customProtocolId, definition);
                     customBlockItemDefinitions.put(customBlock, definition);
                     customIdMappings.put(customProtocolId, identifier);
@@ -662,24 +675,26 @@ public class ItemRegistryPopulator {
                     GeyserBedrockBlock bedrockBlock = blockMappings.getCustomBlockStateDefinitions().getOrDefault(customBlock.defaultBlockState(), null);
 
                     if (bedrockBlock != null && customBlock.includedInCreativeInventory()) {
-                        creativeItems.add(ItemData.builder()
-                                .definition(definition)
-                                .blockDefinition(bedrockBlock)
-                                .netId(creativeNetId.incrementAndGet())
-                                .count(1)
-                                .build());
+                        CreativeItemData creativeItemData = new CreativeItemData(ItemData.builder()
+                            .definition(definition)
+                            .blockDefinition(bedrockBlock)
+                            .netId(creativeNetId.incrementAndGet())
+                            .count(1)
+                            .build(), creativeNetId.get(), customBlock.creativeCategory().id());
+                        creativeItems.add(creativeItemData);
                     }
                 }
             }
 
             ItemMappings itemMappings = ItemMappings.builder()
                     .items(mappings.toArray(new ItemMapping[0]))
-                    .creativeItems(creativeItems.toArray(new ItemData[0]))
+                    .creativeItems(creativeItems)
+                    .creativeItemGroups(creativeItemGroups)
                     .itemDefinitions(registry)
+                    .componentItemData(componentItemData)
                     .storedItems(new StoredItemMappings(javaItemToMapping))
                     .javaOnlyItems(javaOnlyItems)
                     .buckets(buckets)
-                    .componentItemData(componentItemData)
                     .lightBlocks(lightBlocks)
                     .lodestoneCompass(lodestoneEntry)
                     .customIdMappings(customIdMappings)
@@ -692,7 +707,7 @@ public class ItemRegistryPopulator {
         }
     }
 
-    private static void registerFurnaceMinecart(int nextFreeBedrockId, List<ComponentItemData> componentItemData, int protocolVersion) {
+    private static NbtMap registerFurnaceMinecart(int nextFreeBedrockId) {
         NbtMapBuilder builder = NbtMap.builder();
         builder.putString("name", "geysermc:furnace_minecart")
                 .putInt("id", nextFreeBedrockId);
@@ -727,6 +742,6 @@ public class ItemRegistryPopulator {
 
         componentBuilder.putCompound("item_properties", itemProperties.build());
         builder.putCompound("components", componentBuilder.build());
-        componentItemData.add(new ComponentItemData("geysermc:furnace_minecart", builder.build()));
+        return builder.build();
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/GeyserItemDefinition.java b/core/src/main/java/org/geysermc/geyser/registry/type/GeyserItemDefinition.java
deleted file mode 100644
index fa1cb9985..000000000
--- a/core/src/main/java/org/geysermc/geyser/registry/type/GeyserItemDefinition.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2019-2022 GeyserMC. http://geysermc.org
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * @author GeyserMC
- * @link https://github.com/GeyserMC/Geyser
- */
-
-package org.geysermc.geyser.registry.type;
-
-import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
-import org.geysermc.geyser.item.type.Item;
-
-/**
- * Implements ItemDefinition while also providing a reference to our item mappings.
- */
-public record GeyserItemDefinition(Item javaItem, String identifier, boolean componentBased, int runtimeId) implements ItemDefinition {
-    @Override
-    public String getIdentifier() {
-        return identifier;
-    }
-
-    @Override
-    public boolean isComponentBased() {
-        return componentBased;
-    }
-
-    @Override
-    public int getRuntimeId() {
-        return runtimeId;
-    }
-}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java b/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java
index 8aae05fdc..4ebe11bae 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/ItemMappings.java
@@ -32,7 +32,8 @@ import lombok.Value;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
-import org.cloudburstmc.protocol.bedrock.data.inventory.ComponentItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemGroup;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.common.DefinitionRegistry;
 import org.geysermc.geyser.GeyserImpl;
@@ -61,7 +62,8 @@ public class ItemMappings implements DefinitionRegistry<ItemDefinition> {
     ItemMapping lodestoneCompass;
     Int2ObjectMap<ItemMapping> lightBlocks;
 
-    ItemData[] creativeItems;
+    List<CreativeItemGroup> creativeItemGroups;
+    List<CreativeItemData> creativeItems;
     Int2ObjectMap<ItemDefinition> itemDefinitions;
 
     StoredItemMappings storedItems;
@@ -70,7 +72,7 @@ public class ItemMappings implements DefinitionRegistry<ItemDefinition> {
     List<ItemDefinition> buckets;
     List<ItemDefinition> boats;
 
-    List<ComponentItemData> componentItemData;
+    List<ItemDefinition> componentItemData; // TODO get rid of?
     Int2ObjectMap<String> customIdMappings;
 
     Object2ObjectMap<CustomBlockData, ItemDefinition> customBlockItemDefinitions;
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/NonVanillaItemRegistration.java b/core/src/main/java/org/geysermc/geyser/registry/type/NonVanillaItemRegistration.java
index 16ac51749..3868845ac 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/NonVanillaItemRegistration.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/NonVanillaItemRegistration.java
@@ -25,11 +25,10 @@
 
 package org.geysermc.geyser.registry.type;
 
-import org.cloudburstmc.protocol.bedrock.data.inventory.ComponentItemData;
 import org.geysermc.geyser.item.type.Item;
 
 /**
  * The return data of a successful registration of a custom item.
  */
-public record NonVanillaItemRegistration(ComponentItemData componentItemData, Item javaItem, ItemMapping mapping) {
-}
\ No newline at end of file
+public record NonVanillaItemRegistration(Item javaItem, ItemMapping mapping) {
+}
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/PaletteItem.java b/core/src/main/java/org/geysermc/geyser/registry/type/PaletteItem.java
index bf202ddb3..9b51d672b 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/PaletteItem.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/PaletteItem.java
@@ -31,4 +31,6 @@ import lombok.Data;
 public class PaletteItem {
     String name;
     int id;
-}
\ No newline at end of file
+    int version;
+    boolean componentBased;
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index fc8f82dd0..14a7f42a9 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -147,6 +147,7 @@ import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.level.BedrockDimension;
 import org.geysermc.geyser.level.JavaDimension;
 import org.geysermc.geyser.level.physics.CollisionManager;
+import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.network.netty.LocalSession;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.registry.type.BlockMappings;
@@ -739,10 +740,14 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         sentSpawnPacket = true;
         syncEntityProperties();
 
-        if (GeyserImpl.getInstance().getConfig().isAddNonBedrockItems()) {
+        if (GameProtocol.isPreCreativeInventoryRewrite(this.protocolVersion())) {
             ItemComponentPacket componentPacket = new ItemComponentPacket();
             componentPacket.getItems().addAll(itemMappings.getComponentItemData());
             upstream.sendPacket(componentPacket);
+        } else {
+            ItemComponentPacket componentPacket = new ItemComponentPacket();
+            componentPacket.getItems().addAll(itemMappings.getItemDefinitions().values());
+            upstream.sendPacket(componentPacket);
         }
 
         ChunkUtils.sendEmptyChunks(this, playerEntity.getPosition().toInt(), 0, false);
@@ -760,7 +765,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         upstream.sendPacket(cameraPresetsPacket);
 
         CreativeContentPacket creativePacket = new CreativeContentPacket();
-        creativePacket.setContents(this.itemMappings.getCreativeItems());
+        creativePacket.getContents().addAll(this.itemMappings.getCreativeItems());
+        creativePacket.getGroups().addAll(this.itemMappings.getCreativeItemGroups());
         upstream.sendPacket(creativePacket);
 
         PlayStatusPacket playStatusPacket = new PlayStatusPacket();
@@ -1820,6 +1826,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         abilityLayer.setFlySpeed(flySpeed);
         // https://github.com/GeyserMC/Geyser/issues/3139 as of 1.19.10
         abilityLayer.setWalkSpeed(walkSpeed == 0f ? 0.01f : walkSpeed);
+        abilityLayer.setVerticalFlySpeed(1.0f);
         Collections.addAll(abilityLayer.getAbilitiesSet(), USED_ABILITIES);
 
         updateAbilitiesPacket.getAbilityLayers().add(abilityLayer);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index 371d61714..c69293717 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -30,6 +30,7 @@ import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
 import it.unimi.dsi.fastutil.ints.IntSet;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
+import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
@@ -63,6 +64,7 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S
 
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 import java.util.function.IntFunction;
 
 public class PlayerInventoryTranslator extends InventoryTranslator {
@@ -437,13 +439,13 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                     craftState = CraftState.RECIPE_ID;
 
                     int creativeId = creativeAction.getCreativeItemNetworkId() - 1;
-                    ItemData[] creativeItems = session.getItemMappings().getCreativeItems();
-                    if (creativeId < 0 || creativeId >= creativeItems.length) {
+                    List<CreativeItemData> creativeItems = session.getItemMappings().getCreativeItems();
+                    if (creativeId < 0 || creativeId >= creativeItems.size()) {
                         return rejectRequest(request);
                     }
                     // Reference the creative items list we send to the client to know what it's asking of us
-                    ItemData creativeItem = creativeItems[creativeId];
-                    javaCreativeItem = ItemTranslator.translateToJava(session, creativeItem);
+                    CreativeItemData creativeItem = creativeItems.get(creativeId);
+                    javaCreativeItem = ItemTranslator.translateToJava(session, creativeItem.getItem());
                     break;
                 }
                 case CRAFT_RESULTS_DEPRECATED: {
diff --git a/core/src/main/resources/bedrock/biome_definitions.dat b/core/src/main/resources/bedrock/biome_definitions.dat
index e59a99ce2a5c5ffc11489ea1a9d42285e77f137a..07a3c2abbfdaee113ff8c5eba53bb06319034833 100644
GIT binary patch
delta 1825
zcmb7^O-K}B7{{3%+#Oe4cWg7z_CpjCzeY1y3akzmx@zJfB+JIpoJDqa+;(;SKwU{F
zB0r)(86HFnf)Xp?rBeiX42gn*kOB`zT}p&5b%|zYbM4T!?;Z!<-~68U`9JS7`M~gT
z)v(&nVm88Ilyw!jLIG(|4T*zN&@YCiV6UY1i*ocsQhWW95(489$U1wO#V<35I#V$v
zGH<HM!q*NC?`+3iyO!=g<<h?_gx_Dq=%*WUOOu|4b{ZQZ50X3gM`43|ppXXilI;T*
z_91hM!?TK994t1+?~|yw5co-f+%01ny#*`fm2?QwE0*;>tAYicWgLEV<xrBZ1UG4@
zw8w<1P(_VB)k{<bdulQ`t9{W@$&Kn`HvJdX8F~0}$`Kd;cRsMrx{2>}AU0MHn{DVc
z?e#SwN*K>lY^=5#Y<S*mr?Sc9<e8e7snO)5LIm=%Rf!>wo6G4C%$wZg_1PRIn=>js
zUa5Q7C<psSdQ`k|xlnGmpea~S#I`)vYP9$z)f?;!_lTiE$sfS&b51l(@z{*ilb`M1
z4NMNcb$H_5#Dg|{-hst%Jr*v0&;~mj*Th0<iYFUlkpXRr<(6zNF~*+n?!!x%0V0Zk
zx~@fiP<LdSenyFC;DPQd2F8LGUr{PH8Dnygv0_KANC_j8-gQ>vT70D`aoF??X;tpX
zho~_UQRX-;vth9yx>o2D!1aM;J?nh5gbycOM`R-WBu!gIR-72!+YE`LY8`#6#Z*`l
zlERXzN;KIzh%)A2G%D)I!2R*;_-zt<)*=o#Jv_F?SM*(QCsLZ6B5RRPX=rS>;!#@@
zR);c4*3}m#ou3d*@Q-j9uQ6kL+Lg2~m<U&)c4kR~)A4zxhz>Y9d+#rscHe<~I<R(z
N$NM8Zk#8=rzX534&l&&#

delta 786
zcmYjPT}V@580PG>?YMcIXF9hO=UQ0coJXZt45^?%Lukc8Y#_8_I-BL0ZDv|)>Jp;z
zCw#OZ`k|Ys=tBAkx{>NK5}kCZ5kWVB(9ew!Qhn#!vTmQB?|IJip0#<ymB)tp0Ulp{
z0#dvOtJNY>ikGbO=Xhi<7a(e`&VylM7d8uV&?=zJu^*FG5kXfNtB$t}dsbEhze|Rv
zQ$oObE3Yd>wn0FAr~=lsNP?~xB@m|tZ1{3fOMWluspUBuB_QFi!`*<0CI2Gr<HpN6
zJBy|wEEY(_Cm+fQH+)4HulMG~jD%0#1%E@DJ*4w*8g~3|W_+yi3}+#0jX~Oq=DC~q
zA+E?+=L6(JbAN7xwpRDw5wH*nke{tVeFy<<t)(~?s-)jxLt62Wg-~zKAuCn7gQS$H
z9AIy+)m21mk8zxdd^~ZRFWy$vr)oWk_+a<R<OQ{_A1l>PJS~urI)8-x?)YKAebqJ-
zX`-{*W;#7&B4X#*gpbr3@?BL7oC&h#q(L%B*8_I1NL&wQ{hvoO1|05k;m&ChV_Fn@
zV+pPhk@#*b$4oF^6)~lS$*JCVJcVVgCJ(J}7AB$=;^?mzXbUgCICtvT!Y?%pX*j7j
z1BMT<i-+LFL?l4M7h8<<lI4OqsSc`|rsDI+d)CTwvly@IEdPk(+ug)7=H?jtWTXV)
zj1AW^t8CR*qZJs9n-R$f6m!!#T1e%1+6e1h5x&hG#iXYYO=qi!_xeLKbvUuS$AWB`
z2|-8sR-=2f64n9|HisOzF%x4i%ZdrcTDxe9#uMGi0poxg>rtW2%II)O=$n=Rj8bLQ
L*57$)_7ndH#W5~s

diff --git a/core/src/main/resources/bedrock/block_palette.1_21_60.nbt b/core/src/main/resources/bedrock/block_palette.1_21_60.nbt
new file mode 100644
index 0000000000000000000000000000000000000000..57336ca95895f32c13f9c363e7714aba351c772b
GIT binary patch
literal 193020
zcmYg%Wmr|;)3!)TqkwcO-Jx_zcQ;6PcS%XNbcb}8bV_sRPU-Fr3Ey)zzyEW+ewu6c
zteJc6nKf(S*_${V;T7-?aXG_T@7=<?{<s1-`h0OD`f<fD?4*s86NVA%v|n#zYDtB*
z?Oa`5QRg;J>@W)(Teva*<zETalKwfOu-!d=J|RA7{B)TzcsmmJjWtc<1L%VTirNp1
ziRNK4g}TMJKOQRo#nKp){n$!v8PJgF84&SimaO9uk`g{B743OvQLI}r^A;mdSB@i`
zCI2}<S#S^YC*P7RpKGQ47cx*;;-R60^+CV#H4Z;p?SM)l<&{H*IGMvC{oFx(p5~Df
zuedOK!-5e5)t_|#aZny!K9{D&Bh2P1C{KY#s4zGASZiHtL-=1XW-WghV`|TE*_1<^
zMwV0UI?Z=&Ji#Jk8qVJ7&cOq`xO5RrrMlDm$_HzZ8TIj;6WJ!e!4Kj5>F~xnVvd7N
zhQpg)lADgG<fp#oZ<Oc{Xw!v>8V!t4)r`;BA9J6cdzTl{4(lc(Zyt8%pDO~RSwlMB
zg*^Ea!kJ|Azj^mCYAkc(n7@>S(HBh-YGzI+0iuF&Y?!|Ni{X$UB>&WP@Vn#9vIr4g
zzNCm*zHquC<=cKo>!*kCu>{s%ME!Nw9j=mc#%8>Jv(0WTgC2afwz|cU@_7`Vb<)LA
zu?O)A7LIV$a#ig^7u?&_$dRX54EhDHvZ(0I<%hhVDwGSRLF8AW55=1paD{>izCzM=
zd(NTAg`;k(uP8WVnK;;q+_nw;$^Cxsvo-4*QgDniaU7pamvzJR!@?Ch=ZC4JtTlG6
zu@P&P@Vq1VjFUca@q>ke<AjN0oxIzF>GvSa_jfL(hGG;PDf)KJf%R6sF#XVQVm{XM
zVE36!9BrVRa8v&{SU5@(H(UC51dKQY+bGU#@6yYzIONKY3fc1{i<NM0>(&FJ<oBtm
znsz)sF|_TX!{(1gv?+4WrHUWT&F`g5jm}WKec*nuR9kFXaYFoMuzEL$*rbXlQevd2
zD79c6;<)?O?#ei+8S^0_X_}+|NbmQ3RYIi9YutAgY~HQu*>vT-&$Xh#sDrGj2B4wi
zMO@Yycd@q^#bL(nKb@0F9HTG$t<mS_wK*l%n)g?sKOyYRm7~5BXCYiR|L*Hue8BWu
zZhv$HtX3;Tedi^!{HqVnFA{d&lNP2rK-G}ojwN<l5doFwx$)>O>;}_+={QsEuM7#c
zd;W8*vVK5}RCj{MCL(R+0>;N2_5v3n<G$UW<R~72>RYlFTL)h|NU@FC&Di>WWWnLu
z93~IwqgAxeQ#p1*@2WS+M$bU4vgR*wTwoPR(C<|0N$43;inYJy^t-1$TO7Y804b2b
z-RjlMOGMaVc5>V8rDPFpQ~BOzd*!naVMM)lgU9Yu_8vXg*4s22RX}@W7?`u?es6cw
znNRsmn==!M<7O>$XbyXM6qbN{+#pDeFKYL76tCIossmDkBUC@C_-N+x(7ASJHT<cT
z&;IB!Sc0xWWPrluCc*A(&$dmp|3h&0>R)@OvGpJ(7}w*2|KfL~BiAk3&UQu|<$7OK
zFq*GZ?hibC{t$pMS5>J<Aca?_f>QzOurB}~Y?T~%-rMn{&Cq#`q%Af18p0pQH7P}J
zf+e&b$AJ|9oqQ#=Mm(U>^iGS51kC!L2-?2`I?=Z(5;nW9J>WlxNuy#)f6h}BrM{Z{
zRqB_=B}6+nl#j=vN>TXNk*<@zNd1Q&rq8tX_WrH<9=&G@-9subD}_Oq1Pe;0!QpZr
zque{xX2thc@D}f@F5i@I_PIV?GW3o1*GA!2x?2x_<jxuiLrji<Pv*r}J-Eu#lr%Gp
z_}VC$Fa4zAh)}3H^;UOKiXl%R@6LPWcw9-ziR$ZZI2z~G9VQ{@5L#|_K_JH`DhzeI
z?O+5OpXv%tc_OFr<ho^JJWj=lDkVX%fzYFe=H5n#+9LCEGlDuRLJ1WArq3r-p32!l
z<)9;`cp>>Ud+zpk(^I7=g=`lucbD*W<6tR@L(Y-1p=-sAAhuCFOsTo=iJ9uvJV6Hg
zow+v8$n+TvZynqZtO*RqBd6k2%^!cO3+1ykP!DG9OYWmlmMESMVR>+j(&^miKPw&#
z|C9}HR3@(cA*E!>lFPd())M|${@hc!koqj<U0y8BZ}3O<;OEC<%ATKe9o|A;4zB85
zW%jzN#~pXDpaQ!40^b>}C$mtAVHvI4O;AVpAZij3nn-;`BqfsnTeOpUi`%^Z^Yb&m
z;LxU4wu9fRE~xydd9uUTDS_X;sUAC|84@gg+DHQ21ok%#qSr+BHqL#R+P2D)9)-}M
z{1ih<6v^qkFv#!Tn5eWfwgjT1QGJu1{}!OnWA^RICq-{j8}!?*Q4a+^o=f!k&o8bT
zyGLSa#{Q7gZorfd^(#BfA3Kc4Er$k)d2^@$Xi38EN}@`5cT6KZd9MVq&09Wdp%D0Z
zzAdrL;n%!K8!ZBfWhs{ekl5lK0pvb{MDXW2BrTzLDu9_s@6!^&6;H_NYYoQZ&pHsZ
zfloSq_f_yhUP<DQI5lldWUupo-2D!l%r=FnW;oMMk;q8o5sR-#?eVs%(N|$7ADTC!
z&^Ms+qiw}_YkV`2AOUP$xky5M1*nY_4CX}!a!K2fK5R^vC;&n8sGki5D`oNnBPuTt
zK-em3uhxAP`~O7$*3q|>IoBqdi%SC79{5^gL$Fsz?LG7*b+cO#$TltQj~kk&W!UP4
zo0^RQJ!ucLB=Mk@PuZ(>wq9F5Y5pZTX&{M0UTc%CmDG&}fqI?PIYoqX-$}79gg;-#
zEtMV<`(0|pH2`-DkCs=#ZS1|a?&-ArCH_DbzC$xye!6KJ4Lmk&xa-uub^^uZJ$5z>
z9f*iiK?Dr$Jov=(stD(=mfEOxw0AT_NOk@0epwLGLDJpw9g+<ybuRiT)cP8OSB-Uf
zWIYmG4G>%T;F$)dx(e7f#(0IvOFfhm%pvv7^U1sR1S|vHK(~ZU%7_pF^R0+gqo53;
zP8y_hNh5<MEo3cTJye8vp`FU|p|hQj%JyIn%jp+>>wmOc&tG|hzIsA++o0*q1iHc2
zG!8ii9TPFZ!$^{5<(B4_@;~t>8@M3jhF0+1|I-U<x&eLPcf=_|{L=dRyrVH`KMtoA
z(iX!W9VG1uI2#G##hVvK`ob`h<nL>Ep3_WKg4{l`)QOwn3c`S0W?1B9mnHw@Pd0OK
zEs3r%I{2qoATf|g&w6@*d>&@BRQQDu=Iz_6=Hx0YWZU}g1iTHb!3?-RxGUEEgcwwj
z()1bSP-7)1=aPAbn?zq>Fwm(2y|kaj;XLGfJVOJb(&}V!F#IOP)hC8a-Bs;F)W{s$
zTzuXN3uI%m?CK%~S-KVd1Osn!5gN8j3jPe<j8wX7$Ws;Y@+!e@uotZ!d<E9bXK-Mk
zQm$5<W0hTC<Iq+TTvA{wx;1cXxvRQ|sFCC%=PUaoAgGtyWR3LSsd|6|oswa424G-R
zd8C|mTJx0h_0awxiX4*yAeMoqaP=EV*X3AC5T!6&@ZUbu#a(?{QOZ;y*}w|feX7p^
zJBt?@HD{B3q!H?&jj_t`*Fu2I3b(5*+aN|w{}Q1`EN1Ns^>wF+_3*~3An=xbt|pb<
z)hc=`Tz0WHxd}IQjWY|L7vz@Z!{zrXejzGE^hn2<^uBh!e;9@)TG7TpXw@LYgWW7K
zU<my3_(3q%u=u6y_23S+wj{8%R|O{xcxZWhXkt=p)&5`#@nm0B+gq?$b+C93ZOUXR
zR6T+2%A@$;kuFZ?qdB$}Ha!?u+F&sY`4FFZJj1`L1gmeKk2C6pfybH4`|GN&rkM!@
z1_@$&C2`?E%tqvP7|-yC)7P9V4J1eOEbX*gCVQHMV<41jL?iE^N)f<HxuPR+z1O-?
z6O8SCd6Txg^eGwob$$%4zGugI#W;GYFa!HI`&&`rY_^|2Mupw474N2on}bFabVsqC
zd8Q7H&U1KZS;0v-ply@@BS5{@IFfPI0=XJ->wdWd0cga)rBl_*vL5tOfvp*~B_OaH
z|6-ucVf2m&HOKbE0cPllSx5_b+jd(ke-GrLW$dAeHVmh9256b^>8q=JEMWla7V*O?
z-V1PKPgj>qewrsT=1CIsS|X|<1i4j2Z?86wZD{F`uIx76*6^W2+EB5`3bC7px~fK~
z?Ddar-H|GBL|ZV==d4@H@ZKs|1_}M`fBk4-(NU{xglh2qxT`9HD>;|iuFC+l;9~o*
zbc+m>3Z_9q@V^>f=`@*jWcW6&5A@RO1BpaYRP;Hj2ix%o%9)PNDs}M*(>qLJv|f*d
zP#&y?(kA|sBLStzqN`T{=Zr>^R9HDv66^t~7N1PM{Gj*Ay2wqo{&RFAVqzjPK~c*&
zH6jX{!Ei9g)L+k*-ElVS`{9Bq^{$z|<Y_5ZeJe-#Uu+*^LR0uffsYAHP6G8zfFzBQ
z#Z)`?rmx)7Y!8{MBDvbqY<_N$aQ-mok%+Ub3L4ISMc%CKG3r6(#Ooj~@8V0imhY)t
zSHH#O=8l>0QWW=<f^v&sHC=gvB#W10z5g6(L#HS<iCDK4%6y>7caXwMv+g-V7VqU5
zDmE=4<TGHTv63ZB{@HHmDzEQoQAhkoa-L9mJYAD>%fQ)4a@$4Tm>xX~B|)+2V|kMG
zE*n^d&A#rZMn{uB8ON2t{^M_+Pf1Wj!eE_ZMruTUwyw>u?4GvBuhd0EOI&cQT5rSq
zQ>E|o(_%6D<VeAPwKNLaF2kjyIWkmv%=gp=<zPCl%Wlck4j9QjuosKc&h1B7-cSFa
z#(><aC7t6n<Q4y|r_+}?PJe8f-|HazU<HbL%3A8(>ETWDaz27?ng6g{Ypxpg&)|I;
z>#Y^@&-K$I1IP7D`t_aQj4LYxtIc1lA*b+12GBT#-$5+|4dEzy>8Nc#wj*?`UTrF?
zoNsuw%)jcRc7Nz&0SD+Wo^qny4P|N4&Q-!iksue3?BfWH(*!wmH}&kAG%)I}2<de5
zhZpx+p}HofS;3{!3t>uTXn!muFgl<TEe(18mR5Vq7dFv+S-WEFmRP`!JCbBGeJ6;R
z>uFwCP%P%ISu%KkqOY6#%qhiOe2quX{6JQN$HujJM4s@Y+Cr&5B7wG!C00aK2+nl=
z6DO-D2mYbFvfcT5ZEbaM?wG{D+FuWb(Gj93K5EkMX>Au@^zk^DRYyk9+YpS<;PaY9
z_;qNif}tmuA8%HrYJzj;(m#M;OzXSDlS-A1%9IP4ihe4Q4sswa`Bf+NKJbbv*~We*
z+#8{*<+@L!+xhInA%t^zTdB-Ij<QbEG|iC{pj77lWIDUioLiuzreZCX(lJJ=_7@&+
z<S+rFPo~6QUL;JrTVnI-J#=4Pi~X4dh4x$C;+%gTiR$+r${?I@N{Jl-1{<wPryov(
zU#t~wDwLc}zDDOY4jSAzg=^;KsK@5<d~`b3sUNlc7lUvxE3)E))SYq95l2|Ncg0qe
z8^QeS7`dtFSWhvO0`;A$uORa1G9&z3)22}^2+euNK<$KM;ZA;rmf>bADo&<3|KC7w
z)Utg|zVYr~`)Xp>^rI|GsY}OdeAjeo*V<h^hMSG3ICGi++g$_76OI%M<+(`hqi#Y<
zrDdCzuyCEmO{0r2nIyYvc-Qm@93@u<cy7B1CR!t|$XRsKhMFiRbLR)+l%JQM6$WUq
z{#_v6Cr;a!l?=)f|F9J$>@VRYxpduHlJBoR2->m}ZHICupmpfkw%gK@>#y#z&D;<2
zn%d`39lq|z+gg(8ul7i6DHm>^NVn{wiH*u9`PD}lp~|4P)QG!VL+V=U8rQy0oopXo
z55u%P{j0{|RIcDd9ro?Bb_FJW-FCn!U0BLKy<;#FPjRcUabYECgrn%eVEMIabw$F8
zM-p3Eh156C?^ECH1wNn0Fh^&8-u>P-d{hxl@<lhLcp5gl#eE?8Yukdy^a)dKv%EiY
z(|8=Nny<|vsi95#^`NA(1)Pxg<ADtc3p+Hk?U~)lcgYcffzR7>53m31ed&8VarlL>
zV?oTa#mP#n1KqqC9KpHfd>QEyj4Nl8x!R%5nXTnBkUVsZVg~2<gof)7ErUhz>JPMV
zfBNGkHx2tzBYNXPz>ysFP-v1Ux<$$l9{-Snv*yrfuY*q`!J1jMYx6{xmL6{t$^`@Z
zj>?@E4X{nDF-dtFE~Lf2l*Drd+W*V_EG+tb9y2&%sCII`6)AkMbKZL{T}0%aW3b2y
zD#v_Bv4qzCSf=|o#<K3*T+9rvT)RX;V{g9P8@t1gR+dYFxbK^JlDDx88K@*-Xfkte
zKVCs}W|7BRAf(1eqJi;>>Qml#)NMPdlw_j7=VT~SP&H-(H*Z*EF02#P;bLNkaI}z*
zO$55}W`o7&eT6-=FpQs88mgyIykWGMps3lA%&FW)!5nQ%u6z#OFm6oH$gLx2BG<@Y
zsEONF0?Q+QSe^<Ezp_FmdIKuZ!QlrVEpHelCMad+o7cWVjX+NNKaLN?ykYM#LHV$T
zh?BWS`C{kQH3!dVB7#M^io_TB-k7if5hXX5!tOp6(Z3f*&rOCT<b*0I$uO_xG(M0)
z{^LfR{_t~Z_A`I=z%l>BCsocOf<5)>2gyX#5cloQntK$q8mG=sHB{tzp=Hy3-vBjK
z%vO~aSSk2)@Z$o%%u98ywJuut*zUJ+7$&65jnJDq!d4%JlLFTWIlg*ryb91jSn+e8
zizX0B2CLjoc!Q6HMIlemh`B0JyXas}JMkJA8qiHhDed5e7_QZQnUH>SGZ_kQ#v;_B
zw?Yqzfo@2Kh0ajR5T#p#A<weMJdV+Ug^feuf5Fe*+QEC_;mk{hFo2(;D_WdW0YRg-
z*<b*(b`-}2StBP1kiD&;Auvogcp?Igcr<-%hamoh0X$C_eQbYMy{+HWhhQ9T@Sg}W
zm2m-;!D^-?;OqvZ_#JrGH)e4L3tkB2x^}pMUjO#z5E$Dpi}PGgAl4t7k_7-apIm)S
z#=u?;IE58I4I&_g*5<>uH{i9fu6nl*u{03JP=((4slY?w4;`8Tko;nlO?S+Jph%aL
zTcQAM@@K;y0U84+%YKpyI{#(LRHm|O48+okU1|h;{Nl#yb|K4!K;lu?*|7y81bVIs
zf!7i)`vqtq)sREDG#juV1F}gaqS7S<GQIc%4F?1*i{|kJjP4j|FQE0YK`<wsXt#p@
z)pVfkVVW7R+o8P}7K4C0n_V^G{xM+;CeA_j{QL_<N40pLfZs(IkGt$A(7_rFQ0_6z
zHxC7gwI+gHX$}ClZkE0g0PJhb-E;x8z4r#NU~@D(c$XX7epMl$Y$diIZ2=$c%bvPm
z_QA!v^t7#ihpPh?J8kU;p8<C=a$dIJ_Hp;;j_K{#(ga|JiGATFh2(r!$CWDxiG^d=
z=70}81JOLu0YU%82A+})3u$x`x>3mL(~>rW+frb*pBc<KxM@&#-|qozVYfx=|Cg!e
zNJTR~kj#E5%^dhCqaA#6L41Zkq=M+JZqgcn<J-eaSD-Rw8aa``4%mBOt!4*W<@^la
z9-&rV)ehbvgW<nSp;m>vIe?(s{a;rAYTUk6yk829fb_O}UVoqqkm-ufV!Tjt;IL-g
zyqQi2$glXm#v8B>S^Si8%+p!bfgS_xx%)SMrvM_MDfV&MPklug@M}=;%(8<>P+4#w
z5}UtBP@Lmj*|1t~n2#7?wghgDuK#TVOD3Z^=j)C2<{^t><jUt|jgTL}#&*^#Q_%o~
zgU6xy3eo+Vn0JlPAl?<LN+MRkMbfd-JRkAP!r;{96o5Hpm2?vztY0K?zbQb3_~MeE
zbuLdc-3KUF63(MnFAx$$zj5hq0SKB>k8c3WJI-8oFa!ENq$Kc?tqju{Y0p9esB|sY
z7X+W50(}YQFRR@?y`*yWmk<}wxwSR_)_c*pEY7}6p~3Q#4=*ezLG$Id*6qDM>8#MH
zw))ru(6vcpl{_i~34(ptQ2R}G7|<S%3D;%};M}}_?XYIGT|s3_-^E?^Y>5U7gt>FM
zzEK6j*x7l!Uh*&qf&fzg<vD=_)(Vb5>ky-^1KDr}&4jN35-cyA&kM)Y(23Ov=-rTP
z2rATfPym-9-`L-8my5W;Q+(Vp<^BPwi*uPnqb)8FMxIW5<_D0!74dupJg|a_djoH2
z<q)V3(?wQVchf#2Oda_{B6|Q}`Ad4SB?~OckA?PY8!p+#GawnicGa^TH?Mzd02EkO
z3U2!aoCYe@q9f2Ls(&c{FYyh$4a^r>f0oyW15N`%gW`9Ae4s*CQXmnx1kPO_P9ar3
zSSh-h<pc1dbCz1XELCrR;u-|#{X3jIrYZ!$MfY*HL;(z|E<LxCmaiZ*|C#w>Macp%
z+1N~*^BRbJ*0>6@o#xB)o6wA*`6&g!;ML4K5C=$36&!AqfL+n0ei1EL%FaalMeBbd
zBXEZ5G-#i2{1CcdBadwduexjA2?Q4;q|Y4fNCKAM@%bpk1JZI+V%D*6A5i+0v|vj}
zV(cM*f@NOlVYOZ9=mnBEIc<K70hX|F&7*>mtr5x-&ujUERq~%*iD~BBlVX96T~3qc
z7yy<q@SprI?{R(E30fdq0sG3u4=<(l@Dv1(G@u=LqEH-O*i8$M8nL6m=AQm44znq+
zbK1m02RG6Q1+a71==$3_5tRwpcjT35hw5A}JD;DzXvpqMoF6nmGD*q}M|TpU$=WNx
zH`~CI^M@|F4{)w)_AR6T>wZd*D>87_oTXD+M*&kzc^mnE+pb>OEkhq8h7d9iI}nxe
zzcV3m`f<mc4!4;B(<=KnQWkiCo}nJ`^6_<tSGpL1PlF2AmK7XeMy};r<F+f0M?uD_
zAMJ=Pcp!rh?I;+y+W*?W^-kN24l)%5+B7~V0rOgUfCYS2c&Wr_&l2)i8Z$A-;BS_S
zdxuaP!`cXKnqg}T483vh^RJNr<Z~zYAT*An0WcD6>(BE@Ky>{ia@_jeYI5)dWxA5D
z#Q`6Nu*-g5+9|;YDNv#=*$1QfiYW-Z&VUtLcwl1ll(5GAFMcTZSL1oMdBC8QGMa_X
zw~8F8$)DS<V{bqTn1<hyt_IH*^8tcT$5f5n&SwDYd;K@3z{wSK?Fc%{_Xmhc{71(C
zK8lt*3FrS9@&9l3UJPB+0>hH%BS$oNxUUi3kyQ@4kQqX@DAYolF>bpw2;$V&EJ!Ly
z1`3?z$r>sf=9mV!8o#;iwx;8dkw}2tTgUjy-vNhAcpN^<k%b<FxwZY`JU5_P?e}xn
z-~cRs+;-+(i2ud!JYTCD0piDkvL=BWfK%my-~T9R)4h@c`h!W>dLe=d$r#QxyUomn
z7jT%M>%0h*f7$!~Cs4=EUz?XA05g$=SOZlsy%696C!{O5?ND7&bX!m-oxaRy3;z{>
zhSxJC1V}<Ko(C0Dv~1JJoBs^~gwU|jv*Sj9x&!S{8t^R;e8g9s%w}%_5yChP8Gw?-
zFQ3zZ8-4Kym^-rz11Eg|oFC!OOQ55iScWsgz{sIovmgID{;%<STiQTpDCmIqSk?r-
zAOOb)TlSZ|DF2pbCqchdh#PW~L*pJBsG{~I)EGeW{-Sgy@p4TIp>hsFQ96b+-5o#8
z%N>X0!7(}xK$pv|_6Z1oRnF1E0lpJqE&JIXF4h2@FRx+dxf%-CQL`Jp+;KF~!(UEY
z!Hh_o)FvXJhjnJTtcdN#jY(@~KM0`2%Kin-ucQE-;Wuu4yf6yc>4NMaT1~Y+VAfb%
z@%>5z#uI@iaq7AhEa4$|Li<`a^|8Oq>K`RU|6?FGjj?$cSe1%0FnYsG3yg_n>!j%a
z6`%NmPJc-&5ZEj`EgeRlo*4{~0bqA&p7QuIv@0_Sg#gc;zAba}H}fwC3y*WZ+{+c@
zOYbOT1XM!~yJb&q!#BXRwzHQop(TAeG?R3+UZycJ9>+Q4EX+=P8<<t~-{G6ByP5xg
z4z#^){saTrNh4C>zMLwbmSz9;09hbPtkjn08v)y<qXetv<>Im3d_<Ks-OW9I))(;_
zz}&g-`SpJ%U}t|1DKLfYn)@exUJ~KgAqHRJUylB#pS@O|r7x4Vn6;L-5pv*lPI3)e
z;hO^Yp3aJi{H2#j+M~q(N5BztzQxO(Lv%{Z_)bx<A9Cf&9wuyw1n_&&8tVN=K=S$x
zZv>#ke72-rQd0+_b&h&(g8zB}26@$;!~1$(S6s+tBwMxP*!v}ok$(~#5W1q~-tF!I
zzyu7=Ju`ua**z4vOGB$K%MYr3s9%nnTF~cuV|6DDD)8m4y-n?Zw~&aE=LBn|S3o_^
zu8137>alhBE98HjaL5>sv;iFZX<9Ts4!}*4xI>Kkr3ua-ZXI8^BfF)s`g%G9K1Zh=
zH?FN0ZvJal>BE8lY(dLJR$t2`k^*_aW3V)B@V^_u*+Rai92le^;Rzp}d*BNnr;WZZ
z0H)V%hJ16u!Tg)=n#VdAfhHQyOF!ucSH5V7=({C6fXOfEeF@{skxkApZM1Zq4D{|n
zNkir)fWE1p*BS(L%de^6m%S)}%JW%S?WI`hl_&pQh`PUs{a*{3&O%eIh9R5^<Y<m8
zz8J=*=G;Oub}pN&5x{!sAf4&(;|F-4Z?Z?4+L~TUa;XrA1p)3MI(sl-{Za<&RNDVd
z|KE<3crVZ;VIAjQpzFS2d?`J65{z0rCxFTLL_lTk&`J5n&#g&Pq)*aNLQw=t&g{d|
zuX;~ML^oFh!N1N@no1j$6iV*H2Kg#|d*XF$iSotI5z{>>^zSqe`xKCE@L2utteL)F
z!TqkT+kgo~LH#>UzM-zeS&@N)N{JBV><aHx_nXvjP2J(^L?>J@D@;HCCfkU$UE?^~
zNDf8R8h=p1xl*Lh$2ieqgbdjd(rE|8vEjD~Pu=y?*}BC}6+WR00$3S!vG2C}*xngG
z&Zv`R8qiF*Yvi_lE>)tuVow-iV%^pr3Zo|bot+@ntpeASX>cGJ)%(56roFKKA|_(K
zf4o$ILTP2cple$gM&gN~Qko~pa^3@@S5m%1kNOL3lC<jMRJmE?YW#V3#FRgqc4<V&
zr-t2=$Na5&0;vv#=mw9y1Y~HpMI*+-6t!YeZ;1p0YERI7UOlW%aej0l(dfPPpw8B<
z)M{T$(UdUFOuyxpB4^GNetC>VQ_H~Wfn1S9xvt<pa<0jkXY$$O9*~U7|NZ)0tVHrn
z)Rhe(gV&VrtpNI7;XASKXEoEadPagTzdy?(9^y$cAdw<2TdYrJcd?J7AhezTdn1p?
zYGS#HNP@6TvpzV(Ba;m4r+d_uNut^w{+Bd>%C0mJx_fL}>^<ynSqy{gaWlaHKP~pH
z)5$BGE@skk2_elxF;r4vKP~zq$M?29b|rb2^7C=R`!&_8Fz7Hg2~|!a;qM0gN#?0H
zo?)t^(SLT9V}J5a$Mv@nKydPRbIffLd?mQ1`X-Rp>Kl}MrvV<zV{BJ$;%ImPI;>6I
zxSo|Z!QLAr{$3{GuaDUzU7h84uN^)A3K7+uDIxQEAAJPOn63vZ3bPC89x=NE*;C~K
zh;)OO#~eq@Nc`I*Xx5W*IQDBC+%RJ+uRJEZ<T#zmo;eiJ_19EU^!sU5eR-_b3vqTT
zJSV>*D6FX>1=Zaz3&?5RQ3r*ICA7d`z}d_&EiryXyyy(fGT75?7t{q3E{ifJ59G1G
zXOw@86&kK`=Y)kMjJ~C5{_3cWh)+`R@8f=lP{`{B&H2?wp6-uqKf`&w;{A&rnSz$6
z%OFXk?FJda@mj3sV<MuoPY43Rr)*@CQM}57qYd`1_C+m$Tz-|h)DZ45BQf^I)PB!u
z0Z3#RHJ>B6h!4zC#5v;90XRJTL~$J4HrFjiZ6^Eo7F!6jai*)<J^H=B?$LTKrl<|l
zF_kZgU1`8da3V8rAUqAR6uxqmVv*A(;S?o{dM>y!L8U_YU71y9ipXM%e3?`sOm?L~
z`lcq@Yie(BQJD!=7J1|WkQuu@G<tFxZqz~h-@kl%Lx#LulB2rfICG~e9P|bCXBbpv
zAO^h6wS0ljXfIDGc{geBXPTe2K>4sM5S9ii6<G)j8hJ^VTmdGp;;=b}YBj;SA}le~
zcfvT0D%~+zn?o0+>Bzx2csuPkFJVc8Kh5rH@PeUGsSWlc0b%9#t#|KL<-uXuQyU}D
zMF|>bx)1SY&@Rggkb?<6IT56g0BL;ob6z<sFM{Y)i5jHA{h*4bYwaBEuBH<71)aVG
zlbSI`z^*i;8)dd~S4$rkRgfbo<c=nS!|w4z?a6^0Pbob(jlMs8mDmt`Ujj96e|ga|
zbd$pCtedw0>7qC6^l=Wn!^s5cAI68?1C6tGaVt@vv+653Y!{N_efJ71SBZjmi?*uw
zV0SGZD}g~WXX839P-f|p>L`6{4CNGXg1-*$BK0$HS0Eb@1Ld#DrbY%>%l3xbTNvnD
z>&N%6ZrL{q2`ECApl+Ks3W-uZW{lKTUaMMysUTnJ&{sDI-~`uY-BRLo@{#6qH))U#
zO3Uhdpex3EEroeXA-XTQ&lVH_K{pS&t3f;t;GICh_*GFGsPotkgX!WSQqj(lTDo3-
zmB)~0L3z6!oS)Xm5A9y6DW<TdIC*E!8?C>AHosf0BeU|M<de*CIHs(6%D5{Ea0nhK
z;i3K1O%kYEiinH_3GQEDFS8cT*NXW?!vOQFmr=JwKgqUDg@=}{n<S_`pYrh|Fm+HX
zDLZ!6GH~IjrJJUU5?}du+B?tO3pmZF_-Bye@kEQN>3p2W?Ruz<U7wPydf)I{YF+zA
zIB1Nf8Ul~!z{}6PgSF^2E3zV$wk5~ZiYw6IiC&|9XD%Gt&bV;Q!X{{j>U6%G$ON}n
z?wkXGroF~EJ!_{f7Qru5Dt%?NN)B4v7;I{m)yQ%*1vUlq8E9!4Wca$O4EZ}jScjcS
zGO2yP-{!6o!-Va<s!EU`>S-qYEIQD_gVv1VnOF(>=-u;<DoBXH<lS5{PrFxD2oglj
zQA>Tq1nfG$)fS$WWg~ybxuLgpmjak)=i4#)D<oC~Ni1jVI!^lQNhm7<0qySxC)7-=
zIQ^Ke=op^<mm#^P!U^4BF~}tTd!)@L1k6<VTSaf8lipe(7G%Zw^`y2cAR)LBo!Bf}
z6(gLUDj)H}mqBhN*|d;sDgxG>-OTn30%c6jEkaoA4^2|sW42>5drzrLlQUjB-@-#n
z(oF)p(6sR}5Hgx$Fl(wAIu825QCZWx%3k>kRKgVU6_8+xqY1&_5>><w<-PnA`6mu9
zL)pSPK1Q1VX3N`YP3wTGMsmNn;|m$&g+C|B6m1%E!<mkDw9o-=)rx75c(HV`O!xcz
zXJ|2wE8Tp~qc^06$!8>X9G*gy0$tvl;Sq*%R8SwBbpDmGqU7Lopnj~lU96%Em|h<{
znM<vK2y>CUht-sMb2*oA?{a*&au|X>Tq71o$qzYsY#u}k)!PrWUxr3bW7Z(CHy3mi
zM9gLu<tIpp7g8AJ(~#*_us6h0@BSF6os~Tju6Fu%cF=6Xd=^3ySrGAC8b7!Kv57@8
zr=i$djGE!AhGOI!*fwv%{6<%EHA@Q2D?I1;4VS?YnPmC#!*PYMJWE4F)*QQ?_zmF&
zQa@=bZI1j#bq`rs3e1Xh#dJch{15LCKg&|zP>K<c_zEE>F`}Z4XBY_mwr=Mjy0{gg
zz+B!5k9!aI)f7-o*<SGiDkKp~eq)HL(aGipA5d9-!!BgX$sT(@nionIy-lGeiWhOn
zP;5VlCF^HirOBnI&<;C&Tj=b*G-p+rM*CD7k$4S45Hfz$QOO%%PoF*<#6igG<rKSP
z6^z}JKzaJ<ln~lK7a=Bs^UpQFzPIov-7Sl$)<liP)3qOFJolxn&V8f-Tf&Vcmx3mo
z(gIhA9f95;$DronD+3%~HSSuq8q_ryXr>e21#1CBUl=&OiF%$*Gj=`0(;cQx-lxQ|
zUwCVHdQX8>yAXk7pSaeudX`N9jpPk0)Lk+(&X(wdW~8>Q&1$Z$z;F<}qpjlU!ZOZr
zkJa4n^eku@J)dP1<%j0xsv=#n#a7C$RypkTp8Yt(XI8m3@=%0)t}u^e@EfIS2iwf%
zSyYjvY#pkp1`4vZ9Wzwoyyg#i(+b+wig%j$jRr*PnU5}&WhmN|MC%m)j;dDRDgwkB
zIkN(j8vG82$(K8HzN;;EI<I5cv=D1txfsJSV=wEm+=S_*K%t#<A<3c~gOJ_qEJr_a
zlNiV0o~@m5O`O&P4^Kv}85a}4DvA;N)j+2aJwwi2l9QkjzN{Y=xQ)GpyIOxqC)uGJ
z8u`%vbdc$=+J&bbwcaoTs--MSAAx3*HEh?(r*EEseH;JAI7gl(oQ=Khsd##b(?}=%
z$yiS(CZOuDp;9B*PxaGU_Lg`jMykU)-`Qr~g(BS_$vlwvtG}G6zr?h~N#BPE@!nsp
zrSc~ilxRrZ&+*a;Gg&{&)Z}5lFOc8nI*92d4ybQ2coI;EhxdqG61r*__GLXycKJu&
z%k*6o;7jo?|NGXv7ENoGdC)60)-c$V`8U7u1jlrTmpIk6@EK;v(=Ei`{!(NZ3ks&Y
zZ$w)7_nmBJMOTCF%3WTysZnN<PzYSarwyWZ@4ng{uuefm+0gHmKU8kS65oX1us_t?
zA$}GccH*LkAi{+2M39keg-EOAQ=}Y$Gkk^{X^35C(WU|Eo9@r8-Pf=CDWlSfv~b#Y
z32oW*e%V{B&^g(*z5koX;(bUS1PyD+q!)j#y04jG+tzh1k!w|Y41WC)1;={1c+Ll5
zEH!vDPV_m(p%4}w8OOMl@6#`$EkU%nXI(JR_0a`PQekLOd?jt0;SC*2d#??STdyu?
z!2oDc!f4FzIPKL46>}VX_Lw$Upfh?^w_K>)$a}5ZPrEvY_7QSQJLZK*WCTnHI9&BR
zUeC^C{glx`L!u4uMS1kDsviYzCtEFLqU4CeEdMRP7v|8Lu3povH1|4GiIO8|ki~2z
z4>0RA%WWJQqieO)0qe$~(+JTacI(yi|H!s}qjmJ!JE%=l0T3M-JB${6kxQC5`OE{_
z%KLtOBplW2q{>}r)6%)0JtW9t6U|8er3_(HG&#wZU@SFjGp;ZFwjT|V1cwPUpk_?b
z{W+!kTBx5g^5kBN$t$081suNnesc+{)iM$sUaZwJ@C_uLJ4@%p6tBYsuud?zr5;lV
z%zCxV!XD|CIa+1@dGX9#&1(d>2$r|Ye7Cz=jLu$@McC6-{^&o!?3^ssx@>4Tf^`F~
z6)lB8$p<kucP>hY8Lg|<e~3Qt%`GC5;t90GZ@*)>EE`2D<T!{dC8mRvoP0}%uG^VY
zxtLhio~km4X}NYi5^lVBZ@>XLi_UN6?>c6`_61aTe^hceRBn`<E`R1(`8--7Pd%3P
zCpnyR---U{(QaH9tyiVD-PF--ZKJGK4ZfV<jO?<WzOU;@6vgtVZ<w)}L3gM9g47b_
z^jQhVMf+9heK&PfEvpTyRTE&2aGLI4L8g2LzH!t;HCyQa9-~Q-dN%s24O?;o#+$me
z+;cUExB^C;dk{KK(vJ1K9^XIb2^|-Rfrj&qgT3SV^O(gyJJ6<{Q8kM{0(=A)qRVJ#
zO{&CM+|YMjpBy^Vw~t4Yb#6Jst)<W1)G;Xw46f+n0(zK2eS{`%(1aDQ&<h1-B{y+a
z1p5iW9to6N*w!>qNMzlSaaVT2NxGo&qM+a6u7<s`2X*gf(H{mt;zoo%R;QXe`*Lib
z+lHfL!C;``I5(z`^w`y*svw3a5nMN%m^3DJ<Ab+`6Dcb5G4CrCB(VC~$JB5!`L!*i
z@2;b7csf8(_F<b>&u!!Z=qTCT0<{b_+Zwziv$O(fNJW5C<aC!EoK?iv_8`NrtEAwU
zA;H1fz9t*uk6A!;S7*6zfgQxjx-C4vEw-mL)cYEyi-BJ#OQT&S>nh&V*^i@Ffxc0{
z2%Jf7l!gAs^g9(iFqAjfwsq)`Zd2G3rVXm3@-IPo#A4)`baS&s?VeN9M*%k-+z=5<
zhJFqrG_&NUKy8Y&+E;bRuEh5HtaVw+fS$|N*C?A#?+e}<hFSA%Xk%fo!G`_08Q`}e
z!HHkd+LLA4V)^0pDwOJ1C<3)1vbez9)DR>QwWlM-bykAxpuWQuTK$Lb=NfqVo&mpa
z;5Tboh{`%fT5d@<;`(adeRRLAkoH<c=xDpb?y!JjmL$KsT%rc{L>@k)%Z>&qiKzK-
z8mB=uuqQ6yp99;TdTs4nJ2LTaZr*pyOi(ozMwyEE;`FZTezQ~nHu#V4@0nW-P}HD8
z6bM9iS`FNwh#kQ-A&qXiiFDoe!P%}B=4$`Jv;mbH?S9$!vz3nes(8C^e37bh67ic&
zQ}fe=d?waEea!x&ODyo~ka$dsjW_x^jH@*Nn8LdMd3Xw;ulp+W-!-3GWMVyo&58{^
z)+0g8%-pSBH;?e9szt8F_02n9j}t!Hy$8=qvyC1kch#$41w3QQ`XegHurhRgYzDs$
zdEZSH=^fWz{$2n)dNGta-qcg#ROZ_^)Dv5YG3i>8H)$Sfc$MCCQ=w+Pj)ezE?t`^4
zQU492dK9ccAW?xB1S<^;Q#_&}zO&L<wB3Xa|5H`)q!Q5aTJ$;@trg;rm@NA0e(eBo
z<Bep)a(o7(ybA`C5iDo0xc0`BX)l2^G1*^%gck>|T=D%Ev&et+D04LAKb;kG<0Q+Y
z-o_3p_3Eg>X5|JL4e=#i85&eml?vu6fwmNJaZ8`C+r))esvYuGMJ0_Tt?}Bau8BFi
z2zhI%=HChR+38#byBxjAc=hJ<z1JxyQ~tHM+qJpdH#{L`Z$jOYKXq`PLgIv(S+n(I
zfZ)CIi_KHWgOKZ(8T{?hyS}&fefxg@`<j7iFY;b3_lG5Q$UoHhq~t2LABzIN=ASh?
zF!oVCGvSUV+Hip1Qlq+daAehR>Nak1!TuxgZGEqgA}~3{{=|}HGtEX6{AQIXt71kN
zLg9SsQ<2ktzFcgPq2;OD<!8!m$$vPx3T=}iR{!4}FUq`cwvyIBh<qXr&%?YqP5$*1
z|Cho!n#k2!X&Ul~S#dJW60+Rklvb9RgCDH*fAA6GKIM3EvQnT$D&~{@QY4cteiyo#
zL-pzLy2>^P(_S8PoATBto>b&DeW20L(4S^pf&SxoVm}k*#Rh%y-_&7HNs8<_DWc>Q
zAY)d>z)ASH&-w^hM-yGt5_kJeE=wXCIS5gpd=3aM-ReWmW)Gu{l~;<W|F+@I;P^y<
znY-|b^7zhLnGAIP@L6M+55c~bg?PmXKiIqEhcf&6mUREVxx5&z1fB83r9|&A^8=FN
zAsbT0MT27qhedPNu0T`9W|zX$PtE7TV*=#SNST7CDVZtnYoA-4E9UdyL=S=H0w0Co
zgphy_EgwD&=wqBz)ui4fkaX1*TfUO?&PGS6WX|n|&rcP?JgZmw7^HM95%*`=WS_Y!
zJ1p@4Q!}3@wVCM*?|yH+`aRl-QkjZ;8IM)Hi~Yw4hTBAZ!chYK2)|MEcX4>HDyS`H
z((rC5196f!x;y3G)Efv^!eC-P3E@>%VIkpr&{_N(_#umt|8XO~`hx_g+!>eaeATAV
zN(QEHWBgmf<Tvsx10b@5iM+iGF|TXAs7@Qq?xluD?e6h2uef!xL~>aX9G||R^9_kH
zMQ@vwFW-E$zZ|m#^|ho%Jg5hJ_8+&{@(3$N4c(+YTpFS-XzooI>9f1AHQNpm&sXl1
z8Wb<qB~7}aP^NL`>HWE}`A9v|5SgofbeS)TZ-Oo2Dvf=arp4yn$edW5hT5iG`jIR`
z%EI5E?)EQni>5BIWc5MI*0x*i@&TcQFx89#og$AU&c8(B!Uf+PVihX=i~PrAOXwhP
z=<v4`X4Qvp@tLkXRpOZfHQmZ<pf-`=l&<1VMe&&!u9(0duhbNF@6`o}ipIvLbUt{6
z@A*TE%6~q7=QTv|nKdhv#SVD2SdM$I#^I)yboT77AceK-?PfRV+DN)EqALANpWPh;
zF9{<NhFCRi^4r5gF+INdBxxD><SF6NG<K4@T6%@sVlh2KwP?DJ*SM^;eJFe3dKF0e
z*T<j)uhr1-4weaQCe`+N?5SikB%H&#XBP^J#n*k!sx=@z?z-OmEz1h8wiU>_8D43p
zeuz+~uN}(kVlmYB<ZnVz_G)NKqTF80>`9x-vnfVjf!_vJ>0zi9x48>>qWv9>5!;X2
z{)z?}!%bSL>Kbd65^{-RL2~jUG}oGjrRSsWV%q8Nq37Qo!ji4YdZEjUzEDy|q!}GR
zso&UqhO;q`;V15m`iwzr>B6;d{3x<tx%%kbEwDuqC-xRDA@hsB@B7~tc>cpIlQAA3
zvrC1jFX)BXHzi}Q$kKmdgp#U8<y{4xA)`vvGUD^=e)C!sJJ92(l(2JR%3h1XR@x&V
zgp*}fjf$EiDg$k@<wad+Uq_qzEWA7AY2r8EcDBf$Nw2w==MCL@RoT-j3H~s0!HbRh
z?^2J+4X)<Bk86Uma70kog@t`3;v||((KqsT6%t$`;RI&fp*S15py~aM$k9Tgi+?p1
zHcVnW4}p#+=}Bn@XF{Ro{5Y8f{aT#t34_~shTsppn8nI-(X^AibS15OzN*>JjZ#XW
zYRXb2HsocX#S;8_EZ5p_@+2;CsftB42%&1ylvC#v8^KsGIE$0>AP&1<F0J&|zxg9+
zq3+&Zsc=A!*(ZpZ^O3r1gt>ipzUJhxjk<m%VQ^)Y?z&Obd{DiO%zDCHJ2wxtkInJZ
zTt`%`l?_>WXMAs8-0NVC_*IZxHHa)IdWheZc*OwJ<*aQ{lF42L+JGTW%Ic>1rVmj?
z1&C^z{^;!Q{aD#?eL8@MG-sdUIdN2<&l%3@rQM}F<7^5s(`=Q=)KBPz<zq0ch-mGP
z4?JxA;9=u!kkE_8$IylpzRPU9&c(oa>c095v;jw)<kF9ZWe74LXCPH&c+AsbsP@Xs
z+B{0SZ3$ZWDxg!OV}teEF8^xe=J`v`^q@-dzl;7qQv`CMjMTh^yZJa{9aH6>zidXA
z(TQCL4Gi#q;^K71$Nzd>%I$ApCU;2mS^l`2K)CqR*3<hBo(z;~w716wN^|`z!0YVD
znoY`vO`2mV%XPv9fha|*-Dj}Y1*wC~ho>27vbgya%AZ`%5EMi|AF~7#_4ZK^5rTYo
zoP(xv$N59WLRjt$<Ltq&qMk(Leo2{aoP+bg{96b%H))St6^$19hfG8YYP{_+@W51~
zikG;Ir`=ar&X!MX%}f@K-ark!7%NM8zo)<=m@}NgYRAYcX+jkrh$2RmBX;g9w7_QA
z{muhZjw-&~xuK&#Z18npP4jb?<rS5#Jk_CYMWa-7Y{GMjnh5P!t9OzWI)-pSthi1s
zXjsAvkvOD`t$hUzaqxLUU+aiRUId<W(&YV;dwm$H!Fa67gbPt^Scy7kO%in|jv~F(
zl9zm0rFpwp8?6yeuLtFvn{7~o3T1Kx77J^lX1<}S=IyE>?U2f^u~gm4wwn`OA?9xs
zd#KHC8K>>OAmwKl-@OggTv*PZWq;D}-m7hj76ku+d);*O{C0E7)`En_#U*}U{=&)j
zM*0(x9{0enCx?#8qZF&<Zs!>D+w65&u&mwh98;_|ERTf}rz0{H#nMY~L~A<MQ=aMZ
z7q@Gk)xNY)oTcEMCxr*E#9J9@LF``ajxZvYGMkI0s-;{h%P}g%wbYuFFea~8=_8V)
zH3<%KS+r?kr^RQ&g3L<w79D!r@6k{fzAc^f7<11dp)Sn8B&aMk3CBd#DYlv9+Z{)<
z;H^6Fz1!VtmneT_tNZssB53uLnpQEXkU`2DYgLKP`H$kdOyO)~aZ4(w1t;;B)E0%*
z{j=9>nG%ljL@{Nx5karfEgx)j#zAYWNA|;Bk5<rVdEG{OP)NupQ6*eK6ho&|%TVsq
zfub3jTyGvjH|uqezC;7$_}+Y5?On@IF`5<ytd@}0&hbf)(gZ98#5Vhn<}p&_2z7LI
zH?biFe?J@BMp{i=epM<{)x~b^r<0RVu9w|Zz>6ll{16vtkKZ3jU#^`Y)fR5BUEqJ(
zcgcw=HR_#vBQh^Zl?<!lwF>fo>L}OF6C^awMveG(j8C`vND*LQrLzBYi|d{HRBq&g
zQmlA@S$ut6;7Q_B7W^#>vy7c<)e`MMb+C5xlXAFoo*u}RFp*57NGiR2fFwQS4Q1q1
zac|q4HYg!nGkvfn*~5FDO)oa(tX0uRqC~zRQL2F9W_hIaF#;4z9m#D|8@jly_Aj6R
z<hs_qV7mz3S{IJa75we<^o_haVF-<5&(x2~HMJzVG9vA(*3`WLwV1^>$feL&Xmfu9
z95Aao%(sf*;TddPg*Xt`2-P)ep6uguU#)zfwRGSSg{Z`79B<(I9sMG?VWT`^y6Ky_
zfe)MMhOkycflr4Euox!efX|8f{t(orzI=7uqD<eIfyCiL(!Ac~O)v&a;K}5DF>&$o
zo%Bh60nf_^&?Gxu8`r3AzCK@>tmhYsqr716Zed$qTR1rZA3)!+{G4C{!||5ceQ>R4
zM-YQ*g-)>K=MHkf?DVuVTADNkRD4a|nd@#0Yi^&k+G;n|z~3=P5$^pW$)@fHe}YZq
z<?P)S1K=wu>PX)P+s%KMQZm|p!B;=<NbrL1@n{JajPDZ>{?o~dsp_W1qg)#q-*o~)
zVnd~aHLg5c)4opZBCNo@>tA}2zeuvVGP8)OI(C0^Sx+lnS=2F?cDY=huUiw7xD-Es
z<dZ{7S%r~)aK`?_h<^Diti2^IGx&K)U}Vbb-wgc~&y^al{3Y9{vkf6{bfo2%-ZCEX
zC^8k*lQ%mauJ#1(Wz)zOl_?#FL`DV56F9VqWGY5w_GaedpsDHQK%-4;Q?vq?zM|ES
z)%gpJqv^99JvWQP3N7C)X-za6EXjWuGcT~qaTL(d7;=TrQg4-rhdsSbTmI+5>-NKA
z*9Sc7YHjB)=WHdNJrrq^@+14Chl43;iq192;A(ySL#OGYJ4~y5e-alJWfx#Hhtg$R
zX@i7dW_%X!OxffO=u+{tJ^yN9%QL0o-8em)0s{LsF$NM9j!fWJs>e(?(3|jrJW?n|
zb%EbzB}=bXgXyyM*k-5~4zVFNZHLOuj41Ii;RSr5v?%&eu(`#%u>!HMm=OiK<<ygD
z5CQchTvrNuJ3>V1!HYZ*jA~-KgY(}??`uR+B{9!~w;Ev22WekJv)JSr)Y+~t^@?aA
zt|bgCj35rF8?;dzY9Ol)5S$h8sMP3E|C)Llp+juwNAPyWAbyax2_35-HbIpmE8_x9
z`V-0<lP=T{taT3Vb)JAwFVj{C5md?tD~{OYPt@5|%%4rrAW4^S-x_%X!u?4MF~l`5
z0b4kOyGhs2;=+&E6EducU@MOwt+6&j^#R~GX;Aq4i3||sL2OkqH;S?eUFw0Ii3&W#
ziG`M%y%ZoUn7WWd1g>_yenmVgG`dtt3lBYZNB}~!b_Xs%cy6>O0)#{DMsk#RN^BWI
zP5kjN2zRoT6;y^0R^w#zJ%9w8kHo^p1&n|HERJlEO)!8wqyI6O10>k}VB!pkCYh|0
zhl~>c9$V(x`<;3O#F0~^1C}0yO$VD<9*FTwiD+F4o4iJ~S;=v(2NF=;iMWkiNHt0p
zwl3lz8k&c7Ar<rN)@m~v%S^9r$TQF?<1c0i+WXj#hXA6Ys3FrS0psqU#r8j)!y(Ho
zHbCXHfMD^^b_mq>;!a!2EW5^VVmc6BV;3mrf`!c#5X8J|>>L7V`|+Ew1YQw=I@@-;
zmk=x@lfUg`3^5S=J;!jECXi&`I3B=^3vBoNEM~SX-2(F8uUv|U<W@|Ll7<P^Tv-(u
zElje>^Qp7VJSirGL404&b#k#oqDiW@N_>O3Uc9azHpZj+N|(C0(z>Ss@TMLA4+fH(
zwfNvSAZ$T&njknDxC<5%-ctc73C&;}1H#4A8y$eH<zoqWvup>$3FZB;To*`g$}@=J
zqY!eGdlhP<fR?AO{N^+`g%(~gYQru1c|=_Z-1G)_xXo`C-h%sAjfZiHUWYD6kB$AX
z$qZaOery?;$~cyINbVGJK7XPiLSKg)!4Ra~wIp?~bNoQxO(VVcZFC{fH9fZj@B!!q
zUZdd<W1;VIsJVWia1kZrO|)xM2tNnabA<q^?K~ty2y~iunG{(z`THuflCe3EK7=TC
zJ#%YLh$9s98FgTf@;xC=>d?OF{8?=E{$f(6vl`t0@oM6-&6Xb%!I42copC3xqdtN|
zdeC`I1;EjuhZlsHWNAUtR_@1kEvbeGNpf-rK-p^<8C53*w)=k;_m>mX0X21{@2~}T
z`Sf?g!C(}iIj7p-b=*zRv1NL#;-|1`G{J0@sNLc;Ur0-Vq2X$yI0cpg!Bd{tblwHO
z2DeN(hveKz7lh1A&znhhI0#JTf^@At%_0cdB|Z6{oaR>j!Tmnm$>8)JmL5#DikTf@
z^Pw%o6OC%kn?E9g5ckK$5Br!X%7Wm|VBVZjfY8gu^XC}Ytj9jjmt+un%I7n}Pi_oI
z=~6Y{VTrqXPCz2#*I?zeU|7BZb3MW>HT5T?4l*l}?#`WNNCK<P4mS7K!BV2Uz(c#x
z(>_fEU5@X~H=q7V6&wvPL<@<mKMQ8rVR{qO{DEk@05we_bK*d^{ch?RhESt&HL>r&
zCNBccLq0OM7id7~I;}cD=;@JCfmk2(Y(6^;*5Y8xWTdjC+oVFcm~H}xr!ayfsN=<v
zVY6=lfr;iP^)N0F2o8zgtql!HtnJRVBo)#?nQ)Pj!2TNOHb$Kizyen+(`Y*m0^;Lw
zf)6mHMYgD$gCWM=L|Q^~zuI81WxgRLf0<iZfzV;&{&}hmp%Ws$J+^38qkt5`;@`Tq
z)5wFQ!NjyaOH9Q`4y1FU9<XvO5zODfPEQ@_nK#d-KuQue$o>69Q-Yc<RndZS{J+L~
zoJaVt@et8)1YDu|A>JLAoL6O`Rq(<Ku)UIwfq_}fpZ5Ql`s%2vzUOUFkuK>jX(S}2
zLqG}X?(URM0qIn_K|ngCQyS?836bvZxZK~l$Itg&?|*ykn0RLP%wBlzV<l*PD)WMa
zDJ=UXl^k{=FopnETbC7f2038~P-mQ+QV}-;lQC4|`<?j~3|JZ#ee>CHjV4#!qqupq
zxH=3oyQAdH3c)GZ&c%qk|K;S#<Y1^}&LGfk0xHeiz>GIc|E2?r0n^yo!@i~{d?qd0
z!0*84C4%_!@5RsR!HbyiVzds7lTD3<1T4RpCfAMSiHlG)x$s&Ui(kOvkhpM?171Wt
z_m+uIFpU2crH|J&VD^41#%x*~2Z3c!AlniD5A7AzXUmaruo|LPY>c#QGs0v%p?b@K
zu%i!W0Son{J7ibi#vB>Jg)P_Ft(o8_Eayt5sa68G6cd38kil;V7C*d+#y!C95#L9B
zWUwNvNV+6HFL{kGKXR1j91XK1$@SE41XhS5XPZR8t}lNaIYB$d1VHAhuhneT2g6B#
zL?bsn4upBzj;y&L5*Fz|udG7vaxFEMw84gBga51;T)CzM3<j>lpY@!D_t#JOWEpbw
zXVYcJ+YXC~fl`QEDtcW{4~s+e12fw)Ne@^mc|M9Y^M=9PU{d%#ZpNiJ12n4S+6^BN
z(($}bbJzf7UeyF0hN$oUMOKBU0Xj?Ci|~$#x;M43LS|aWsVDIcCb`M=BHtzx$ickg
zygIijJ?7$YNfpFGy8lYv^dAeGor**-g*7q@TnHRNsEZ)%wCJj@Skjp8Ofo`X;5>QT
z)&iEi@j<^;mYf~#O|GBM@G>w8sMKU=BITIkhq(C@Ct^<5kqgwNja2H0XN=^&SL4<X
zWiKi`jL`l6-$P6~7W}bX{P#fw<Hukssn+(!d$g;t3onT%4>v1F=K=QaOeo>0ap_jx
zJWZhWsaUdjx)oNh;P_gm>+Nin^s|{Yd4g=S18lK6k2;;C+XHO7;W`wYZ~pw>WUP9|
z8PQ5Cn`Tq0))`Dyg#AX38!Cl@Z8rxSFCw=tu7q`v-<M^KGjH_OvO<L9-^LL~>&kMp
z9-Y+gnsmIt?e>-RJTNt%FHTL=dQTuxq^i7bu!ncb-^R5>nWyQa<$FElJ(s4)(yn1;
z|5(4nI+*%sWK~Zcj?^^p=28H@^S6&_{1RPEyx7wxoZnWg7OS0<;<ekJeD1&eHH2L6
z>5>m0W|4HC|Fymj2l!FFm?O$(h|7;?8hYEmVRxyH&V~L@jO0Yxkk_^4OK20AKH_%B
zxogn*Q`BbNeJ=k?-=t+d^z}|wnJAb3G2OIn@-guAAvn<LPjNPro7@EsKFarB7UZtR
z{clAiat+h6PMD&|a3Bev1Fa;LD*_HuGTvBd<B;$LlEtHL%WdNO6=hMy6OJ`9U+zjW
z2+$q%>z(3b%2b=I`7PmT`Q#yiQ<>j|Gk<e9i5yw83`~ZQ#Ya0eEcGNXXTC3{ol$N}
z8XtJ~wZ`_6xyoO?xaI3>-26wqwAR-G3pwNx;gU!BQd#wFwKeM-Y32RD@GCiuaZJo*
zvvd;%!bXre)5m&-f?gZP8=9AvXV&+8X!|`-9`j@5_sa_N!asZ#>Fo=DZD0c%3SRzS
zAKIKo)wh;5>*Oxz`q=TA)O8g@!~Zx|-Ci8*j=Xi?n{US`*2sd*d|8zCuUB!%hz(XK
z&+@NTaah`p<GF4AUCcZB+iiplIu9r^B(X3aviD=Msg)RH46X7rbExZ>aS%sCkX31_
zy|v-i&8syn(>L-q*@#n`X{078Bi@`;>4p4ERF7VmU*I!U)#siwE|s!7&?9{<BR9a`
zU!p{kjuRSn<*~yv1B_cRL!;cvuRdm|<yDXpAM%|}IhIN-@5H`2PK$b;PXc_mV0t=9
zC~o%<_s6+7>E)&Br^twBzSZy)3~<+5)3Oflj#$se8Pu4>nQ7M&_`mRxBN@M6yFn!q
z?|~P?CA_G%2*E<G#Tvbq#}YFqrc`xieE(LKTf6Cl#rR-B+BCg3Zj5wtc3b1aF^Tn9
zz=-p?yQ}%kpc%hVagwa-AOm-9P3ng)T`$d#R;4f{vdzDA9em{7C<x6}=y+%37TkL?
z-aTGumd`HTf{C6B%+9?t!mvLekpuSjed)^37O8tJgy!odjdEVOKVNgfeqlwyC|7en
z8FImX<jB6=JX$V^8IO#yCAHmib-|vxYFJUGHx)?U_Y`C6aj$#zf<4QT-95w2Jumdv
z6U1{}7bOYIbp*uoMw72!$?2Gd<cbm{6F*d{S#vq3))oSPxY&rGeLwio1$tK=`&spH
zHbmP^P4D*C=q4?HSUOpKS^Y=PaEx!>j_u8EtZb5gbYY~sSk}sH&`TQJA@nEv8J<5B
zq^mP_#qKYpeq2QEZqZ5T?}l82yc-Oj7F?SU5?>}JD$?*zsN+VnTjKnE!mU%4p0vmG
zI>LC!z^(aiz3R_2O5tJ9%$2<sDUYA6SnuJLy&5UcpNpkbLjmrMmz+dwDfSuQzk3yH
z45HmZD-yMu9Fq%Y&$UV)Qy)_TUtb#@U0f^VHE%|yI2p-3A{-Fe>6X78=8JZr7|ELG
zTbAjG`ti_8Uu{wAG(o^&vdEu1V?}t_vKyIFy?OC9_khUga{fXxR~Z}>>9<n@0&M#o
zw43Bly&-sv8q$hMdY)-@$8iNRUn8_9dE6~H&Es><W#hR;m}ga;zwurkuq&KDZt`0<
zvlZZ%9$GogvY_dwsoL<j>6Sx}f18^JNhNuOE^L|5z2xg>9U<<+?eELQM#)IwO^@g7
z!<LY?xHOZ*QXwUw@heN5Nbob#uT(9-K#*uW#av(ctTJ$yAmn@W7`iz<bGrAzdjucP
z9J3$_$;<3n?(4@2Cgly{4||uUXbd{XBd52iRqroeLb&a>8JN3uq>JS5sby2@l%z)+
zrG4`BdoCfVIBGeHCuLSMMhIX3h9##No~6H%d!NawpB92sp+@XK{esEiS5-YL4ecs!
zk&{H<p(x(V1YP@0?y<OML%VT_4j*KDWb)o6%H8$HusCe~)LWd5^%D;u((ElGd(!s7
zI<3qzUGGe#I3a{EB9Te!Yt0O~l&?&yw_=<2a9LPITG<9ish|?WB~eoIhMjNo{=u<L
zaRYMp);xPms@N|DW}RFpKD?54Buz|fPpj2oYi#oOc@%Q)AR{E&Ub%XPh8yH{D3ART
zqx;MA?_8R#5+9rJT-W^!X0ldi-6|64@AGFHyW?ePqD*uootU#*WJUX*N3SS5{GHx2
z{qxxQ3Sg(Sa_4@@q@#lOB+!BTuA~enECA{G40HWBe*g|vXW|lsUz<J-4%=t1HD9P4
z!?p~Yl)gy4YFJ&H%<+R_rS~yfI|4mrpsvV}dCps8oF@}p%)Rf3U-Oh_#70eEElig#
z;G#*MIB$17y;lCHS53RsFT7Q-{#pIID$bTh?UZ$W6tmnq1@Zdq;Je$EJAr<G|2)pm
z`*m+WXLVk3zQqtc;am7p{j?*Z^`_UL?sG2TIon?iY>E!ju)(J8^jm^B?b$xI$9q=;
zgDuNvaOkTI$f!+3@azu;BnKV8CXhZk8Sc)d*e^xF5k9tX{L+t!f#VpZ%1DtXIsA+C
zbI_nrdFO?+G@Lr(o$oox9&CzY+Rv0AMhb2i>xis|SA>@aF2rB7y}y!=7@i$t`YOC^
za0Dr5J9)a=dEs<rIY1<fWh2r}d2TXaFemQb^=>?LHDE%JS^ljuMRh&}tGOdwy2JGk
zjY^-OV#KOzVY%$!gJGOkX{NT$oG<CU)*RIDT6<nBOp}mT7iZEaJB*~PKigm>a$SGi
zzn|V;-+V6jdXd=+<iNp=ER42f=Z^^^v3nY%UuMZ3W`u)3|1-zmJnVU1|0Oo3o#D6$
z{@b7l+i8O~V7xLW88oruW-<BvIb=lly&iM8T;T*Ub=k|BPmBbGA{mDlS$7^yuKUDj
zI9jgEtV2lah55p+Q`p3bUowr4o4rbEYzw7vy}Or>$+^4_wxr&2c>WFTaan&-uwIr@
z&oKk>W8E;h8jz@<p79sfMoPeC_OaLcz}UMNUZ^2Nm=&4LnTk>?NDxaogRR}9&&vIw
z=CyTcv1r39v+WT27Nw}8>lB}q)dpgd-lCBQij)T3vl(S_9R{iX=fcxe>1pFew~QLX
z(&stv?Kh<?S+Fhk2j3dTYjf|BTfWH<zZ?_E8#kB}M{aCBe0kwsr}%``Hv7}#H+-3&
zv?9-QI|_ndR7tOH?o?XlK0BDS5Wc(DVt^OONRN4R2Da2o_UCn^UbejY_WLs30B`i{
zW}0N2pX|LSJ~>01j#Boq2^-3M)#P$Jrw_h<=K`8sh^#9ywYnV#(FcB(ky;tua4((L
z(${Bb^xXvNvqT+i_*z;P&$3uwaEdh-3f95hS&YdaB=fzKOCD@f>+}kzv9cPeEk3tM
zNK#}j9)q6q@>TEJ<zeR)U%zoC6Z*+Ms8F6so}ydV>@~Vl;iOsL6}+ItqJP}(T`WN&
zs7l$Ohgs=n85xSQ@$Eis7sKvMF+lfE3g1|+9XV5+#VGHUK<$JC!kP17kO_v}WzSgo
zbjHrRAQ@t-2eb&tzRB4Y#s>zmYN+*epP=~_ZQrorJzNh*{4vu3!%5+Ll2Edk)CZ4q
z(P|O-1-^O5;f-W$`oRaQ$v&zO6FP^L%$swCcpeNEQch3*VU{@&dFPV(emnxR+o_kn
zPE|p4*~|K=z>W*rpBQO^8g+ARBJz_2cl?%TYml2l|FnFzZP)RQM5m`K4_05>E$77I
zd6{D6V27<Lg6J?mSbw|#4kI)Ihqc>=ih;w)zk$O&5^HPObi0vOWL%!sfoFHXSk^q#
zPh^R`1)tR9LB1}l%6XY(U^BbZ|Ijii)YyG(-Zp#qpr-vH9By^8&f%J@2?C5F)^_Cf
zk%lY$sYQ!;{VNyvpZvJbM#5TPMb(inMIh<NK*I9DEMq$yKv#T*^yB%a?d|{`FbWE>
zYM8R_eBPzQjIhxW>Bq^ZiJ|-%tw{O6`$=7nl{HIVkeQS#|3J~>=%wFN9HvD){*PsX
zWV5|-`TA6cW|XyepV69B{li7{FDs;1trHzpqM5YACKk3xs!87uyzCG_#(xJzO9VcB
zRuGa3hq_u8eh^Yo!sZ|RtrzD9`Ax?717E2M1@ms8%1cRg)^x6HlZdDSpzVBSW<$*N
z$NM-fE^RtKy`WIzz|dU!^`vQGm>o2qSX`cL1V=~r4PWl6&))j!O(_K-ISF31v#%h8
zDrb|Rt;!pcQ({ug_QgYI)%2q&u?wli<n%`PJC|*)Ntvs6m1nZ0gEB&;Ih3#b>dTLE
z^AB+I1reLc*(J{IU4LSWmCRTb;wt;LO0hyNlh7@=i<3YW&$kOUDwh5)59R5gkT6$)
z4t>_M{r|_~NvP{6K@d~H+**S~Ny=j`2+(-uhOvESA!X$cK2;DK${YIGtpU=-B`E2-
zN$~1k^g-z@JzI%X9g|@+o)~Oe@0`q6b0|=tZ1F?8?QIUIFdjcm(&IC1J;6uJ@5wEb
zhpr$i;PB!L1MJl>?1yI`P3*%1KvqljUcB-y$F73&OQ>0(lKgZBE{s~v$?h~`cAyJJ
z0(ui`&8-6xQQrRYOP)X{=u}``xXCvJi70>E`7fdVkHxbg_3{Fg>85vmjOc~m;~wB6
z6z8G~QvDg<em$m&4Z2~CyY_RpMuwS)W#ft}ItH6s&_fZyfsxgnsns?T9Ry&l(AEqc
z*S&*LD-I;<+)4*!A)o3|3#b@dgDjpzdMsx6Ad9DSm-oz5kWO=x+`2vpWbr)qJ5mR?
zeW^n-zcEA^nE>cMl^MR8-fX-8sqb3tJzaGC=`hJB#rrfo%XWF-mM5^>VQii=v_Uo?
z|EA!Blm;my$be^lU6z$I_x<KotdA?E%L^Dh6GG>`b~&Nqg30}5yfn0+(^pA;?u1uw
z!?vFgjpw@sQa%9~1gmoubPWM=P#wxwI>AR+Fn+_+ThGmkf8qwWvtHrB#9`00zUA66
z!W!FDQvKjbL+Y>&u#)E6>k(D-W9h*dJ^OZ(Idm&b&=KdC&aB~@+l0R|H(5zwEOx)S
ze(7Q%M%o9^iR#=Bbexub!>SY&mb&2v87P%&#eH9OM4+6ayc~p1*@G~NakfMS31O}^
zi9Qnl^^}CgCQLeb6s`1Tbr9uLX2Ud+7H$8=NgANj43KHcut*H{pmp{hm+}Wl3=dfM
zI!dwBWs&{Uikp=ps&r*;ehd%f{Q9|VDoF5ds-z(R6Cfdso8K%s%aN7<rZ#;S$$@M%
z6i79OhMbgjVV!^IYsnS^6XM6Z*n1yljvi+0v6eltt}vtoDe?Qv<-s3J62tT*oKIkM
zmkHt@db|%ebW*AG!=tjM<!NACqxmbHBn5^FVIFK>mzn8%P+z`OWMaf!?XFTps+h*A
zd}k^j!%;@t4P)=*(yyWovzP%0LBCpss?>lnsZ)BNd8=*@5NNV#V`#E~5+PB~pL&4o
zo$>bt56mC~?8M5EoB~cj1jZ@K21a${t`#SY?NXw>YFaZ(jcg6?-71;?93CubzgpcC
zYCJFr0yLU9sQYZ#urMn*>qU|Zmcr(e`_0M!C3lWz>Kh+`?vnXS;O3DKNGQ1`WHahI
zjzirpn?Lh&Rua6Xwd7v=7#%2BK-d-^UQB(4vF)}xkh!2-xB!f|j0UIQvO!ONC<wEy
zYhY9B2Y6&_L8M@Jv_H)_oKtKp#I|FPlH0g(Be!CES{cSuE1iF3MK~sd1u$}2B{wmH
zGHo@d%sD%lfVuTc-0kcqNC18BZ04~*fW;<^SkqZL)dtM$J6zV`s(UWoLn`%v>7oLY
z`7F|pfZN|5uCR^TDo*HA*4kaM)%Q{SLl{X^Y;Zf60NziDsiQ+lutZGh3`@<$0<^1M
zyQH^BdJ-kjpx<T}QC7=0YOVm&<OuK5IX>(Xd=V^Q=%#Npqy==Z#ydu@p6j&2JUZ0-
zIN@p_?!rk>DvGb~6Hy^VkPPGdy?S_Sm6b?hjQ37Fk^34bkX7f^&J8@L<+E7Fj|HB{
z!5~I4Dxt}%dbw2U;c|y6mkuCJY$Y;p0^U$pwz&-NLO@NC-p#q(KzC?P!vIi;w!fXh
z1{JY(b5f>TI?;g3KKzR1L7=cwiTEy0b>lEKO1~0#8vw(q4-&K?oIbG_^ETv8gA&<!
z#NBf&M!+?FmD>urJ1c9&Diy5Fg(l&^Qet&Z0Jm0wXl&ET^?`Dn)yzku|5|&-LtPuj
zx9KC@fe+i{G$j8J<lq{tiSYGU(ijJ14n=La=kS?&p{WHJvy|okbv3>51a{-$pEk2@
zXsA)CdoHClwdTQ^L5#HoWb~vgAM03UX(wM044*15chjw!5}>6N15p}iG8cP}Zal$x
zhF*Ne;e1VUOtGAPpHIh-lz~q}3zW3;vJ-MhcW&liQI#;$GF(2`f7i&I^vBkY-!$G$
z`o&iumukqx1d<+db>;B>=JgX<#XT>q_gmC!zl4vt<@82PC1~4{ftu2U>Jy0-MRk-$
z;5LQCdkGOe#Vl%CYN5gr4bPe$pQ_`X*!%!R+tZK=Xlk$j71Ql&qhc6{$*j-uP}7%E
zh9}?f9r!b5CN(#HN9dTp(k%_HyW6l#mWwxiZ}Z2A_L(?e4bl@@J#9*fGqrH-l)pZ(
z4@-Gj3G!E;=h;}J3?^&Q#>OD?Ngj6P7kQrXMrbAo9nR$wm+L0qxfaq10l)tG8m3s1
zm;bte=M`rdK%I$SHlGy{diW%7OeQ7>Z&b@VR?qMQX%OCymPe_c;ft8g67Nu<deq@m
zld8clWXJOeTU{LU+a~Y*E)0zY^UhkXjQv`EHj*bgT($@uJX!Zr^+V&!SY~Cfkly_9
zP};GG(05tn<4Ha7o0a`eX;-lKnK~btoXvx1o>{Qdm&AJEF+*ZDEN3?RzRkLB#++Bp
z2l8+0hD8-LP9QBU@9>F6$?0kZlTdG=vxTeA@e&I&d`u%t5+MwN-99G5X};wz5;<BT
zfdA6qwR#1F?YFogmy;FW(i4d&`1SGY9R7=ms_GW;pf7I>on7xN=ie>8kt6(Lo(EjV
zJO+~HC!71*tj?Q#7!ikT%XGR%jnd<qT0!Y<FY6m*5z<2cWE3uGBpXA{K3~HRTp^L3
z+-4sUN1EQqWR$(!aHOWocv<kp+4b3F<X!8kGOM#OJc>-=w@f<D`)@tza`k5gi^}l}
zgfw;wq=pYz1?m>|ujenr%Vd8XOhfXd_kY51>Y2lSn5VTz$E<Frozy#+s7>_C_%aA>
z)K05H_h5Ag@x|-L16i45Lrm!o6!GWVmj&;rt{g9zsZ1T&dd*5Feuh_DAB~hSx&H2k
zw>pvt<(Hoa2CSPF@w32b?rp(tlnlA|)`>*f&k(%r2?g6nt66XxOAsPk-`0PAi{R?9
z8cO}{JNc<NGyR%#-9ZN%yPdpExGH<&N@BBF<x&A9gfz<?se~^#Z%_O3&Vp;(qg4K#
zd3G*k?dv9fSFu9sHAa?RX#cY3C+_N62N6|xrD|hoNhNGarD}qMHeOqfIJhsO#xL@V
z=Dm;6y}KjON$?NauK!5(hP2&F`M#;z7JVJbIX3K3aoqd|>W;yF{c$_l!rkJ!sln>~
zdEohr;N*`AcCA=r-~Z6Esk6@@2Pp587~br6K8jS9xXAc-x@tQ$h@Q72@>k-PS(;?~
zOO&uBwaHZ`-##Z?;i`?>xSA`G@JqAP6u(&+ewq5%(H?%!l5#QhATcbt$7}Mwqh#rn
z@5|kY)+E$N|LBPNQl~0kL{@R<^_RO>T9etg>q-h=?#eYMp#@cD>QRt>G;RM}aWY)O
zd(6g1uQwL1o%8-bFX!sB>k&<$@N*8U_Bxob!7-=Rm0A=8QP&^-8j{R$Me)%R;=Zky
z7F-Sev`?XQ;fV}e>=<Pm!-ox^>0uwZ*{>)({FX3Re!@g{*qv{_>U%VSFNa>1v>O0x
zju6O^^iel#kphzRH@X`7b3YlsB@iaDqc+Eh3{)pHR8Ih?leL7LK3yc}gY91AwT}M;
z+jZ<c?)IYZ@o7beR+l3uxSdC%p#tWMUtxtxE#ZAEUhU&o35tVW*ts#L+rAetXZ(TR
z@fU+0OGQ7w?18N@^G6f^lj&HXND0`9UheNWYm5%sdB5#P9tA2C;Cvv4DfHjl*nb2i
z*k-!(8y<-Kz3XVYumo&34V<NLn<#z>?z-M~ZvZ9GUl}}vz$Ca&q7#AxOh@}{9GEfC
zor%#rz*6+u$B?%5GZUDsprgjfHb0J8z%c)2Y65SFWf^eRfBC#%exJYuhVRwFZI8YP
z@jkHG+u?^h5H;J}OZRM{MtqoJ5%&r$<7<cLO8{iC<LiiJ5nh-qX-_%47JnO<tQFUm
zs(Hvqm@NOQ^dAC%$B5<r!wqZ}puGWaHjOI{qG0DG)$haG{J3D}JD7h+99%|L!vK&m
zB(I)}?YjfgCPJq#6NvF^iT%oHA*d%9hl*z;)%OkH@{3nbdXKV6V5a7Iy@_1z;D*W4
ziJgu7&n(QUrdoUxXm#kU!HH4JH3%!oa%S%+8zJmaGHDf_fQT`Oz#AQEH@{9z0JfDm
zv+DU<Y|w$(RB|`Mdj)(;h-9HlI*>>}O5WQR&)>>}Sp8b$?j0Qiv9d@{BoOGZg2|%D
zcf=A90l@fqp1o`A8wH_fzPX$WiB|&ke@gQGpMHlAzKm{uJus!mEykJiw+Nupkq=JB
z+tMIJI)!*&fE@UpbJ@Z&2?5jHB36&i&2I{JDBH23aQ;>cJTzLe*)!?@ngY3N#Rc_$
z+85F8T8Wi=j6I!yt$RmM&ouK@?h!NUu}1#P8jOa$L~I#lJoITEbUN%Q-*HFKzJps!
z$2`Qp=YfI{GV`h-LI?^3csS>B<xKbU`K^Q_BuJRoK%5SWC<Tpu;eKg)=5Kg0H`Mk~
zFco%Ul$k>QpFAm*P$zJafQaW#7+j3DQSJ7GlIcSG@cVm&p&==NUjOsy-b&CE#PbUr
z0sqgi$qwU0!s>g6zPnh2+DG~O>q>f<iT?c@u`Hm-Sl6<bJR&$8fDs+?-Lj+L<k%9A
znynv!G2owHr1*J%+%G6RKlJ*C`qy93fC+zPeuV>w0O(eAsk=TXaYf%*{oqjqcH~hV
zqrvHqKjPfVROu?~>st}_JBqQ=@njILA+6*FI?#m4!ENJn9ISJ|X-qa9CtA=i*1bq_
z(1h&|dwS1+bPJj7*gotH2j?&&?O3jEc>%>a=h*`_AjZd4&8lL64$*Cqx|!vH4d~CE
z%G6#l+sB~l$9QCI|2l#I<LnjDVZd(a;nCpaKc_piY-s>}Ip@%dO@(-vQwGgjfi&Qv
zw5%=7uMH?%rbsP%-|ZurBV<$f61d%gAe?*T(!h-h0~B7fby-KW`H6v|t8bA1O|#!=
zjIK<Dg1(BAD71sVc0iK1fSZmD^R-356u90oFkw)yb}7CU5u^%{GZTmE`)!!i2QF2S
ze^K8FN_hep^eKzNZISZo4gn02i;Um@^fYkQ;{RtA)OIn?xRL^tZ?iq)`Vve-y)Y=l
zKV<0L*L<LqjgQh1cE;CZz_w4L{=|AOTKpqHGfvjp{!Ihv$GUYO0n14L2Ao-a5RWm`
ziLguq5J7*3nGe<HG=QD#cXJN5z=eYctlD`rNs0k(85qh2(vvC}w3Lq;(hbz09rL%N
z#@oE0aSAtl+6NCTK$eW3Yan0ujyh0p0TH{7I0!h01pU3!!F_f21%{p9a+#R%IcVxp
z_T3>+4nBeK8}_{Tp8=8m{`mi!Hh5JBlo>E1k7-7E!Hg6!l727;vv2XOXJqEe+hHiY
zmmiH2-sm-E;J$;#O%_mkz$3K%vp|snu~@nOIQejKkq%LM#FX=!kUV~|y9Le9qkw@A
z-HvFf51)<&F%#E~{z838vjv6QY^c1}rd9rz`V@=VpCkX<G9R0}d$eMn15FXzk0s{R
zWDx;@(~BLIxxNiRy8y~|6LTmF*!AYZeHgB8f?=ZldlKIygV(rMx}O55Q^P>dNEf1C
ze#i#T*bw70fX!)aMn?@7?38VGZNXqc1bC=c!0t<6`-6G;o{eZn1b_VQK7oiji2}Sf
z+s`4PVDrLU+?mQ;`6UXJK7U6Ajp}|jaJ|8e<{n&sb-YaqG)hhJ{p-7N{{QKgj*LwP
zmo4haz8sx<1M>gg4aFY$A;Ihr$vYYl2kp4gs-!SJ5K$k$!@QLW-$aCE2?TpYpBFSP
zl$0g&=$r&RJcm0-_n+e(_N;Sb;PKU4@iXA~?D!pGkK}g&=+^+CnL#&0-`4?;3`YpX
zAdgTOtbbr)jOKR19tLa&SN1qyGY^qH@&mdI-N}AG-C@sJ5QykwSCcz<GL&v_@;|S$
z9UJQB*TEY1xO;9gH6k(w1A}6PnQ{4H5<r^75`x}bi3C2ihTMGLU*A@P`2QK)R0g|e
zs&4m3@KJG&QLXzKW{*h9=0{=RxrX2B-_FPIALJC3>keQzxl1~3B4FDLczX;EPEo;}
zI;Fl^0Zr2wECEadY^V;Jb#N1A;e@%<VfSNw23$74Z@B%ZLx}r|1GWYoY(h;11^1(D
z5(0RbhRjwXdC`Mv2_cmwTgL%lldYL+1+fu1QBnIBXF|xWw)v|V*sA}-fHwy4uD~qs
z5HA$B19hnkxi5sn7Gtf)^Qb{s=W0p!L0tyKOEw_($s2Am*AN3Bh*~+94Vd=-^yb_X
z#6)L;JL9GCnPOp5vKNoP|3iBGawuZ>8eHA%+O7qltr6cp-d%bFrm;bj!KEM=f5rm+
zVerXmF}sxt=6ZH1OUBVX>g#bJ*aq#bZ9;vI@#xynZ}^%2#kj*yp#Km&Ol(m277R-)
zmn*LKgE*`{Q}~$}5Q2`JE*B`ky2J*-$hh?gQ0IYuk<<~30Ct}#wy2W#VD;-Ja#;BS
z>kAbAe}0gHi|c1uehOf-z7$UUPpio3pCC@KO1d*>?)__FU$w}MV-3Koj(KE7%L9D|
z1eyV=m^UT`itda?{sCA3cbWaVFc5559egh7^AF5mExIjjl?BUp$4N%D@ihflR96n{
z<}$&Sa`}cS^51oOXzEwW7^4W>Z}8GOV*o9rsVKwxpTk<^cSd0G+ouq60beS9sG&t&
zpskCh6(s+PeDa@dGSCDK8`2uE53c;ae|Q5PM06+%0$wT1C+iMBc#LnsK1cDY@|Bw(
z3YfWDGrarY5sHo9djHaS=VAN&6=;+QCF7<n=<XqEe<+Bg!I3&-0@Uwd!}W9<;_e8s
z5g=WXf$i#G$=8Pie8@R(;1@Q|HUJ)<uLBH3nsxrw4yg{8`*kAV?59zY`{puQpslz(
z-g=h(@BX58KWzuzC_szPJDqHU?YqJB+y^B?y9zkCVQ?>t5TDTzfH)1Zsr8OR!Oqjc
z-%vh(YXGZ#5a`$F4}hicd)Wlt|KjWNIQ7bb3p|4@Nf0?wDFyV91^=uTt^clXN2aTf
z3Wyfj$2Yei8Xd>K13bVfdbO|~@ckgLz7?Jcm4qc?Hn%v?HUG7f0}IKXEqY2=1Eknz
zEPo5;)+7dV?|)TGLdU=QHX2N%>xwYEbZ9u(0&QcA{^ghGn2739>AwfY#(VFK;}zg>
z4%J>>OaoKpV~m^e`97FG*E`k9wvQy><E#=Jv3H9Xa2_tx|B5B_93t@d?m9`u3cL#0
zlM^!kwJCwbY_9-N5T}?$PrC^C{_wxvt@vMZ+w~ta!a}@rTdMzR8+;iat9~pd0parc
z{gDV99PZCpN`r~;gH^h>U4#tCog#k><cxprmc6tg0l_*}t;HL{1Yev(qMq!)*_?ZW
zYm$HOmI-0!{~FY`$aUxe(B4gSJ5pV19>p2&T)oPb^Eg=k2)vv(D2OYWehhpfsH4v2
zEZAP*_~~i`?b;uu>Wk?t@EK96IuokO-b?dUc4B*x=4(nlbR%|RFI#)!FBKt3dBiMv
z@!WjhEfpCdPcJ4{L{wj0?$NTieBDv$PDWL~R!+5g)LOnVW|m`7=Z@}GN5a=hytIGS
z)0>p8StdgqDT%63m7H-Qs%x7X-YYnzd0?Osq!qM;O`v0KTs>&TQZG}bc`{Yq3rrXr
zSIYns+Ew$j+=mg=to8Ff#&}bjw$X;wPug%;saWd=dW^||9qLsn+jHS6z!6L1Y7}7N
zL)Cou&P2gDK4*)marK!M3qDOo^cx&aqUxG-E0*tHh_sWn@fi|JXS6$w_4Mm2Utp=I
z-cZ{8Ni61lQS<mfYxQZB@7s+h!`JzI;nCZ{T4%E=xx~G3lLD2{ou|Vud90(UZ{{3Q
z-q!>ZrWIX5Hy<A~@@@DCHXC;_t*g+~b}kZR8~uK4--+B32F_^jQAph2Xx(J{prH_5
z#&+5oS2Xc;pqt}bTZ*)KDMYP2C#FRs@v?^-b$A+0%&+n08gIQJKngk5&&5IZX5R3@
z8bJbG#bguSG#0%_cEF$Vo}jD$`5N~$yMac`L3Mx!^8Gh6J0uE{usQaEmGeY!n<d}a
zub>lP5uFny)>7_jUbOXdm1qP1Zn9xtud9U5z61oC^Bli|<O9n|6(l}3Ab3CIEu?hM
z|BQp(aXHSyPE;cUFwDaHdW7Gn>&7lesjFZ$0w1uO%lgD|uMQ40aV8|Vjn>DO($D99
zmB=pzG-ka)@`w(Y(+{#~pzZ!eP7;<p?xY=H_8G9=Ml;QSg1-i^o_0fhGxPloU{(mP
z+MFAuw=KJV;6`@K_a+tmyJCI%sUo!3&k*Dso5$}$W{kz)DMFv&y;BpV`wgx17^rCW
zJ-XtwDzjeu;2*xBCR=#dIL%aWG-v0PILxb9sDa3gmaQ8WyDBkVY%2VORwKb=ZvTla
za>4;a^EcO$mfm7f_MLHNUvvtMPjZ{|)mKXUmwS{R0Rh$S^tnj2<E7kEGg`W`>f0B`
z_lA$!T8*le<JM;FAxvh)+)W$qeroj-0^R}NKZ~`|U^}#v$>~p1&FDcWU30`wmYsK(
zt2}zSsW^i*luvDNi<zXY2779IbjdU@w1z6TWaI{e<?l)I7SBrGznH2q@iy~z(edLE
zSP!fCuug<UQO?h$X|36H;;^CYpD0&|v$IEWYN-}~i5l!4s*`OQ@VrQJaf9|_J_{pi
z60?g;n|ReIHKK0}O(ZYU?3aeRkD|JTN@x5{%Co1O9yFI~HfAN$%!$Lxoo*@VD$JcS
zO<o5}!S!EzSUd}Ciz)IsF338mX<e1N)q}TjSzZ^3t4~|tbWK{)J-3{`gX<Qf)O>6i
zgS2!eqAjlM-+Coa1WI=FvK@UYeQJ`xExa;C?{Q~eXDa^&3i-6qL2kkH#!7-hZ$F|5
zfuDbgG@B+7gCo`zvO1`OIeqx$Xt0lB>#jTTV@HP<-*RHKNEhwz%vR_2gv6(4BRlTf
zan`2LJMshOHao}buH3-OkN7OaK{s`N$$iduSRx|DvFcVgsfwvGH_O86ZCO9g7pVd_
zzc>8h5mIZq^?Ur9`|24Y)ILMmw^51;G9&mZ2>oH<-C5x+PKQq01jVgy+ygW=ziqVA
zWUexsJ>K;85{J0%gTq}0RwPblg8B%bW7mx*6Fxn;zgA)Y*5^dlpC=uy;!0;(wwRde
zaEcr*p~)oe$Dw~tRy=}@SGpQ<N%`P^_H+p^Q{=ue%7AqIJ#lJ@lt3UagUjja9;tpM
z%zPvKsnv?1VXF%jj`e^T(=X_hx$B&2!=qAVLQoT4RI+Y<>l{1wd*9##Dh8F&#}1Lz
zpU7}@!npVB#OXLb6r%Mrwu<S9%y30~4V@;e?Z=2?p|QpN&+EZ$t=UY2Vn+)v{euWU
z8_)i3U4@D4orHLY1lcdLM+L8a_jP4$h5P%hzcBhKrMo?0Ul(IPCML|hZ>E)32BHnX
z)SA;x*QKrp{LkK)^kAN@qh)rqzCwsa`>D}$IHD3%8tDN06<}(wac{fn<jGp=d9JMY
z02ygWwW815?-N4=I6Rz1>83#YRraXf;=OW-#*-(XB8l;a0*=<$qa@$9x8&$}qp2u;
zTOLHt8KZ)@MT#+O%rqNp!u(unR@Z~SCw%ckQE(3Zcr*wPPL=O^C=vbQ%}euK5BBmo
zc#I4<!*4U=5@bdc62|xuw&%bHTQHr-Lqm6PBEdZ@_^j(kWt%W~)$38GJ{>JrMfR>+
zo2_|NJ^6(4qkbE^!HYvEw1)-v{z)X|ANZWTXK*;ZvKUgCF`XAM#W&{VpZQ-)&Y-|C
zjmmtd`h(bcK?+Qp%34Nw5PUAdfs>m~chu;eC0#x~CPZL(9xAsu2(wd_O*;q0B*<mD
z>PC4PN<^R!=a_3lf!Gq-%Zi^E_`1{HxLQ^+*>{wHh~#@-h-CYI8V3wy$uIl&SjQ<{
z@>5DrC7Riuon|rGal#GE*Kc>D^*!G!3OF^oEop)63|31$AN!qFoEOrY8zPB+4)c2J
zQiLXEB@lf^sk>{)_0^gxj~N?WBO%rg!51zBp?WNCqbI_kb<fC|8&RD}5LZ{ZtTh{#
zHLPKwvpT+)H>8j>CW^Y3?)WMEt?xAv>JrJ8v29}vF=2zVe}eNWLQmTluVja69zE&f
zqj$U21-I-^KSfa}afEf>e_D5)9uJF!M5OGAE~CTom`4q53@v;n<L2UL+mB1e1l(wB
zeb6%K3ppqX_+s%8*ao=a)Jr`7j3erW{b0-=;5TwsVN?aRBXE@KCQfFQCP8k~Kj-yr
zWU*mMDt>!#BUo>KSY)Ks$L}BjOH%5`g+S7rbbd6GQxk_4au7esSSf+|w1&KpV4h<O
zW-yf{Dip#Tkl;uf0jLt#Y_L|aMSlbNAgslp-gUGE<ZetLiT4>SosZo%Nr&dg$++3;
zb@$YgQQ0Vu;srU=`(~HO+FD+2^Q>%j0(p>ez(muo@yzxlh8W*HBb2gT<8uuGoGzCi
zR=9`%GwUm0nr9`3<_}q}4G<IW56jQwL!<`=pjP+@4DJ0No}h<}<p6mj=<UP%+zm5S
zi(xi3IUbB(%-66{Tl7B@fon4D-B&>I_|lcac|>NS;$EBMp*m}hhp8^QL|eLmdFqF>
zG(h%><y+<;)gR2<0|Yn%gE9+YbKA8TeEgX#-pT=34koxEcl?_DN%o2%YxWIS@Kbt9
zw^oC;NJHC&7<}ABR%wb2m^*GZ!~w$LJ*>DZ{Ju|og`@T8np4ewb<O7k=TNq;|MbH|
z**aV}^V*oW)mGhTx`n@jrSs~fTeoxH_XA6#+#)80HJGTb*O-Jo3t@m^^{uS_8K^+=
zc{t>%z2-HLMvW>*xW?V;MuU63b%-e;2n`{r%tMeGBSFNj9Axl@|B_eNXpPhNec#e(
z!ccWh6&ATQPkJ@CS*iV^Wkn4Kfu3LjtZf3`A#HXZE$PF9HQyT^*d}Awtc4=2D8=LR
zyl26KzAV<bH1hOtDMcsElL&p^_bkP7o6hFLVI?vSv4g*JRuOP3$whZ>AOMI##z)r2
z!0K>*ZAH_DHsxqUW=iKD6=**#5mpf6Zu0X8JE(jp#D*7!-OO#%0A%kIFe|~5Casa>
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
PXYildUunut`0o7=`Y)TP

literal 0
HcmV?d00001

diff --git a/core/src/main/resources/bedrock/creative_items.1_21_60.json b/core/src/main/resources/bedrock/creative_items.1_21_60.json
new file mode 100644
index 000000000..52eda075b
--- /dev/null
+++ b/core/src/main/resources/bedrock/creative_items.1_21_60.json
@@ -0,0 +1,8917 @@
+{
+    "groups": [
+        {
+            "name": "itemGroup.name.planks",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:oak_planks",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.walls",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:cobblestone_wall",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSLY2XwCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.fence",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:oak_fence",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.fenceGate",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:fence_gate",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWRAoluQCgYAc3RhdGVzAQsAaW5fd2FsbF9iaXQACBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.stairs",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:stone_stairs",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.door",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:wooden_door"
+            }
+        },
+        {
+            "name": "itemGroup.name.trapdoor",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:trapdoor",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.glass",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:glass",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "itemGroup.name.glassPane",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:glass_pane",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.slab",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:smooth_stone_slab",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.stoneBrick",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:stone_bricks",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2JyaWNrcwQJAG5hbWVfaGFzaGAiQu8VWVJRAwoAbmV0d29ya19pZH2DjXUKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.sandstone",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:sandstone",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPsXMaQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.copper",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:copper_block",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.wool",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:white_wool",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.woolCarpet",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:white_carpet",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.concretePowder",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:white_concrete_powder",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.concrete",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:white_concrete",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "itemGroup.name.stainedClay",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:hardened_clay",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.glazedTerracotta",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:white_glazed_terracotta",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "construction",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.ore",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:iron_ore",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "itemGroup.name.stone",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:stone",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.log",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:oak_log",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.wood",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:oak_wood",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.leaves",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:oak_leaves",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.sapling",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:oak_sapling",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.seed",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:wheat_seeds"
+            }
+        },
+        {
+            "name": "itemGroup.name.crop",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:wheat"
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.grass",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:fern",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.coral_decorations",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:fire_coral",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.flower",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:dandelion",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRhbmRlbGlvbgQJAG5hbWVfaGFzaBJ3bEUi+Nn/AwoAbmV0d29ya19pZBjjC44KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "itemGroup.name.dye",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:yellow_dye"
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.rawFood",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:chicken"
+            }
+        },
+        {
+            "name": "itemGroup.name.mushroom",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:brown_mushroom",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.monsterStoneEgg",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:infested_stone",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRgAbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lBAkAbmFtZV9oYXNoxnRcHDu4zqQDCgBuZXR3b3JrX2lkpfcnsgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.mobEgg",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:chicken_spawn_egg"
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.coral",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:tube_coral_block",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.sculk",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:sculk",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "",
+            "category": "nature",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.helmet",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:leather_helmet"
+            }
+        },
+        {
+            "name": "itemGroup.name.chestplate",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:leather_chestplate"
+            }
+        },
+        {
+            "name": "itemGroup.name.leggings",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:leather_leggings"
+            }
+        },
+        {
+            "name": "itemGroup.name.boots",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:leather_boots"
+            }
+        },
+        {
+            "name": "itemGroup.name.sword",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:wooden_sword"
+            }
+        },
+        {
+            "name": "itemGroup.name.axe",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:wooden_axe"
+            }
+        },
+        {
+            "name": "itemGroup.name.pickaxe",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:wooden_pickaxe"
+            }
+        },
+        {
+            "name": "itemGroup.name.shovel",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:wooden_shovel"
+            }
+        },
+        {
+            "name": "itemGroup.name.hoe",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:wooden_hoe"
+            }
+        },
+        {
+            "name": "",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.arrow",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:arrow"
+            }
+        },
+        {
+            "name": "",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.cookedFood",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:cooked_chicken"
+            }
+        },
+        {
+            "name": "itemGroup.name.miscFood",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:bread"
+            }
+        },
+        {
+            "name": "",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.goatHorn",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:goat_horn"
+            }
+        },
+        {
+            "name": "",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.bundles",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:bundle"
+            }
+        },
+        {
+            "name": "itemGroup.name.horseArmor",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:leather_horse_armor"
+            }
+        },
+        {
+            "name": "",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.potion",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:potion"
+            }
+        },
+        {
+            "name": "itemGroup.name.splashPotion",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:splash_potion"
+            }
+        },
+        {
+            "name": "itemGroup.name.lingeringPotion",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:lingering_potion"
+            }
+        },
+        {
+            "name": "itemGroup.name.ominousBottle",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:ominous_bottle"
+            }
+        },
+        {
+            "name": "",
+            "category": "equipment",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.bed",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:bed"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.candles",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:candle",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.anvil",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:anvil",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkqXzNjwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.chest",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:chest",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.shulkerBox",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:undyed_shulker_box",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.record",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:music_disc_13"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.sign",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:oak_sign"
+            }
+        },
+        {
+            "name": "itemGroup.name.hanging_sign",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:oak_hanging_sign"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.skull",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:creeper_head",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWTHBAAACAQAbmFtZRYAbWluZWNyYWZ0OmNyZWVwZXJfaGVhZAQJAG5hbWVfaGFzaCvAGFMS/RqVAwoAbmV0d29ya19pZEfskXYKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.enchantedBook",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:enchanted_book",
+                "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
+            }
+        },
+        {
+            "name": "itemGroup.name.boat",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:oak_boat"
+            }
+        },
+        {
+            "name": "itemGroup.name.chestboat",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:oak_chest_boat"
+            }
+        },
+        {
+            "name": "itemGroup.name.rail",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:rail",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "itemGroup.name.minecart",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:minecart"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.buttons",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:wooden_button",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.pressurePlate",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:wooden_pressure_plate",
+                "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        },
+        {
+            "name": "itemGroup.name.banner",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:banner"
+            }
+        },
+        {
+            "name": "itemGroup.name.banner_pattern",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:creeper_banner_pattern"
+            }
+        },
+        {
+            "name": "itemGroup.name.potterySherds",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:archer_pottery_sherd"
+            }
+        },
+        {
+            "name": "itemGroup.name.smithing_templates",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:netherite_upgrade_smithing_template"
+            }
+        },
+        {
+            "name": "itemGroup.name.firework",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:firework_rocket"
+            }
+        },
+        {
+            "name": "itemGroup.name.fireworkStars",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:firework_star"
+            }
+        },
+        {
+            "name": "",
+            "category": "items",
+            "icon": {
+                "id": "minecraft:air"
+            }
+        }
+    ],
+    "items": [
+        {
+            "id": "minecraft:oak_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19wbGFua3MECQBuYW1lX2hhc2ilMDLR92rQ4wMKAG5ldHdvcmtfaWS2GotyCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAwAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9wbGFua3MECQBuYW1lX2hhc2iumBkmFGFE8gMKAG5ldHdvcmtfaWSo8TFgCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3BsYW5rcwQJAG5hbWVfaGFzaLrrAKJqV2WFAwoAbmV0d29ya19pZL+e3ZAKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAwAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9wbGFua3MECQBuYW1lX2hhc2iBM3k4T3FAugMKAG5ldHdvcmtfaWSXUmBCCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAwAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9wbGFua3MECQBuYW1lX2hhc2g60edJxO5/aAMKAG5ldHdvcmtfaWTUXozECgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaAr64wkQ9cA7AwoAbmV0d29ya19pZFbMeR0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3BsYW5rcwQJAG5hbWVfaGFzaPvLtcEA0F8xAwoAbmV0d29ya19pZEvnlCYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9wbGFua3MECQBuYW1lX2hhc2hNIvVh/lVW7gMKAG5ldHdvcmtfaWQTXpRoCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX3BsYW5rcwQJAG5hbWVfaGFzaDbrgXmqzgxDAwoAbmV0d29ya19pZFpM6OoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19wbGFua3MECQBuYW1lX2hhc2gYnjNz7SCCjgMKAG5ldHdvcmtfaWTi8ySSCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_mosaic",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWMECQBuYW1lX2hhc2izSEgiMKOp/AMKAG5ldHdvcmtfaWQZ/p8xCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fcGxhbmtzBAkAbmFtZV9oYXNoJc5IKqNXJnwDCgBuZXR3b3JrX2lkwtJDdQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_planks",
+            "groupId": 0,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9wbGFua3MECQBuYW1lX2hhc2g3yGXEWhe6LgMKAG5ldHdvcmtfaWStTABvCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cobblestone_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2hZu/xE7lYtNgMKAG5ldHdvcmtfaWSLY2XwCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3dhbGwECQBuYW1lX2hhc2gHUQMwwFQeNQMKAG5ldHdvcmtfaWRzPhG8CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:granite_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLBAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfd2FsbAQJAG5hbWVfaGFzaE1GmM5AU0qUAwoAbmV0d29ya19pZE/UoPUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:diorite_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMBAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfd2FsbAQJAG5hbWVfaGFzaF27l0QvdM8xAwoAbmV0d29ya19pZJe7jOwKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:andesite_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNBAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3dhbGwECQBuYW1lX2hhc2gAL1Vay0kZjQMKAG5ldHdvcmtfaWRJGxdvCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:sandstone_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV93YWxsBAkAbmFtZV9oYXNoYL2gu8a6HfgDCgBuZXR3b3JrX2lkHrhRjgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVBAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfd2FsbAQJAG5hbWVfaGFzaLAUUdOlo24MAwoAbmV0d29ya19pZI66BqAKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stone_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2hQegufuP6vjAMKAG5ldHdvcmtfaWS4AsOKCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRBAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3dhbGwECQBuYW1lX2hhc2i680zzUekp+wMKAG5ldHdvcmtfaWTQTaHPCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3dhbGwECQBuYW1lX2hhc2gGJFLNjfgSCAMKAG5ldHdvcmtfaWSc5iUZCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:nether_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja193YWxsBAkAbmFtZV9oYXNoAxb5f2yQ5MYDCgBuZXR3b3JrX2lkAECPDAoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_nether_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWBAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBOtwkokUt3cAwoAbmV0d29ya19pZJykmZUKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:end_stone_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTBAAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja193YWxsBAkAbmFtZV9oYXNoOsr1L9kJIAMDCgBuZXR3b3JrX2lkjuYlYgoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUBAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfd2FsbAQJAG5hbWVfaGFzaDO5IGrYZu1/AwoAbmV0d29ya19pZB4nLYYKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:blackstone_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaMP8XppUSU1RAwoAbmV0d29ya19pZMbeBBsKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfd2FsbAQJAG5hbWVfaGFzaP6SwV08YwzAAwoAbmV0d29ya19pZAJLsz8KBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaBBIDZbHxiEzAwoAbmV0d29ya19pZEbLV8cKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3dhbGwECQBuYW1lX2hhc2iECY5oKxeT+gMKAG5ldHdvcmtfaWRCnPrFCgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3dhbGwECQBuYW1lX2hhc2jz7N+PeuEXgQMKAG5ldHdvcmtfaWTqw4s4CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:polished_deepslate_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV93YWxsBAkAbmFtZV9oYXNoHxjTdj9pevMDCgBuZXR3b3JrX2lkIvBYYwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja193YWxsBAkAbmFtZV9oYXNoEs3EQrjroyEDCgBuZXR3b3JrX2lkwlrCGwoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfd2FsbAQJAG5hbWVfaGFzaMyeeu1IRf03AwoAbmV0d29ya19pZDkIrosKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:tuff_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfd2FsbAQJAG5hbWVfaGFzaIL0IyNCOsonAwoAbmV0d29ya19pZJW4T5UKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_tuff_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfd2FsbAQJAG5hbWVfaGFzaJVZj6QYWXUrAwoAbmV0d29ya19pZLU7dooKBgBzdGF0ZXMIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9lYXN0BABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfbm9ydGgEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9zb3V0aAQAbm9uZQgZAHdhbGxfY29ubmVjdGlvbl90eXBlX3dlc3QEAG5vbmUBDQB3YWxsX3Bvc3RfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mud_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja193YWxsBAkAbmFtZV9oYXNov9b98ATpUSwDCgBuZXR3b3JrX2lkH/1WZQoGAHN0YXRlcwgZAHdhbGxfY29ubmVjdGlvbl90eXBlX2Vhc3QEAG5vbmUIGgB3YWxsX2Nvbm5lY3Rpb25fdHlwZV9ub3J0aAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX3NvdXRoBABub25lCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfd2VzdAQAbm9uZQENAHdhbGxfcG9zdF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:resin_brick_wall",
+            "groupId": 1,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4BAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlc2luX2JyaWNrX3dhbGwECQBuYW1lX2hhc2iUkvfZlSl8+gMKAG5ldHdvcmtfaWSYW394CgYAc3RhdGVzCBkAd2FsbF9jb25uZWN0aW9uX3R5cGVfZWFzdAQAbm9uZQgaAHdhbGxfY29ubmVjdGlvbl90eXBlX25vcnRoBABub25lCBoAd2FsbF9jb25uZWN0aW9uX3R5cGVfc291dGgEAG5vbmUIGQB3YWxsX2Nvbm5lY3Rpb25fdHlwZV93ZXN0BABub25lAQ0Ad2FsbF9wb3N0X2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:oak_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAAAACAQAbmFtZRMAbWluZWNyYWZ0Om9ha19mZW5jZQQJAG5hbWVfaGFzaGEmid7AaCWRAwoAbmV0d29ya19pZDvPEXcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:spruce_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAwAACAQAbmFtZRYAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZQQJAG5hbWVfaGFzaPQCm+aX1ZQeAwoAbmV0d29ya19pZD1QUEoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:birch_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AwAACAQAbmFtZRUAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlBAkAbmFtZV9oYXNo6CJ2ATpANfgDCgBuZXR3b3JrX2lkmCUV2QoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:jungle_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAwAACAQAbmFtZRYAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZQQJAG5hbWVfaGFzaOX4cD9uAmsdAwoAbmV0d29ya19pZHz1VxkKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:acacia_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AwAACAQAbmFtZRYAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZQQJAG5hbWVfaGFzaGjn+RlKVDH6AwoAbmV0d29ya19pZNVGubwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAwAACAQAbmFtZRgAbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlBAkAbmFtZV9oYXNoGPj0gCgM0c0DCgBuZXR3b3JrX2lk2w+gEwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlBAkAbmFtZV9oYXNowwAd7tPu9bsDCgBuZXR3b3JrX2lkKEcd0goGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cherry_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAwAACAQAbmFtZRYAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZQQJAG5hbWVfaGFzaFmtUfHfTxcxAwoAbmV0d29ya19pZPCBxAIKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeBAAACAQAbmFtZRgAbWluZWNyYWZ0OnBhbGVfb2FrX2ZlbmNlBAkAbmFtZV9oYXNobM05DVVUSxsDCgBuZXR3b3JrX2lkS7udAwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:bamboo_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19mZW5jZQQJAG5hbWVfaGFzaCKRbxfXsfkiAwoAbmV0d29ya19pZJNXKFcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:nether_brick_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAAAACAQAbmFtZRwAbWluZWNyYWZ0Om5ldGhlcl9icmlja19mZW5jZQQJAG5hbWVfaGFzaA6030ngawxcAwoAbmV0d29ya19pZLnjLF4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2UECQBuYW1lX2hhc2jhUhKv1HGj9AMKAG5ldHdvcmtfaWR3OH3OCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_fence",
+            "groupId": 2,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAgAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9mZW5jZQQJAG5hbWVfaGFzaJfb3/YuKmOWAwoAbmV0d29ya19pZCpaGC8KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAAAACAQAbmFtZRQAbWluZWNyYWZ0OmZlbmNlX2dhdGUECQBuYW1lX2hhc2hTxpjEDmRzAwMKAG5ldHdvcmtfaWRAoluQCgYAc3RhdGVzAQsAaW5fd2FsbF9iaXQACBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:spruce_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AAAACAQAbmFtZRsAbWluZWNyYWZ0OnNwcnVjZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoanTVB84HRbkDCgBuZXR3b3JrX2lkJL+vZAoGAHN0YXRlcwELAGluX3dhbGxfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmJpcmNoX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2jmfPklI8azSwMKAG5ldHdvcmtfaWSlk1JPCgYAc3RhdGVzAQsAaW5fd2FsbF9iaXQACBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5AAAACAQAbmFtZRsAbWluZWNyYWZ0Omp1bmdsZV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNobYVQkfBomIcDCgBuZXR3b3JrX2lkjQubHgoGAHN0YXRlcwELAGluX3dhbGxfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7AAAACAQAbmFtZRsAbWluZWNyYWZ0OmFjYWNpYV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoZnrLUx/XSekDCgBuZXR3b3JrX2lkoGH3cQoGAHN0YXRlcwELAGluX3dhbGxfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6AAAACAQAbmFtZR0AbWluZWNyYWZ0OmRhcmtfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2j2PTvdJJHcVQMKAG5ldHdvcmtfaWRS6WN3CgYAc3RhdGVzAQsAaW5fd2FsbF9iaXQACBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1hbmdyb3ZlX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2i/kOhBKiI/dAMKAG5ldHdvcmtfaWQ5AL3/CgYAc3RhdGVzAQsAaW5fd2FsbF9iaXQACBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAwAACAQAbmFtZRsAbWluZWNyYWZ0OmNoZXJyeV9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoKWLgCk0z+PsDCgBuZXR3b3JrX2lkWfIkRAoGAHN0YXRlcwELAGluX3dhbGxfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfBAAACAQAbmFtZR0AbWluZWNyYWZ0OnBhbGVfb2FrX2ZlbmNlX2dhdGUECQBuYW1lX2hhc2hCrHUtEPI3BgMKAG5ldHdvcmtfaWSO5QLnCgYAc3RhdGVzAQsAaW5fd2FsbF9iaXQACBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJhbWJvb19mZW5jZV9nYXRlBAkAbmFtZV9oYXNopH1JrUgwdIADCgBuZXR3b3JrX2lkriggcAoGAHN0YXRlcwELAGluX3dhbGxfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNyaW1zb25fZmVuY2VfZ2F0ZQQJAG5hbWVfaGFzaHE3Gfd0Z2d2AwoAbmV0d29ya19pZGaT7SQKBgBzdGF0ZXMBCwBpbl93YWxsX2JpdAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_fence_gate",
+            "groupId": 3,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAgAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF9mZW5jZV9nYXRlBAkAbmFtZV9oYXNoy0oIBjDIG4kDCgBuZXR3b3JrX2lkO8ur6woGAHN0YXRlcwELAGluX3dhbGxfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQgAb3Blbl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:normal_stone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAQAACAQAbmFtZR0AbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hAEktZZOkGIwMKAG5ldHdvcmtfaWQeH1ALCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX3N0YWlycwQJAG5hbWVfaGFzaNRjqVC5GRVDAwoAbmV0d29ya19pZDcCv+MKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3N0YWlycwQJAG5hbWVfaGFzaMVSTq5z9n1RAwoAbmV0d29ya19pZFIfrhkKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:oak_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19zdGFpcnMECQBuYW1lX2hhc2jk/HFzdXy0FQMKAG5ldHdvcmtfaWQJjyzBCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9zdGFpcnMECQBuYW1lX2hhc2iznygw7uBPBQMKAG5ldHdvcmtfaWTv+is3CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX3N0YWlycwQJAG5hbWVfaGFzaPfhbL619a3GAwoAbmV0d29ya19pZFyPlHAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9zdGFpcnMECQBuYW1lX2hhc2jodJsHUbOVxQMKAG5ldHdvcmtfaWR0z5d4CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9zdGFpcnMECQBuYW1lX2hhc2h3x1NmD43IqQMKAG5ldHdvcmtfaWS7Jwz6CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX3N0YWlycwQJAG5hbWVfaGFzaMfwkbYPbNmAAwoAbmV0d29ya19pZCmBYKAKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX3N0YWlycwQJAG5hbWVfaGFzaNpUDY+uGMpyAwoAbmV0d29ya19pZChzUAsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9zdGFpcnMECQBuYW1lX2hhc2jMtr0v9JY4zwMKAG5ldHdvcmtfaWRQwq31CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX3N0YWlycwQJAG5hbWVfaGFzaJsYBq7wfPXaAwoAbmV0d29ya19pZE1U5UIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19zdGFpcnMECQBuYW1lX2hhc2jFOzWL8PalKwMKAG5ldHdvcmtfaWTVPh42CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_mosaic_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc3RhaXJzBAkAbmFtZV9oYXNoNLPiveSHPaoDCgBuZXR3b3JrX2lk44PHjgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stone_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAAAACAQAbmFtZRwAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaN6tQViRo5cwAwoAbmV0d29ya19pZDMyMgIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAQAACAQAbmFtZSIAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaIB/Zv5YBPuYAwoAbmV0d29ya19pZANTOsMKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:sandstone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAAAACAQAbmFtZRoAbWluZWNyYWZ0OnNhbmRzdG9uZV9zdGFpcnMECQBuYW1lX2hhc2hOyA0BoYUOPQMKAG5ldHdvcmtfaWSV/834CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwAQAACAQAbmFtZSEAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoB+CuCd8Ruz8DCgBuZXR3b3JrX2lksR+m8QoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:red_sandstone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0AAAACAQAbmFtZR4AbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNoPs0LpHPL24YDCgBuZXR3b3JrX2lkLYVt3woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAQAACAQAbmFtZSUAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3N0YWlycwQJAG5hbWVfaGFzaBvjtQv5pf+MAwoAbmV0d29ya19pZMHNND8KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:granite_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAQAACAQAbmFtZRgAbWluZWNyYWZ0OmdyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNoGzpvtoqKQjgDCgBuZXR3b3JrX2lkPkcB1goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_granite_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc3RhaXJzBAkAbmFtZV9oYXNo3PvbSfEQklIDCgBuZXR3b3JrX2lkMmEm3AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:diorite_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAQAACAQAbmFtZRgAbWluZWNyYWZ0OmRpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoi73T8VQuZmcDCgBuZXR3b3JrX2lk6i6nBQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_diorite_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAQAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc3RhaXJzBAkAbmFtZV9oYXNoFKRJd5Wk5L0DCgBuZXR3b3JrX2lkbt2ioAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:andesite_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaO5w2FKBw76EAwoAbmV0d29ya19pZKhXEgUKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:polished_andesite_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAQAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3N0YWlycwQJAG5hbWVfaGFzaNcZZ/zmLInIAwoAbmV0d29ya19pZJTHrlEKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAAAACAQAbmFtZRYAbWluZWNyYWZ0OmJyaWNrX3N0YWlycwQJAG5hbWVfaGFzaMyt+cRDk5O2AwoAbmV0d29ya19pZNeMh58KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:nether_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAAAACAQAbmFtZR0AbWluZWNyYWZ0Om5ldGhlcl9icmlja19zdGFpcnMECQBuYW1lX2hhc2jRqIoOXgifBAMKAG5ldHdvcmtfaWQDiw5yCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_nether_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS3AQAACAQAbmFtZSEAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNogQvosSbcj7kDCgBuZXR3b3JrX2lkx2IMtAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:end_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxAQAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2hmlAk+QhsUsQMKAG5ldHdvcmtfaWTN7KFaCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:quartz_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9zdGFpcnMECQBuYW1lX2hhc2hmvpvOqGi6egMKAG5ldHdvcmtfaWRmUTh7CgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_quartz_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4AQAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc3RhaXJzBAkAbmFtZV9oYXNoNZZ9rX0qZOsDCgBuZXR3b3JrX2lkzsgQyQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:purpur_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9zdGFpcnMECQBuYW1lX2hhc2ifwDxeezXD7gMKAG5ldHdvcmtfaWTT+rxiCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAQAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfc3RhaXJzBAkAbmFtZV9oYXNooTHSZ+IrYtcDCgBuZXR3b3JrX2lkxTJfeAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dark_prismarine_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAQAACAQAbmFtZSAAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zdGFpcnMECQBuYW1lX2hhc2hIciLmam4o4AMKAG5ldHdvcmtfaWTVu7TCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_bricks_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAQAACAQAbmFtZSIAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzX3N0YWlycwQJAG5hbWVfaGFzaNIjq1oBlZMMAwoAbmV0d29ya19pZGEFwLYKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fc3RhaXJzBAkAbmFtZV9oYXNoZJqIzCBpCq4DCgBuZXR3b3JrX2lktXE00AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9zdGFpcnMECQBuYW1lX2hhc2hOkY27jLD4RQMKAG5ldHdvcmtfaWQ+E5VrCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:blackstone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAgAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNokdoUb76p9McDCgBuZXR3b3JrX2lk5fWI5goGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc3RhaXJzBAkAbmFtZV9oYXNolCFtFIE8MmADCgBuZXR3b3JrX2lkGTf7sgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAgAACAQAbmFtZSoAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNonks6UlfpOmkDCgBuZXR3b3JrX2lkgYeOdAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AgAACAQAbmFtZSIAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3N0YWlycwQJAG5hbWVfaGFzaPIfa+TpyJcIAwoAbmV0d29ya19pZJUvOYIKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3N0YWlycwQJAG5hbWVfaGFzaGFRFzB72mN2AwoAbmV0d29ya19pZJEOgIsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:polished_deepslate_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAgAACAQAbmFtZSMAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zdGFpcnMECQBuYW1lX2hhc2iNCYxVik9sGAMKAG5ldHdvcmtfaWSRVPnYCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zdGFpcnMECQBuYW1lX2hhc2hIasOahEf83wMKAG5ldHdvcmtfaWQ1qEDCCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfc3RhaXJzBAkAbmFtZV9oYXNoKjyNUBjcfZsDCgBuZXR3b3JrX2lk+LsycgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_tuff_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc3RhaXJzBAkAbmFtZV9oYXNo8yuah8QI1dcDCgBuZXR3b3JrX2lkjLoU4AoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:tuff_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0AwAACAQAbmFtZRsAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc3RhaXJzBAkAbmFtZV9oYXNoWJpkAurUfKwDCgBuZXR3b3JrX2lkUMcjiwoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mud_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAgAACAQAbmFtZRoAbWluZWNyYWZ0Om11ZF9icmlja19zdGFpcnMECQBuYW1lX2hhc2gt3qxK1NWajAMKAG5ldHdvcmtfaWSm9N3MCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAgAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoHfoAXYq5G3MDCgBuZXR3b3JrX2lkeetf7woGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAgAACAQAbmFtZSMAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2howneQGtZ9cgMKAG5ldHdvcmtfaWSg73zdCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:weathered_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAgAACAQAbmFtZSUAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaP+R5loXxrVgAwoAbmV0d29ya19pZOnbRf4KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAgAACAQAbmFtZSQAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNo6Jeoq5rsPxsDCgBuZXR3b3JrX2lkmRjDnQoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAgAACAQAbmFtZSEAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoh07CQj0/SR8DCgBuZXR3b3JrX2lkmYqoqAoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zdGFpcnMECQBuYW1lX2hhc2guVct1ilmxTwMKAG5ldHdvcmtfaWQgCPROCgYAc3RhdGVzAQ8AdXBzaWRlX2Rvd25fYml0AAMQAHdlaXJkb19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAgAACAQAbmFtZSsAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3N0YWlycwQJAG5hbWVfaGFzaPXC8Sz/phCpAwoAbmV0d29ya19pZHlwHVsKBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/AgAACAQAbmFtZSoAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc3RhaXJzBAkAbmFtZV9oYXNoaqGdkuhxVZUDCgBuZXR3b3JrX2lkYQXzzgoGAHN0YXRlcwEPAHVwc2lkZV9kb3duX2JpdAADEAB3ZWlyZG9fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:resin_brick_stairs",
+            "groupId": 4,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3BAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlc2luX2JyaWNrX3N0YWlycwQJAG5hbWVfaGFzaGJwsbVlApWmAwoAbmV0d29ya19pZCPz+A0KBgBzdGF0ZXMBDwB1cHNpZGVfZG93bl9iaXQAAxAAd2VpcmRvX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:wooden_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:spruce_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:birch_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:jungle_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:acacia_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:dark_oak_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:mangrove_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:cherry_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:pale_oak_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:bamboo_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:iron_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:crimson_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:warped_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:exposed_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:weathered_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:oxidized_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:waxed_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_door",
+            "groupId": 5
+        },
+        {
+            "id": "minecraft:trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAAAACAQAbmFtZRIAbWluZWNyYWZ0OnRyYXBkb29yBAkAbmFtZV9oYXNotYiAJGtN0xADCgBuZXR3b3JrX2lkyTAWkAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAQAACAQAbmFtZRkAbWluZWNyYWZ0OnNwcnVjZV90cmFwZG9vcgQJAG5hbWVfaGFzaOwlfbgBkUW4AwoAbmV0d29ya19pZPHy1K0KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:birch_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAQAACAQAbmFtZRgAbWluZWNyYWZ0OmJpcmNoX3RyYXBkb29yBAkAbmFtZV9oYXNoSLtLweOLJ7wDCgBuZXR3b3JrX2lkeJWDfgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:jungle_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAQAACAQAbmFtZRkAbWluZWNyYWZ0Omp1bmdsZV90cmFwZG9vcgQJAG5hbWVfaGFzaDP/TnM9wyCIAwoAbmV0d29ya19pZEy2fJoKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:acacia_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAQAACAQAbmFtZRkAbWluZWNyYWZ0OmFjYWNpYV90cmFwZG9vcgQJAG5hbWVfaGFzaMj8xi3vmEKOAwoAbmV0d29ya19pZOHj8E8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dark_oak_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAQAACAQAbmFtZRsAbWluZWNyYWZ0OmRhcmtfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNomB2GGJQ2aOMDCgBuZXR3b3JrX2lko5ZHTwoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:mangrove_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAgAACAQAbmFtZRsAbWluZWNyYWZ0Om1hbmdyb3ZlX3RyYXBkb29yBAkAbmFtZV9oYXNooV3kQsQUUmkDCgBuZXR3b3JrX2lkkF/mxAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cherry_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoZXJyeV90cmFwZG9vcgQJAG5hbWVfaGFzaH/PefpfdHgtAwoAbmV0d29ya19pZOA7eNgKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pale_oak_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpBAAACAQAbmFtZRsAbWluZWNyYWZ0OnBhbGVfb2FrX3RyYXBkb29yBAkAbmFtZV9oYXNo5L0cQtjJA9oDCgBuZXR3b3JrX2lkVwhZTgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:bamboo_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJhbWJvb190cmFwZG9vcgQJAG5hbWVfaGFzaJrEOpsTwtKCAwoAbmV0d29ya19pZLvbPz8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:iron_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAAAACAQAbmFtZRcAbWluZWNyYWZ0Omlyb25fdHJhcGRvb3IECQBuYW1lX2hhc2gwA+IumsEiGQMKAG5ldHdvcmtfaWTvSVl/CgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1AQAACAQAbmFtZRoAbWluZWNyYWZ0OmNyaW1zb25fdHJhcGRvb3IECQBuYW1lX2hhc2jHXufTnwUkYgMKAG5ldHdvcmtfaWQLjMYVCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:warped_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AQAACAQAbmFtZRkAbWluZWNyYWZ0OndhcnBlZF90cmFwZG9vcgQJAG5hbWVfaGFzaA20wG/+vkd6AwoAbmV0d29ya19pZHKR/hYKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXBAAACAQAbmFtZRkAbWluZWNyYWZ0OmNvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO9fXio+svKVAwoAbmV0d29ya19pZMCoRjEKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:exposed_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYBAAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoYhDFUysN7qUDCgBuZXR3b3JrX2lkMzwGJgoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:weathered_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZBAAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2hFnEC282a1tgMKAG5ldHdvcmtfaWTk70oiCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:oxidized_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaBAAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaOJpG/XFexVwAwoAbmV0d29ya19pZPhi0J4KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbBAAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaO0JUKUHqNU6AwoAbmV0d29ya19pZJC3ZuMKBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcBAAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX3RyYXBkb29yBAkAbmFtZV9oYXNoBHHxCpkUzpgDCgBuZXR3b3JrX2lkw2XBGQoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAABCABvcGVuX2JpdAABDwB1cHNpZGVfZG93bl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdBAAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfdHJhcGRvb3IECQBuYW1lX2hhc2gH9Fi3JCF4egMKAG5ldHdvcmtfaWRkGU6TCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAEPAHVwc2lkZV9kb3duX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_trapdoor",
+            "groupId": 6,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeBAAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl90cmFwZG9vcgQJAG5hbWVfaGFzaNA/q9qAy6Z9AwoAbmV0d29ya19pZDgExS8KBgBzdGF0ZXMDCQBkaXJlY3Rpb24AAAAAAQgAb3Blbl9iaXQAAQ8AdXBzaWRlX2Rvd25fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:iron_bars",
+            "groupId": 7,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAAAACAQAbmFtZRMAbWluZWNyYWZ0Omlyb25fYmFycwQJAG5hbWVfaGFzaPuefWSNAe56AwoAbmV0d29ya19pZN2LB5IKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQUAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmdsYXNzBAkAbmFtZV9oYXNowGJByfWff6gDCgBuZXR3b3JrX2lk0hdLNwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:white_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAAAACAQAbmFtZR0AbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iHubqoMbu9fAMKAG5ldHdvcmtfaWRndBrUCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaKKa+LrRsHQhAwoAbmV0d29ya19pZEv2giYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:gray_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAwAACAQAbmFtZRwAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaIETy7Y/HZREAwoAbmV0d29ya19pZDomVrUKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:black_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2iV6BCwpfDMmwMKAG5ldHdvcmtfaWSV7doJCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAwAACAQAbmFtZR0AbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2igsEiq5np8JgMKAG5ldHdvcmtfaWRMzE/lCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAwAACAQAbmFtZRsAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoCa2J12/lQoIDCgBuZXR3b3JrX2lk283lWAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:orange_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAwAACAQAbmFtZR4AbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNozgjAuvzhxGsDCgBuZXR3b3JrX2lkW5CkhQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:yellow_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAwAACAQAbmFtZR4AbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNo7EbHMd5WVugDCgBuZXR3b3JrX2lkkdDyXQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:lime_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAwAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBtZA1nZtwcFAwoAbmV0d29ya19pZDxX85UKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:green_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAwAACAQAbmFtZR0AbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3MECQBuYW1lX2hhc2h91ptDgbehWwMKAG5ldHdvcmtfaWTlDhnECgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAwAACAQAbmFtZRwAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaBkIYQ8nQLqbAwoAbmV0d29ya19pZOL1lHsKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_blue_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAwAACAQAbmFtZSIAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaLt05n1G0fiSAwoAbmV0d29ya19pZNbwulIKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:blue_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaPhLocSfzduRAwoAbmV0d29ya19pZENsjFwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:purple_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAwAACAQAbmFtZR4AbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzBAkAbmFtZV9oYXNoJk0DhRO0szUDCgBuZXR3b3JrX2lkD98ZxgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:magenta_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAwAACAQAbmFtZR8AbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaFEDeFiJj3zSAwoAbmV0d29ya19pZG+iFRoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pink_stained_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzcwQJAG5hbWVfaGFzaDijTX87ywxhAwoAbmV0d29ya19pZKdEricKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:tinted_glass",
+            "groupId": 8,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAgAACAQAbmFtZRYAbWluZWNyYWZ0OnRpbnRlZF9nbGFzcwQJAG5hbWVfaGFzaAFZWSamk6KdAwoAbmV0d29ya19pZGSvWX8KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdsYXNzX3BhbmUECQBuYW1lX2hhc2gRSBHwNMQ4gQMKAG5ldHdvcmtfaWRGwixuCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:white_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAAAACAQAbmFtZSIAbWluZWNyYWZ0OndoaXRlX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaHgxQmgJVtRrAwoAbmV0d29ya19pZBEr/DYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_gray_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSJAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNon0aQw9lNkSEDCgBuZXR3b3JrX2lk9dp5VgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:gray_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSIAwAACAQAbmFtZSEAbWluZWNyYWZ0OmdyYXlfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNors74IIw+2MMDCgBuZXR3b3JrX2lkmrGO5woGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:black_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJsYWNrX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaOK/5ZRRd+M1AwoAbmV0d29ya19pZDv++oQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:brown_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAwAACAQAbmFtZSIAbWluZWNyYWZ0OmJyb3duX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaLHeGJyRFTIWAwoAbmV0d29ya19pZMz9L0wKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAwAACAQAbmFtZSAAbWluZWNyYWZ0OnJlZF9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2gGr4x6JheAywMKAG5ldHdvcmtfaWQBjCTmCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAwAACAQAbmFtZSMAbWluZWNyYWZ0Om9yYW5nZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hbHxPD2gEbEAMKAG5ldHdvcmtfaWSt/7a5CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAwAACAQAbmFtZSMAbWluZWNyYWZ0OnllbGxvd19zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2g9tl4aOCyZBwMKAG5ldHdvcmtfaWTXRAS7CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAwAACAQAbmFtZSEAbWluZWNyYWZ0OmxpbWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3CtUyLwoGegDCgBuZXR3b3JrX2lkYJDnggoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:green_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAwAACAQAbmFtZSIAbWluZWNyYWZ0OmdyZWVuX3N0YWluZWRfZ2xhc3NfcGFuZQQJAG5hbWVfaGFzaJo6YP7IMy9SAwoAbmV0d29ya19pZHOnixoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cyan_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAwAACAQAbmFtZSEAbWluZWNyYWZ0OmN5YW5fc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoti97c6QrbLQDCgBuZXR3b3JrX2lkUqFUeQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAwAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNovDg/gQle104DCgBuZXR3b3JrX2lkFuy4MQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:blue_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAwAACAQAbmFtZSEAbWluZWNyYWZ0OmJsdWVfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoGc57tiexbQMDCgBuZXR3b3JrX2lk1eBLUAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:purple_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAwAACAQAbmFtZSMAbWluZWNyYWZ0OnB1cnBsZV9zdGFpbmVkX2dsYXNzX3BhbmUECQBuYW1lX2hhc2hDJHYdd0FdfQMKAG5ldHdvcmtfaWSNsdK5CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAwAACAQAbmFtZSQAbWluZWNyYWZ0Om1hZ2VudGFfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNo3pcOw5bs5XoDCgBuZXR3b3JrX2lkVbOR7AoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pink_stained_glass_pane",
+            "groupId": 9,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAwAACAQAbmFtZSEAbWluZWNyYWZ0OnBpbmtfc3RhaW5lZF9nbGFzc19wYW5lBAkAbmFtZV9oYXNoWRhSACMWgswDCgBuZXR3b3JrX2lkIR92xwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:ladder",
+            "groupId": 10,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBAAAACAQAbmFtZRAAbWluZWNyYWZ0OmxhZGRlcgQJAG5hbWVfaGFzaKBhqheJVOz+AwoAbmV0d29ya19pZCgvzlsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:scaffolding",
+            "groupId": 10,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNjYWZmb2xkaW5nBAkAbmFtZV9oYXNoYrkevrqcljwDCgBuZXR3b3JrX2lkD13mlAoGAHN0YXRlcwMJAHN0YWJpbGl0eQAAAAABDwBzdGFiaWxpdHlfY2hlY2sAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brick_block",
+            "groupId": 10,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAAAACAQAbmFtZRUAbWluZWNyYWZ0OmJyaWNrX2Jsb2NrBAkAbmFtZV9oYXNo5Qc2E005S3oDCgBuZXR3b3JrX2lkqeGWRgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:smooth_stone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAAAACAQAbmFtZRsAbWluZWNyYWZ0OnNtb290aF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNon5I1yVw74uMDCgBuZXR3b3JrX2lkqvjcBQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:normal_stone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5vcm1hbF9zdG9uZV9zbGFiBAkAbmFtZV9oYXNoIvsjJLQdolcDCgBuZXR3b3JrX2lkC1zqRQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cobblestone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoBAAACAQAbmFtZRoAbWluZWNyYWZ0OmNvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2h5CXtW7vlQVgMKAG5ldHdvcmtfaWRDGyj2CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mossy_cobblestone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3BAAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lX3NsYWIECQBuYW1lX2hhc2ijm1BCwB82VgMKAG5ldHdvcmtfaWR7ByMGCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:oak_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha19zbGFiBAkAbmFtZV9oYXNoJp1Cp1M4jlwDCgBuZXR3b3JrX2lkZH6+owoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:spruce_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV9zbGFiBAkAbmFtZV9oYXNodQi70jB238cDCgBuZXR3b3JrX2lkrriOYQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:birch_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3NsYWIECQBuYW1lX2hhc2gZPpfMxoOsTAMKAG5ldHdvcmtfaWThR9jyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:jungle_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV9zbGFiBAkAbmFtZV9oYXNo6gLs79NXak4DCgBuZXR3b3JrX2lk5ZiKgwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:acacia_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV9zbGFiBAkAbmFtZV9oYXNomSdFmDnv4OUDCgBuZXR3b3JrX2lkHttaXAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3NsYWIECQBuYW1lX2hhc2hJjTohRFyhIQMKAG5ldHdvcmtfaWRMzDTyCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3NsYWIECQBuYW1lX2hhc2jYCcmhJPeNMwMKAG5ldHdvcmtfaWQx6U1yCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cherry_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV9zbGFiBAkAbmFtZV9oYXNoTt0MmVn/mqoDCgBuZXR3b3JrX2lk2VVsZQoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlBAAACAQAbmFtZRcAbWluZWNyYWZ0OnBhbGVfb2FrX3NsYWIECQBuYW1lX2hhc2g9QqTGUjo2XgMKAG5ldHdvcmtfaWQoWvcmCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:bamboo_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQAAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJhbWJvb19zbGFiBAkAbmFtZV9oYXNoo1xuFqINeLYDCgBuZXR3b3JrX2lkVC+0twoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_mosaic_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAwAACAQAbmFtZRwAbWluZWNyYWZ0OmJhbWJvb19tb3NhaWNfc2xhYgQJAG5hbWVfaGFzaNbVRBZ/ChI3AwoAbmV0d29ya19pZOLZHFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqBAAACAQAbmFtZRoAbWluZWNyYWZ0OnN0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2js6EexuKuzrQMKAG5ldHdvcmtfaWRSsMxaCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mossy_stone_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAQAACAQAbmFtZSAAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hiA4kFUl4tHAMKAG5ldHdvcmtfaWS6joSOCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sandstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnBAAACAQAbmFtZRgAbWluZWNyYWZ0OnNhbmRzdG9uZV9zbGFiBAkAbmFtZV9oYXNo/GMI0MZnrhsDCgBuZXR3b3JrX2lkFP8WmwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cut_sandstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDBAAACAQAbmFtZRwAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaE+zxVQweViJAwoAbmV0d29ya19pZHsu74YKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4BAAACAQAbmFtZR8AbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaIkmsO1gw3gnAwoAbmV0d29ya19pZFSiwP0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmVfc2xhYgQJAG5hbWVfaGFzaEyDjeWlUHItAwoAbmV0d29ya19pZIT4rmwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_red_sandstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEBAAACAQAbmFtZSAAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2hTVRS++snU3wMKAG5ldHdvcmtfaWSvIAviCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6BAAACAQAbmFtZSMAbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lX3NsYWIECQBuYW1lX2hhc2i9iN2UK272tgMKAG5ldHdvcmtfaWRUZrwJCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:granite_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/BAAACAQAbmFtZRYAbWluZWNyYWZ0OmdyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaL0HprlAhhZwAwoAbmV0d29ya19pZIcIdc8KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_granite_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSABAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGVfc2xhYgQJAG5hbWVfaGFzaP6bXk5w2dGrAwoAbmV0d29ya19pZCsRy1cKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:diorite_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9BAAACAQAbmFtZRYAbWluZWNyYWZ0OmRpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaM3ppS8v55sNAwoAbmV0d29ya19pZB+Pv9oKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_diorite_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+BAAACAQAbmFtZR8AbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGVfc2xhYgQJAG5hbWVfaGFzaLZlyJLkMPhyAwoAbmV0d29ya19pZFM0HYwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:andesite_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8BAAACAQAbmFtZRcAbWluZWNyYWZ0OmFuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2icIrtuy/aosAMKAG5ldHdvcmtfaWTtXTtYCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_andesite_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7BAAACAQAbmFtZSAAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlX3NsYWIECQBuYW1lX2hhc2j56zJOfCF+3wMKAG5ldHdvcmtfaWRBs69FCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJyaWNrX3NsYWIECQBuYW1lX2hhc2hO/Da4jU2v4wMKAG5ldHdvcmtfaWRG/qphCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:nether_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsBAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl9icmlja19zbGFiBAkAbmFtZV9oYXNonymoa2zbbqMDCgBuZXR3b3JrX2lkquvR1QoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_nether_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5BAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaG89ujUk3Y64AwoAbmV0d29ya19pZEZIunAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:end_stone_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAQAACAQAbmFtZR4AbWluZWNyYWZ0OmVuZF9zdG9uZV9icmlja19zbGFiBAkAbmFtZV9oYXNo4tkxQtl+IyQDCgBuZXR3b3JrX2lkhByH/woGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:quartz_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrBAAACAQAbmFtZRUAbWluZWNyYWZ0OnF1YXJ0el9zbGFiBAkAbmFtZV9oYXNo9JMj3upfsbwDCgBuZXR3b3JrX2lkn2g2VAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:smooth_quartz_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBBAAACAQAbmFtZRwAbWluZWNyYWZ0OnNtb290aF9xdWFydHpfc2xhYgQJAG5hbWVfaGFzaHOSJv8ve0nmAwoAbmV0d29ya19pZFMk/JsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:purpur_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzBAAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnB1cl9zbGFiBAkAbmFtZV9oYXNo4XeWbKpx2ScDCgBuZXR3b3JrX2lkRkga5goGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:prismarine_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0BAAACAQAbmFtZRkAbWluZWNyYWZ0OnByaXNtYXJpbmVfc2xhYgQJAG5hbWVfaGFzaI9x+1fY8QRfAwoAbmV0d29ya19pZBTUZhwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_prismarine_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1BAAACAQAbmFtZR4AbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZV9zbGFiBAkAbmFtZV9oYXNoSsZGDkEL5ZUDCgBuZXR3b3JrX2lkNLQ8VwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:prismarine_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2BAAACAQAbmFtZR8AbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaB1FSbVi97xJAwoAbmV0d29ya19pZEBwwFMKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc2xhYgQJAG5hbWVfaGFzaKZ+EfP0ZYOZAwoAbmV0d29ya19pZAxRUWAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAgAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zbGFiBAkAbmFtZV9oYXNo/AT0e/Z9W7UDCgBuZXR3b3JrX2lk1yq11AoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:blackstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAgAACAQAbmFtZRkAbWluZWNyYWZ0OmJsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaF/DD4ZUlNgtAwoAbmV0d29ya19pZGy1DjwKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAgAACAQAbmFtZSIAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfc2xhYgQJAG5hbWVfaGFzaDYnuUs86EWfAwoAbmV0d29ya19pZJj2bXIKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAgAACAQAbmFtZSgAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaKySLqvHc4xXAwoAbmV0d29ya19pZOyWX94KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AgAACAQAbmFtZSAAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlX3NsYWIECQBuYW1lX2hhc2gwJIVWK1TM2QMKAG5ldHdvcmtfaWTYAoX5CgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_deepslate_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AgAACAQAbmFtZSEAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZV9zbGFiBAkAbmFtZV9oYXNoC/Adiz8k6RYDCgBuZXR3b3JrX2lkuFYMAAoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_tile_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlX3NsYWIECQBuYW1lX2hhc2hPydV6emzIXAMKAG5ldHdvcmtfaWQwlbFCCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSHAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja19zbGFiBAkAbmFtZV9oYXNoSv62V7iw10UDCgBuZXR3b3JrX2lkWMoragoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:tuff_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAwAACAQAbmFtZRMAbWluZWNyYWZ0OnR1ZmZfc2xhYgQJAG5hbWVfaGFzaIhCGdlIsnMUAwoAbmV0d29ya19pZN1dUL4KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_tuff_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAwAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmZfc2xhYgQJAG5hbWVfaGFzaLXdb48YvAsHAwoAbmV0d29ya19pZAnJ7W0KBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyAwAACAQAbmFtZRkAbWluZWNyYWZ0OnR1ZmZfYnJpY2tfc2xhYgQJAG5hbWVfaGFzaLqPMjVCv5dIAwoAbmV0d29ya19pZOmeRhcKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:mud_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAgAACAQAbmFtZRgAbWluZWNyYWZ0Om11ZF9icmlja19zbGFiBAkAbmFtZV9oYXNoq/tGBQWkv08DCgBuZXR3b3JrX2lkl4nnMwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAgAACAQAbmFtZRkAbWluZWNyYWZ0OmN1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaDsNpb2qs4iBAwoAbmV0d29ya19pZOTm2nsKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAgAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNoahQ5OwIQb7kDCgBuZXR3b3JrX2lkrUlZLwoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:weathered_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAgAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2hBIuGIOVVXogMKAG5ldHdvcmtfaWQgnaDiCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAgAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaOptj9ycfpaDAwoAbmV0d29ya19pZMzFSRgKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaAlx6DZOCTHzAwoAbmV0d29ya19pZFRBvDAKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAgAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcl9zbGFiBAkAbmFtZV9oYXNo3KqS5OnhtRIDCgBuZXR3b3JrX2lkHTGcTgoGAHN0YXRlcwgXAG1pbmVjcmFmdDp2ZXJ0aWNhbF9oYWxmBgBib3R0b20AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAgAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyX3NsYWIECQBuYW1lX2hhc2gzZ1oX0HCFtwMKAG5ldHdvcmtfaWSgJR+XCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTAAgAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXJfc2xhYgQJAG5hbWVfaGFzaMjjTnLu1KcqAwoAbmV0d29ya19pZIxsnFYKBgBzdGF0ZXMIFwBtaW5lY3JhZnQ6dmVydGljYWxfaGFsZgYAYm90dG9tAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:resin_brick_slab",
+            "groupId": 11,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT1BAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlc2luX2JyaWNrX3NsYWIECQBuYW1lX2hhc2hAGu/Hlaa12QMKAG5ldHdvcmtfaWSyDq8CCgYAc3RhdGVzCBcAbWluZWNyYWZ0OnZlcnRpY2FsX2hhbGYGAGJvdHRvbQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stone_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2JyaWNrcwQJAG5hbWVfaGFzaGAiQu8VWVJRAwoAbmV0d29ya19pZH2DjXUKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mossy_stone_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjBAAACAQAbmFtZRwAbWluZWNyYWZ0Om1vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaIZBO00MONRIAwoAbmV0d29ya19pZL2WDrAKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cracked_stone_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkBAAACAQAbmFtZR4AbWluZWNyYWZ0OmNyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNocIkAp6riMz4DCgBuZXR3b3JrX2lkTWGeCwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:chiseled_stone_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlBAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaMB2FPLLADkEAwoAbmV0d29ya19pZOIPn0IKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:smooth_stone",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2AQAACAQAbmFtZRYAbWluZWNyYWZ0OnNtb290aF9zdG9uZQQJAG5hbWVfaGFzaMwf87/JaTNvAwoAbmV0d29ya19pZLkZICEKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:end_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAAAACAQAbmFtZRQAbWluZWNyYWZ0OmVuZF9icmlja3MECQBuYW1lX2hhc2hIUFfxNLZaFgMKAG5ldHdvcmtfaWQ/vDihCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoIHgsgIdzKXcDCgBuZXR3b3JrX2lkUw9b3woGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cracked_polished_blackstone_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAgAACAQAbmFtZSwAbWluZWNyYWZ0OmNyYWNrZWRfcG9saXNoZWRfYmxhY2tzdG9uZV9icmlja3MECQBuYW1lX2hhc2jQIO1GQDk80AMKAG5ldHdvcmtfaWQ3UlRYCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:gilded_blackstone",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAgAACAQAbmFtZRsAbWluZWNyYWZ0OmdpbGRlZF9ibGFja3N0b25lBAkAbmFtZV9oYXNoNoWt1ocG0HEDCgBuZXR3b3JrX2lktL8gUwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:chiseled_polished_blackstone",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAgAACAQAbmFtZSYAbWluZWNyYWZ0OmNoaXNlbGVkX3BvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2gzFa+kEjCJgAMKAG5ldHdvcmtfaWR2NJX2CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_tiles",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAgAACAQAbmFtZRkAbWluZWNyYWZ0OmRlZXBzbGF0ZV90aWxlcwQJAG5hbWVfaGFzaGcLLx3NXAFvAwoAbmV0d29ya19pZI/G/xYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cracked_deepslate_tiles",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAgAACAQAbmFtZSEAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX3RpbGVzBAkAbmFtZV9oYXNo9zWgkFuMM1QDCgBuZXR3b3JrX2lkGwY6OgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSGAgAACAQAbmFtZRoAbWluZWNyYWZ0OmRlZXBzbGF0ZV9icmlja3MECQBuYW1lX2hhc2gucvFmPdZxigMKAG5ldHdvcmtfaWSH4HDPCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:tuff_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAwAACAQAbmFtZRUAbWluZWNyYWZ0OnR1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo/hbQ+mXSK7wDCgBuZXR3b3JrX2lk6gmIwQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cracked_deepslate_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAgAACAQAbmFtZSIAbWluZWNyYWZ0OmNyYWNrZWRfZGVlcHNsYXRlX2JyaWNrcwQJAG5hbWVfaGFzaN40aqhh9WqHAwoAbmV0d29ya19pZO9GPBQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chiseled_deepslate",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAgAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaEU7/uRG8HSBAwoAbmV0d29ya19pZEqmI0EKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chiseled_tuff",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmYECQBuYW1lX2hhc2iVliOT8OTQ9AMKAG5ldHdvcmtfaWTLNKOiCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_tuff_bricks",
+            "groupId": 12,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT2AwAACAQAbmFtZR4AbWluZWNyYWZ0OmNoaXNlbGVkX3R1ZmZfYnJpY2tzBAkAbmFtZV9oYXNo3oQw6gmxYuADCgBuZXR3b3JrX2lkm3D8AgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cobblestone",
+            "groupId": 13,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYmJsZXN0b25lBAkAbmFtZV9oYXNoPoK7mGlSUz4DCgBuZXR3b3JrX2lkLm7RZwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mossy_cobblestone",
+            "groupId": 13,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAAAACAQAbmFtZRsAbWluZWNyYWZ0Om1vc3N5X2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoGJ67FCbkChMDCgBuZXR3b3JrX2lk/pYs1AoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cobbled_deepslate",
+            "groupId": 13,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AgAACAQAbmFtZRsAbWluZWNyYWZ0OmNvYmJsZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoLUz9Y/ywmLwDCgBuZXR3b3JrX2lkNwzZ+AoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNhbmRzdG9uZQQJAG5hbWVfaGFzaFEmWsEHFI1AAwoAbmV0d29ya19pZPsXMaQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chiseled_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvBAAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX3NhbmRzdG9uZQQJAG5hbWVfaGFzaPEkxMvZmemgAwoAbmV0d29ya19pZGI5NB4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cut_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSwBAAACAQAbmFtZRcAbWluZWNyYWZ0OmN1dF9zYW5kc3RvbmUECQBuYW1lX2hhc2ichLQc71njnQMKAG5ldHdvcmtfaWSmBLkRCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:smooth_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnNtb290aF9zYW5kc3RvbmUECQBuYW1lX2hhc2huR7XTwISyCAMKAG5ldHdvcmtfaWSzWj3UCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzAAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2jBO4Gv2v59uAMKAG5ldHdvcmtfaWRXRYxZCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_red_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS7BAAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX3JlZF9zYW5kc3RvbmUECQBuYW1lX2hhc2gh5sX+ON054wMKAG5ldHdvcmtfaWT6Pw1PCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cut_red_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS8BAAACAQAbmFtZRsAbWluZWNyYWZ0OmN1dF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoaOtka4NrQ1EDCgBuZXR3b3JrX2lk3r/JPAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:smooth_red_sandstone",
+            "groupId": 14,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9BAAACAQAbmFtZR4AbWluZWNyYWZ0OnNtb290aF9yZWRfc2FuZHN0b25lBAkAbmFtZV9oYXNoqsNl8x36ju4DCgBuZXR3b3JrX2lk7x5DTwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:coal_block",
+            "groupId": 15,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWStAAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvYWxfYmxvY2sECQBuYW1lX2hhc2jH8QQP3t5PiAMKAG5ldHdvcmtfaWRo+sR+CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dried_kelp_block",
+            "groupId": 15,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAQAACAQAbmFtZRoAbWluZWNyYWZ0OmRyaWVkX2tlbHBfYmxvY2sECQBuYW1lX2hhc2iRoucexkrl8wMKAG5ldHdvcmtfaWQQCCrvCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:copper_block",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAgAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ibG9jawQJAG5hbWVfaGFzaDVxnehsGaZ1AwoAbmV0d29ya19pZIiUodwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:weathered_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAgAACAQAbmFtZRoAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2hJCQXbvobv+gMKAG5ldHdvcmtfaWQwM0lJCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAgAACAQAbmFtZRgAbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoQH3Fukmu3CEDCgBuZXR3b3JrX2lk72jFIwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMDtJqR0G5Y7AwoAbmV0d29ya19pZGjN8bUKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAgAACAQAbmFtZRYAbWluZWNyYWZ0OndheGVkX2NvcHBlcgQJAG5hbWVfaGFzaPF+FG6Eh5fsAwoAbmV0d29ya19pZIjtz/0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAgAACAQAbmFtZR4AbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyBAkAbmFtZV9oYXNoig8IOc+SCikDCgBuZXR3b3JrX2lklz8yWQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAgAACAQAbmFtZSAAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXIECQBuYW1lX2hhc2gjtPq8MOdvKgMKAG5ldHdvcmtfaWSQ9Ln9CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS9AgAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcgQJAG5hbWVfaGFzaMaORhsO+LzjAwoAbmV0d29ya19pZJhGfLEKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT/AwAACAQAbmFtZRYAbWluZWNyYWZ0OmNvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaC/JEFOWnmEcAwoAbmV0d29ya19pZC6YiiMKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:exposed_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQABAAACAQAbmFtZR4AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNolFIBYLYU0IcDCgBuZXR3b3JrX2lk4UqptAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:weathered_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBBAAACAQAbmFtZSAAbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2jB3o8enlv1RgMKAG5ldHdvcmtfaWRih2pOCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCBAAACAQAbmFtZR8AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaBRfNhyndve7AwoAbmV0d29ya19pZKY2cnEKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDBAAACAQAbmFtZRwAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaDmC92M2RO+HAwoAbmV0d29ya19pZH4og2AKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2dyYXRlBAkAbmFtZV9oYXNoWmd6B+hWwiEDCgBuZXR3b3JrX2lk8d4ZQwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFBAAACAQAbmFtZSYAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfZ3JhdGUECQBuYW1lX2hhc2hXfilVFDAiYQMKAG5ldHdvcmtfaWQqTGC1CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_grate",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9ncmF0ZQQJAG5hbWVfaGFzaEbeMT605GP4AwoAbmV0d29ya19pZOZjpkkKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAgAACAQAbmFtZRQAbWluZWNyYWZ0OmN1dF9jb3BwZXIECQBuYW1lX2hhc2hAfN3NGax3eAMKAG5ldHdvcmtfaWTnFBtYCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:exposed_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAgAACAQAbmFtZRwAbWluZWNyYWZ0OmV4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaA85G3yv/w6pAwoAbmV0d29ya19pZMQhr0QKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:weathered_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAgAACAQAbmFtZR4AbWluZWNyYWZ0OndlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoVgRV0fBaz88DCgBuZXR3b3JrX2lk/0cYugoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:oxidized_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAgAACAQAbmFtZR0AbWluZWNyYWZ0Om94aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2iP8WmFWOkriwMKAG5ldHdvcmtfaWQPdce7CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAgAACAQAbmFtZRoAbWluZWNyYWZ0OndheGVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2jumiwOZIqv2AMKAG5ldHdvcmtfaWQvuxx9CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_exposed_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAgAACAQAbmFtZSIAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY3V0X2NvcHBlcgQJAG5hbWVfaGFzaPE/OfK6IoVMAwoAbmV0d29ya19pZHy5HkcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAgAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jdXRfY29wcGVyBAkAbmFtZV9oYXNoCA1xDp11bnwDCgBuZXR3b3JrX2lkDyEDVQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_cut_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+AgAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2N1dF9jb3BwZXIECQBuYW1lX2hhc2i1pZAsZYHLDAMKAG5ldHdvcmtfaWQ/wSkCCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT3AwAACAQAbmFtZRkAbWluZWNyYWZ0OmNoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaIsW5pmpJEuQAwoAbmV0d29ya19pZHetwrkKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:exposed_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT4AwAACAQAbmFtZSEAbWluZWNyYWZ0OmV4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoOvrLJ0UowbgDCgBuZXR3b3JrX2lkZj7cPwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:weathered_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5AwAACAQAbmFtZSMAbWluZWNyYWZ0OndlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hh+42XlsWvGAMKAG5ldHdvcmtfaWS7Cy59CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6AwAACAQAbmFtZSIAbWluZWNyYWZ0Om94aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaLpTIsnfluiCAwoAbmV0d29ya19pZB9/jS8KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AwAACAQAbmFtZR8AbWluZWNyYWZ0OndheGVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaFnXvXY5OinzAwoAbmV0d29ya19pZAcKtHsKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8AwAACAQAbmFtZScAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY2hpc2VsZWRfY29wcGVyBAkAbmFtZV9oYXNoHJdq+Pph6hMDCgBuZXR3b3JrX2lkdge7IAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9AwAACAQAbmFtZSgAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NoaXNlbGVkX2NvcHBlcgQJAG5hbWVfaGFzaMj49OvlTpgCAwoAbmV0d29ya19pZN/r+roKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_weathered_chiseled_copper",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AwAACAQAbmFtZSkAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jaGlzZWxlZF9jb3BwZXIECQBuYW1lX2hhc2hzuO+Sg9LYQwMKAG5ldHdvcmtfaWQ7AN7iCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvcHBlcl9idWxiBAkAbmFtZV9oYXNo41TimHOsMWcDCgBuZXR3b3JrX2lkJnZvAgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:exposed_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIBAAACAQAbmFtZR0AbWluZWNyYWZ0OmV4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2g++f1wYLLCrAMKAG5ldHdvcmtfaWRLdMmGCgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:weathered_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJBAAACAQAbmFtZR8AbWluZWNyYWZ0OndlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMEtsYfwRTXlAwoAbmV0d29ya19pZAp51LQKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:oxidized_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKBAAACAQAbmFtZR4AbWluZWNyYWZ0Om94aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNovnrBQZs8nDIDCgBuZXR3b3JrX2lkPsj0AAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLBAAACAQAbmFtZRsAbWluZWNyYWZ0OndheGVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoGTg6TYllMiIDCgBuZXR3b3JrX2lk9m0WhgoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waxed_exposed_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMBAAACAQAbmFtZSMAbWluZWNyYWZ0OndheGVkX2V4cG9zZWRfY29wcGVyX2J1bGIECQBuYW1lX2hhc2gI6xkPcvBDVwMKAG5ldHdvcmtfaWR7BRcACgYAc3RhdGVzAQMAbGl0AAELAHBvd2VyZWRfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:waxed_weathered_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNBAAACAQAbmFtZSUAbWluZWNyYWZ0OndheGVkX3dlYXRoZXJlZF9jb3BwZXJfYnVsYgQJAG5hbWVfaGFzaMsUnmp3/VqVAwoAbmV0d29ya19pZEoworoKBgBzdGF0ZXMBAwBsaXQAAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:waxed_oxidized_copper_bulb",
+            "groupId": 16,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOBAAACAQAbmFtZSQAbWluZWNyYWZ0OndheGVkX294aWRpemVkX2NvcHBlcl9idWxiBAkAbmFtZV9oYXNoBFKxY3fjVq4DCgBuZXR3b3JrX2lkzrJ6aAoGAHN0YXRlcwEDAGxpdAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:iron_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAAAACAQAbmFtZRQAbWluZWNyYWZ0Omlyb25fYmxvY2sECQBuYW1lX2hhc2jYINmJQbvV/gMKAG5ldHdvcmtfaWRf7AbICgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:gold_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdvbGRfYmxvY2sECQBuYW1lX2hhc2iYLshvjtXzFwMKAG5ldHdvcmtfaWTDJGBcCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:emerald_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAAAACAQAbmFtZRcAbWluZWNyYWZ0OmVtZXJhbGRfYmxvY2sECQBuYW1lX2hhc2hK6QunqJznNAMKAG5ldHdvcmtfaWRk5+otCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:diamond_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AAAACAQAbmFtZRcAbWluZWNyYWZ0OmRpYW1vbmRfYmxvY2sECQBuYW1lX2hhc2iGKrxuvkytFQMKAG5ldHdvcmtfaWQQeQZXCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lapis_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxhcGlzX2Jsb2NrBAkAbmFtZV9oYXNoDZ44xdb2zVoDCgBuZXR3b3JrX2lktVy0BAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:raw_copper_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAgAACAQAbmFtZRoAbWluZWNyYWZ0OnJhd19jb3BwZXJfYmxvY2sECQBuYW1lX2hhc2hw1KG0TNUGgwMKAG5ldHdvcmtfaWS1vGo/CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:raw_iron_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19pcm9uX2Jsb2NrBAkAbmFtZV9oYXNo9XyzNIQXxvwDCgBuZXR3b3JrX2lknms1QAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:raw_gold_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJhd19nb2xkX2Jsb2NrBAkAbmFtZV9oYXNo6YuwuLwfOBwDCgBuZXR3b3JrX2lkLiQ5gQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:quartz_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAAAACAQAbmFtZRYAbWluZWNyYWZ0OnF1YXJ0el9ibG9jawQJAG5hbWVfaGFzaCfpbqyIIvZCAwoAbmV0d29ya19pZE2axGsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:quartz_bricks",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAgAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9icmlja3MECQBuYW1lX2hhc2jSZO590dd8sAMKAG5ldHdvcmtfaWSc5xCLCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:quartz_pillar",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS5BAAACAQAbmFtZRcAbWluZWNyYWZ0OnF1YXJ0el9waWxsYXIECQBuYW1lX2hhc2igp62HI+PuSwMKAG5ldHdvcmtfaWS9SGXLCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chiseled_quartz_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS4BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3F1YXJ0el9ibG9jawQJAG5hbWVfaGFzaAftJM9mCAvaAwoAbmV0d29ya19pZFwy0s0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:smooth_quartz",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS6BAAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9xdWFydHoECQBuYW1lX2hhc2hIVzzgiItGagMKAG5ldHdvcmtfaWTVWgU2CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:prismarine",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAAAACAQAbmFtZRQAbWluZWNyYWZ0OnByaXNtYXJpbmUECQBuYW1lX2hhc2jcnQCHi9CspQMKAG5ldHdvcmtfaWQnuuW1CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:prismarine_bricks",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSzBAAACAQAbmFtZRsAbWluZWNyYWZ0OnByaXNtYXJpbmVfYnJpY2tzBAkAbmFtZV9oYXNozeGe3/7s5fcDCgBuZXR3b3JrX2lkj/iBnAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dark_prismarine",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSyBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfcHJpc21hcmluZQQJAG5hbWVfaGFzaK+rhxsgkzplAwoAbmV0d29ya19pZIdA0I0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:slime",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnNsaW1lBAkAbmFtZV9oYXNoHJiEEJx+JlkDCgBuZXR3b3JrX2lkfgfVzAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:honey_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAQAACAQAbmFtZRUAbWluZWNyYWZ0OmhvbmV5X2Jsb2NrBAkAbmFtZV9oYXNo9zLYSUlelywDCgBuZXR3b3JrX2lko+dyWgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:honeycomb_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAQAACAQAbmFtZRkAbWluZWNyYWZ0OmhvbmV5Y29tYl9ibG9jawQJAG5hbWVfaGFzaASIPuOCYd1oAwoAbmV0d29ya19pZKys4n4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:resin_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT8BAAACAQAbmFtZRUAbWluZWNyYWZ0OnJlc2luX2Jsb2NrBAkAbmFtZV9oYXNo6SHuLxdB67QDCgBuZXR3b3JrX2lkcWO4EwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:hay_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAAAACAQAbmFtZRMAbWluZWNyYWZ0OmhheV9ibG9jawQJAG5hbWVfaGFzaIB2VxKxX8EpAwoAbmV0d29ya19pZKuQSloKBgBzdGF0ZXMDCgBkZXByZWNhdGVkAAAAAAgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:bone_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAAAACAQAbmFtZRQAbWluZWNyYWZ0OmJvbmVfYmxvY2sECQBuYW1lX2hhc2i4ZX576W9AWgMKAG5ldHdvcmtfaWTWGacQCgYAc3RhdGVzAwoAZGVwcmVjYXRlZAAAAAAICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:resin_bricks",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT0BAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlc2luX2JyaWNrcwQJAG5hbWVfaGFzaPQfo5PcOZSaAwoAbmV0d29ya19pZB24YHwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chiseled_resin_bricks",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7BAAACAQAbmFtZR8AbWluZWNyYWZ0OmNoaXNlbGVkX3Jlc2luX2JyaWNrcwQJAG5hbWVfaGFzaNSCIvsamt6qAwoAbmV0d29ya19pZBY+3hYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:nether_brick",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAAAACAQAbmFtZRYAbWluZWNyYWZ0Om5ldGhlcl9icmljawQJAG5hbWVfaGFzaMxcRiheU+nXAwoAbmV0d29ya19pZMkmzloKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_nether_brick",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAAAACAQAbmFtZRoAbWluZWNyYWZ0OnJlZF9uZXRoZXJfYnJpY2sECQBuYW1lX2hhc2j8pRO4LfoECAMKAG5ldHdvcmtfaWRpdF0YCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:chiseled_nether_bricks",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNoaXNlbGVkX25ldGhlcl9icmlja3MECQBuYW1lX2hhc2g31SBPTcUK1QMKAG5ldHdvcmtfaWS8TJ+TCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cracked_nether_bricks",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAgAACAQAbmFtZR8AbWluZWNyYWZ0OmNyYWNrZWRfbmV0aGVyX2JyaWNrcwQJAG5hbWVfaGFzaAdC6eKzXT5tAwoAbmV0d29ya19pZIUSejwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:netherite_block",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcml0ZV9ibG9jawQJAG5hbWVfaGFzaMghh6Zib/ZKAwoAbmV0d29ya19pZIz0mq0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:lodestone",
+            "groupId": 17,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAQAACAQAbmFtZRMAbWluZWNyYWZ0OmxvZGVzdG9uZQQJAG5hbWVfaGFzaJ2gmHOTlXv8AwoAbmV0d29ya19pZEfgB4wKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAAAACAQAbmFtZRQAbWluZWNyYWZ0OndoaXRlX3dvb2wECQBuYW1lX2hhc2jRWB7vaIEDiQMKAG5ldHdvcmtfaWSO8paQCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfd29vbAQJAG5hbWVfaGFzaOpdQ1a2v4b3AwoAbmV0d29ya19pZIqZCYEKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:gray_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAwAACAQAbmFtZRMAbWluZWNyYWZ0OmdyYXlfd29vbAQJAG5hbWVfaGFzaLsc1Lp1xdIOAwoAbmV0d29ya19pZFUs+HgKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:black_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrX3dvb2wECQBuYW1lX2hhc2hP2HC6o0X4HAMKAG5ldHdvcmtfaWRUbORcCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAwAACAQAbmFtZRQAbWluZWNyYWZ0OmJyb3duX3dvb2wECQBuYW1lX2hhc2ig5IW89PrREwMKAG5ldHdvcmtfaWRjT9j8CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAwAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF93b29sBAkAbmFtZV9oYXNoY4TBDq+mFgUDCgBuZXR3b3JrX2lktn9lcAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:orange_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAwAACAQAbmFtZRUAbWluZWNyYWZ0Om9yYW5nZV93b29sBAkAbmFtZV9oYXNoFstfrTZfSCgDCgBuZXR3b3JrX2lk+rqywwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:yellow_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtAwAACAQAbmFtZRUAbWluZWNyYWZ0OnllbGxvd193b29sBAkAbmFtZV9oYXNoTFyus2RHegcDCgBuZXR3b3JrX2lkkKBhXAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:lime_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAwAACAQAbmFtZRMAbWluZWNyYWZ0OmxpbWVfd29vbAQJAG5hbWVfaGFzaNVnnzKiMxmeAwoAbmV0d29ya19pZG9b32kKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:green_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAwAACAQAbmFtZRQAbWluZWNyYWZ0OmdyZWVuX3dvb2wECQBuYW1lX2hhc2i3mElRYHIcSQMKAG5ldHdvcmtfaWSssprwCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwAwAACAQAbmFtZRMAbWluZWNyYWZ0OmN5YW5fd29vbAQJAG5hbWVfaGFzaBNDfvHn8dqFAwoAbmV0d29ya19pZK0hAbgKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_blue_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfd29vbAQJAG5hbWVfaGFzaLWFAUfyxFPNAwoAbmV0d29ya19pZL2oEugKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:blue_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAwAACAQAbmFtZRMAbWluZWNyYWZ0OmJsdWVfd29vbAQJAG5hbWVfaGFzaLjHyxxbTWCLAwoAbmV0d29ya19pZPaLdFQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:purple_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAwAACAQAbmFtZRUAbWluZWNyYWZ0OnB1cnBsZV93b29sBAkAbmFtZV9oYXNojvFtqzjAf/4DCgBuZXR3b3JrX2lklqASNQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:magenta_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AwAACAQAbmFtZRYAbWluZWNyYWZ0Om1hZ2VudGFfd29vbAQJAG5hbWVfaGFzaGuOHvf+Pd4yAwoAbmV0d29ya19pZI4UoDQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pink_wool",
+            "groupId": 18,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1AwAACAQAbmFtZRMAbWluZWNyYWZ0OnBpbmtfd29vbAQJAG5hbWVfaGFzaPiVA2pFeoFLAwoAbmV0d29ya19pZOZRO6oKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAAAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhcnBldAQJAG5hbWVfaGFzaNeMHTI1fWPXAwoAbmV0d29ya19pZEahDFcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_gray_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FycGV0BAkAbmFtZV9oYXNoHPw6ArBAsP0DCgBuZXR3b3JrX2lkQoAeUAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:gray_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaAwAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FycGV0BAkAbmFtZV9oYXNoZVR0OI+1VRADCgBuZXR3b3JrX2lkETF4WwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:black_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhcnBldAQJAG5hbWVfaGFzaOk7LP9NptyhAwoAbmV0d29ya19pZFjmXtIKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:brown_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhcnBldAQJAG5hbWVfaGFzaNaXFyOsAvIvAwoAbmV0d29ya19pZHPjFuoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAwAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYXJwZXQECQBuYW1lX2hhc2i9eSKBf6SO3wMKAG5ldHdvcmtfaWQuhI/KCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAwAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYXJwZXQECQBuYW1lX2hhc2hIUkO4HlAdygMKAG5ldHdvcmtfaWSyKV9OCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAwAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYXJwZXQECQBuYW1lX2hhc2hSDKX3scCamwMKAG5ldHdvcmtfaWT8nq+ECgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAwAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FycGV0BAkAbmFtZV9oYXNo+6KFOpzsib4DCgBuZXR3b3JrX2lkT+DS4woGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:green_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgAwAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhcnBldAQJAG5hbWVfaGFzaCHPMP9ltqFJAwoAbmV0d29ya19pZBgwAvAKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cyan_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcAwAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FycGV0BAkAbmFtZV9oYXNobXf62dQBJj8DCgBuZXR3b3JrX2lkKVppLgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAwAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FycGV0BAkAbmFtZV9oYXNo20l4oktdZ3sDCgBuZXR3b3JrX2lkjdeMiwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:blue_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FycGV0BAkAbmFtZV9oYXNo3p3lsW0eQwsDCgBuZXR3b3JrX2lkAovdPQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:purple_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdAwAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYXJwZXQECQBuYW1lX2hhc2jwIA9pW/qp7QMKAG5ldHdvcmtfaWTqJqhjCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVAwAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FycGV0BAkAbmFtZV9oYXNoFXT36YNNZhMDCgBuZXR3b3JrX2lk+tqsGAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pink_carpet",
+            "groupId": 19,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FycGV0BAkAbmFtZV9oYXNoHll72oqk+OoDCgBuZXR3b3JrX2lkrnBYDwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:white_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtAAAACAQAbmFtZR8AbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaFUk9iXVjwV8AwoAbmV0d29ya19pZJPZY8AKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_gray_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo7EUk30hmUtYDCgBuZXR3b3JrX2lkh8jVIwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:gray_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAwAACAQAbmFtZR4AbWluZWNyYWZ0OmdyYXlfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoW77af6WihdwDCgBuZXR3b3JrX2lkSsqC1woGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:black_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTSAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaAfWYp0xtgcfAwoAbmV0d29ya19pZMWTC8EKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:brown_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaB74EeiLO46XAwoAbmV0d29ya19pZEDHKqwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAwAACAQAbmFtZR0AbWluZWNyYWZ0OnJlZF9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gjFut6Z/VH1gMKAG5ldHdvcmtfaWSvcmwYCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:orange_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAwAACAQAbmFtZSAAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2gADDj2IJiw+gMKAG5ldHdvcmtfaWTHph0FCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:yellow_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAwAACAQAbmFtZSAAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iy6qKNn3ob5wMKAG5ldHdvcmtfaWQZAI39CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAwAACAQAbmFtZR4AbWluZWNyYWZ0OmxpbWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNo4dYIPslbXPUDCgBuZXR3b3JrX2lk2O8X0AoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:green_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAwAACAQAbmFtZR8AbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlX3Bvd2RlcgQJAG5hbWVfaGFzaM/c9x2aJh3HAwoAbmV0d29ya19pZA0VfBMKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cyan_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAwAACAQAbmFtZR4AbWluZWNyYWZ0OmN5YW5fY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNok+xKAe7XXjoDCgBuZXR3b3JrX2lkmkn6uwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAwAACAQAbmFtZSQAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNogScpIQceyAEDCgBuZXR3b3JrX2lkOmVSbgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:blue_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTOAwAACAQAbmFtZR4AbWluZWNyYWZ0OmJsdWVfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoFp7mmeL86r0DCgBuZXR3b3JrX2lkS3b3RQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:purple_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAwAACAQAbmFtZSAAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZV9wb3dkZXIECQBuYW1lX2hhc2iYcVU04hoStwMKAG5ldHdvcmtfaWQXimEjCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAwAACAQAbmFtZSEAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoy/70q6VPsWgDCgBuZXR3b3JrX2lkf9mxQwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pink_concrete_powder",
+            "groupId": 20,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAwAACAQAbmFtZR4AbWluZWNyYWZ0OnBpbmtfY29uY3JldGVfcG93ZGVyBAkAbmFtZV9oYXNoVikSAf8DwV0DCgBuZXR3b3JrX2lku2MivwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:white_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsAAAACAQAbmFtZRgAbWluZWNyYWZ0OndoaXRlX2NvbmNyZXRlBAkAbmFtZV9oYXNo6zAp7lsLlvkDCgBuZXR3b3JrX2lk3MAYQAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_gray_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY29uY3JldGUECQBuYW1lX2hhc2hEtet5wuDIKAMKAG5ldHdvcmtfaWQISs02CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:gray_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AwAACAQAbmFtZRcAbWluZWNyYWZ0OmdyYXlfY29uY3JldGUECQBuYW1lX2hhc2j92INnb0a83AMKAG5ldHdvcmtfaWQj8RHwCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:black_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAwAACAQAbmFtZRgAbWluZWNyYWZ0OmJsYWNrX2NvbmNyZXRlBAkAbmFtZV9oYXNo2X7NDIQmZ70DCgBuZXR3b3JrX2lk2uiVDQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:brown_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AwAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX2NvbmNyZXRlBAkAbmFtZV9oYXNoeka02BwXf6oDCgBuZXR3b3JrX2lkYf+xDQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:red_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSAAwAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9jb25jcmV0ZQQJAG5hbWVfaGFzaPWmNowLGubqAwoAbmV0d29ya19pZKwyx58KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:orange_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRzAwAACAQAbmFtZRkAbWluZWNyYWZ0Om9yYW5nZV9jb25jcmV0ZQQJAG5hbWVfaGFzaAgE8XmaAi6+AwoAbmV0d29ya19pZMDQNz8KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:yellow_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR2AwAACAQAbmFtZRkAbWluZWNyYWZ0OnllbGxvd19jb25jcmV0ZQQJAG5hbWVfaGFzaE6ONfJPBd0+AwoAbmV0d29ya19pZMarutwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:lime_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR3AwAACAQAbmFtZRcAbWluZWNyYWZ0OmxpbWVfY29uY3JldGUECQBuYW1lX2hhc2gnd8JW6wmJcAMKAG5ldHdvcmtfaWTd47aoCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:green_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR/AwAACAQAbmFtZRgAbWluZWNyYWZ0OmdyZWVuX2NvbmNyZXRlBAkAbmFtZV9oYXNokbFxRKchQZkDCgBuZXR3b3JrX2lkmhZWUgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cyan_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AwAACAQAbmFtZRcAbWluZWNyYWZ0OmN5YW5fY29uY3JldGUECQBuYW1lX2hhc2hFRrWJ33qj1wMKAG5ldHdvcmtfaWQbi5b8CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:light_blue_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR1AwAACAQAbmFtZR0AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY29uY3JldGUECQBuYW1lX2hhc2gHAe0kl0SE4AMKAG5ldHdvcmtfaWRL/GbSCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AwAACAQAbmFtZRcAbWluZWNyYWZ0OmJsdWVfY29uY3JldGUECQBuYW1lX2hhc2hiay301nnj1wMKAG5ldHdvcmtfaWRMvFXNCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:purple_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR8AwAACAQAbmFtZRkAbWluZWNyYWZ0OnB1cnBsZV9jb25jcmV0ZQQJAG5hbWVfaGFzaHBHflsPIwdXAwoAbmV0d29ya19pZCyKA5gKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:magenta_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AwAACAQAbmFtZRoAbWluZWNyYWZ0Om1hZ2VudGFfY29uY3JldGUECQBuYW1lX2hhc2gN7LuB/OvdZAMKAG5ldHdvcmtfaWTc6ZOdCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pink_concrete",
+            "groupId": 21,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpbmtfY29uY3JldGUECQBuYW1lX2hhc2ii2G5F0u3SOAMKAG5ldHdvcmtfaWSszGgrCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:hardened_clay",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSsAAAACAQAbmFtZRcAbWluZWNyYWZ0OmhhcmRlbmVkX2NsYXkECQBuYW1lX2hhc2jrnRwCJ0krJAMKAG5ldHdvcmtfaWRBCOrrCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:white_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAAAACAQAbmFtZRoAbWluZWNyYWZ0OndoaXRlX3RlcnJhY290dGEECQBuYW1lX2hhc2j3RSdgmnAIewMKAG5ldHdvcmtfaWSimKw+CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:light_gray_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2dyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAz1Ri3wIxomAwoAbmV0d29ya19pZH5qgOcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:gray_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAwAACAQAbmFtZRkAbWluZWNyYWZ0OmdyYXlfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAXdSLAaNZ9vAwoAbmV0d29ya19pZM1QDV0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:black_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsYWNrX3RlcnJhY290dGEECQBuYW1lX2hhc2jxssdv5vlbpgMKAG5ldHdvcmtfaWRE3Ru/CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJyb3duX3RlcnJhY290dGEECQBuYW1lX2hhc2gG4kPenmOF9gMKAG5ldHdvcmtfaWQ/i0iNCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAwAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo7fX56HXFejEDCgBuZXR3b3JrX2lk8tTF8QoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:orange_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAwAACAQAbmFtZRsAbWluZWNyYWZ0Om9yYW5nZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNo0Hjmql3sruMDCgBuZXR3b3JrX2lklmqmkAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:yellow_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAwAACAQAbmFtZRsAbWluZWNyYWZ0OnllbGxvd190ZXJyYWNvdHRhBAkAbmFtZV9oYXNoqkyKKrmA3VcDCgBuZXR3b3JrX2lkaM/orAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:lime_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAwAACAQAbmFtZRkAbWluZWNyYWZ0OmxpbWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaANjADFOF9v7AwoAbmV0d29ya19pZJt0XsgKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:green_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyZWVuX3RlcnJhY290dGEECQBuYW1lX2hhc2j5Ybq36yYwRQMKAG5ldHdvcmtfaWQ8kGdHCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAwAACAQAbmFtZRkAbWluZWNyYWZ0OmN5YW5fdGVycmFjb3R0YQQJAG5hbWVfaGFzaN09COzMuHwAAwoAbmV0d29ya19pZIWPCzoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_blue_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAwAACAQAbmFtZR8AbWluZWNyYWZ0OmxpZ2h0X2JsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaOMytez7cOZiAwoAbmV0d29ya19pZFHK1UsKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:blue_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAwAACAQAbmFtZRkAbWluZWNyYWZ0OmJsdWVfdGVycmFjb3R0YQQJAG5hbWVfaGFzaF6inyTK5RpAAwoAbmV0d29ya19pZF5mVZIKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:purple_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAwAACAQAbmFtZRsAbWluZWNyYWZ0OnB1cnBsZV90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoKF7YG61yTbEDCgBuZXR3b3JrX2lkhtRDlwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:magenta_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAwAACAQAbmFtZRwAbWluZWNyYWZ0Om1hZ2VudGFfdGVycmFjb3R0YQQJAG5hbWVfaGFzaLWvtpAVtztyAwoAbmV0d29ya19pZN5SoakKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pink_terracotta",
+            "groupId": 22,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAwAACAQAbmFtZRkAbWluZWNyYWZ0OnBpbmtfdGVycmFjb3R0YQQJAG5hbWVfaGFzaJ7mzvyzSQZTAwoAbmV0d29ya19pZDJWe4YKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAAAACAQAbmFtZSEAbWluZWNyYWZ0OndoaXRlX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoiVzCdoHAJo0DCgBuZXR3b3JrX2lkIlj9AAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:silver_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAAAACAQAbmFtZSIAbWluZWNyYWZ0OnNpbHZlcl9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaAVsA0CnhzA4AwoAbmV0d29ya19pZPnxtJEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:gray_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAAAACAQAbmFtZSAAbWluZWNyYWZ0OmdyYXlfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2jvLZt9u/lF/AMKAG5ldHdvcmtfaWQVU8eFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:black_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJsYWNrX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoe8I4xAXbO5UDCgBuZXR3b3JrX2lk2Icb9AoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAAAACAQAbmFtZSEAbWluZWNyYWZ0OmJyb3duX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNoSiNZOobbpjoDCgBuZXR3b3JrX2lkJy0jwgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAAAACAQAbmFtZR8AbWluZWNyYWZ0OnJlZF9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaBdWFGLmCLFVAwoAbmV0d29ya19pZMYBJSEKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:orange_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTdAAAACAQAbmFtZSIAbWluZWNyYWZ0Om9yYW5nZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaMyJMrnPr7szAwoAbmV0d29ya19pZN6+7TUKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:yellow_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAAAACAQAbmFtZSIAbWluZWNyYWZ0OnllbGxvd19nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaN6NaIhf6m0uAwoAbmV0d29ya19pZKRHXeoKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:lime_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAAAACAQAbmFtZSAAbWluZWNyYWZ0OmxpbWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2iF3E68/rB2EAMKAG5ldHdvcmtfaWSP7qQWCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:green_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAAAACAQAbmFtZSEAbWluZWNyYWZ0OmdyZWVuX2dsYXplZF90ZXJyYWNvdHRhBAkAbmFtZV9oYXNow5mo8aQDFboDCgBuZXR3b3JrX2lkoF11kgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:cyan_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAAAACAQAbmFtZSAAbWluZWNyYWZ0OmN5YW5fZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gnNB+cCFRJhwMKAG5ldHdvcmtfaWT9buMtCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_blue_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAAAACAQAbmFtZSYAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2gladnCDBKCigMKAG5ldHdvcmtfaWS5CszFCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:blue_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAAAACAQAbmFtZSAAbWluZWNyYWZ0OmJsdWVfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2giOZK+2nB1igMKAG5ldHdvcmtfaWR+e22CCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:purple_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTbAAAACAQAbmFtZSIAbWluZWNyYWZ0OnB1cnBsZV9nbGF6ZWRfdGVycmFjb3R0YQQJAG5hbWVfaGFzaIQU03txeAfHAwoAbmV0d29ya19pZLKbSE4KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:magenta_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAAAACAQAbmFtZSMAbWluZWNyYWZ0Om1hZ2VudGFfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2i/SNqDJbfjMgMKAG5ldHdvcmtfaWQKf9UvCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pink_glazed_terracotta",
+            "groupId": 23,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAAAACAQAbmFtZSAAbWluZWNyYWZ0OnBpbmtfZ2xhemVkX3RlcnJhY290dGEECQBuYW1lX2hhc2hik8DVt4g+twMKAG5ldHdvcmtfaWTKzav2CgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:purpur_block",
+            "groupId": 24,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnB1cnB1cl9ibG9jawQJAG5hbWVfaGFzaAgLwnUZGlzsAwoAbmV0d29ya19pZGCZ+4UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:purpur_pillar",
+            "groupId": 24,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS2BAAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnB1cl9waWxsYXIECQBuYW1lX2hhc2iFcSsdykO+jgMKAG5ldHdvcmtfaWQe0+geCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:packed_mud",
+            "groupId": 24,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcAgAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9tdWQECQBuYW1lX2hhc2gHOMa121h4FgMKAG5ldHdvcmtfaWTUb6LyCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:mud_bricks",
+            "groupId": 24,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAgAACAQAbmFtZRQAbWluZWNyYWZ0Om11ZF9icmlja3MECQBuYW1lX2hhc2iDL/SVl/PewQMKAG5ldHdvcmtfaWSkBjaDCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:nether_wart_block",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAAAACAQAbmFtZRsAbWluZWNyYWZ0Om5ldGhlcl93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9XGS4GNnlV4DCgBuZXR3b3JrX2lkh3apIgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_wart_block",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAQAACAQAbmFtZRsAbWluZWNyYWZ0OndhcnBlZF93YXJ0X2Jsb2NrBAkAbmFtZV9oYXNo9IqDS9yUPJoDCgBuZXR3b3JrX2lkMpKAbAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:shroomlight",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTlAQAACAQAbmFtZRUAbWluZWNyYWZ0OnNocm9vbWxpZ2h0BAkAbmFtZV9oYXNoZHCHcHX/HYADCgBuZXR3b3JrX2lkLG2JiwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:crimson_nylium",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTnAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fbnlsaXVtBAkAbmFtZV9oYXNoOr6DJYW2bFYDCgBuZXR3b3JrX2lkuWpRDgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_nylium",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWToAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9ueWxpdW0ECQBuYW1lX2hhc2g0Zf89cfr3rwMKAG5ldHdvcmtfaWSu/kekCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:netherrack",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXAAAACAQAbmFtZRQAbWluZWNyYWZ0Om5ldGhlcnJhY2sECQBuYW1lX2hhc2i/r5ZyRsvPyQMKAG5ldHdvcmtfaWTAiTOACgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:soul_soil",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAQAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc29pbAQJAG5hbWVfaGFzaC1/87ccutuTAwoAbmV0d29ya19pZKc63SMKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:grass_block",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXNzX2Jsb2NrBAkAbmFtZV9oYXNojPyGp3/CSZwDCgBuZXR3b3JrX2lktCgx3goGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:podzol",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBvZHpvbAQJAG5hbWVfaGFzaBzqokRjH4Z1AwoAbmV0d29ya19pZPPS/GUKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mycelium",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAAAACAQAbmFtZRIAbWluZWNyYWZ0Om15Y2VsaXVtBAkAbmFtZV9oYXNojTN09cKickIDCgBuZXR3b3JrX2lkLNPxXQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:grass_path",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGAAAACAQAbmFtZRQAbWluZWNyYWZ0OmdyYXNzX3BhdGgECQBuYW1lX2hhc2i0/KZV8Qsy+gMKAG5ldHdvcmtfaWT7CcdzCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dirt",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmRpcnQECQBuYW1lX2hhc2hXp6jnXAe+kQMKAG5ldHdvcmtfaWSG706CCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:coarse_dirt",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBBAAACAQAbmFtZRUAbWluZWNyYWZ0OmNvYXJzZV9kaXJ0BAkAbmFtZV9oYXNosd+cah7WSmoDCgBuZXR3b3JrX2lkgS5RcAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dirt_with_roots",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRpcnRfd2l0aF9yb290cwQJAG5hbWVfaGFzaLCNDYPviDCIAwoAbmV0d29ya19pZNCkwzoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:farmland",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AAAACAQAbmFtZRIAbWluZWNyYWZ0OmZhcm1sYW5kBAkAbmFtZV9oYXNoxyQ5ag7LolADCgBuZXR3b3JrX2lkX618FQoGAHN0YXRlcwMSAG1vaXN0dXJpemVkX2Ftb3VudAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mud",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTYAgAACAQAbmFtZQ0AbWluZWNyYWZ0Om11ZAQJAG5hbWVfaGFzaPb/3P+uLy+9AwoAbmV0d29ya19pZPIUlUkKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:clay",
+            "groupId": 25,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAAAACAQAbmFtZQ4AbWluZWNyYWZ0OmNsYXkECQBuYW1lX2hhc2j/S6sKXRcpzwMKAG5ldHdvcmtfaWRmsb8nCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:iron_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAAAACAQAbmFtZRIAbWluZWNyYWZ0Omlyb25fb3JlBAkAbmFtZV9oYXNoS7BYtLnfx3gDCgBuZXR3b3JrX2lk3loneQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:gold_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAAAACAQAbmFtZRIAbWluZWNyYWZ0OmdvbGRfb3JlBAkAbmFtZV9oYXNoC5Y+DUGXLC4DCgBuZXR3b3JrX2lkNhvMfwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:diamond_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AAAACAQAbmFtZRUAbWluZWNyYWZ0OmRpYW1vbmRfb3JlBAkAbmFtZV9oYXNokUOJ2wZZrGQDCgBuZXR3b3JrX2lk/dChVAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:lapis_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQVAAAACAQAbmFtZRMAbWluZWNyYWZ0OmxhcGlzX29yZQQJAG5hbWVfaGFzaMrmrUrSzb7qAwoAbmV0d29ya19pZMg+qK4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:redstone_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZHN0b25lX29yZQQJAG5hbWVfaGFzaFHVnp8Wc4JbAwoAbmV0d29ya19pZKDYvQoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:coal_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAAAACAQAbmFtZRIAbWluZWNyYWZ0OmNvYWxfb3JlBAkAbmFtZV9oYXNo1OjA+Iuy51oDCgBuZXR3b3JrX2lk+R/aKAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:copper_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AgAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcHBlcl9vcmUECQBuYW1lX2hhc2iSZduSntOzOwMKAG5ldHdvcmtfaWQtIuCnCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:emerald_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVtZXJhbGRfb3JlBAkAbmFtZV9oYXNoJTovr+VgINsDCgBuZXR3b3JrX2lknbkqCgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:quartz_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAAAACAQAbmFtZRQAbWluZWNyYWZ0OnF1YXJ0el9vcmUECQBuYW1lX2hhc2g0yNHLMK9TaQMKAG5ldHdvcmtfaWSzN7nzCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:nether_gold_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAgAACAQAbmFtZRkAbWluZWNyYWZ0Om5ldGhlcl9nb2xkX29yZQQJAG5hbWVfaGFzaEJZ7segIBgBAwoAbmV0d29ya19pZNI9pDgKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:ancient_debris",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFuY2llbnRfZGVicmlzBAkAbmFtZV9oYXNoNrbxMc9AwKcDCgBuZXR3b3JrX2lkrSNjEAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:deepslate_iron_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9pcm9uX29yZQQJAG5hbWVfaGFzaB/fDL9pgvXXAwoAbmV0d29ya19pZFA0bz4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_gold_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9nb2xkX29yZQQJAG5hbWVfaGFzaF9G7WYhKFinAwoAbmV0d29ya19pZHQTfBUKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_diamond_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9kaWFtb25kX29yZQQJAG5hbWVfaGFzaEUH5USh+iD3AwoAbmV0d29ya19pZHP6VzAKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_lapis_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAgAACAQAbmFtZR0AbWluZWNyYWZ0OmRlZXBzbGF0ZV9sYXBpc19vcmUECQBuYW1lX2hhc2j+yFxU/KZs1gMKAG5ldHdvcmtfaWRKINzICgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_redstone_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAgAACAQAbmFtZSAAbWluZWNyYWZ0OmRlZXBzbGF0ZV9yZWRzdG9uZV9vcmUECQBuYW1lX2hhc2iVgM3wWWD6ugMKAG5ldHdvcmtfaWReBdYRCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate_emerald_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAgAACAQAbmFtZR8AbWluZWNyYWZ0OmRlZXBzbGF0ZV9lbWVyYWxkX29yZQQJAG5hbWVfaGFzaNlfo5HTwS6wAwoAbmV0d29ya19pZNeie6sKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_coal_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAgAACAQAbmFtZRwAbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb2FsX29yZQQJAG5hbWVfaGFzaIjikmcbRrPPAwoAbmV0d29ya19pZD9TiygKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:deepslate_copper_ore",
+            "groupId": 26,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAgAACAQAbmFtZR4AbWluZWNyYWZ0OmRlZXBzbGF0ZV9jb3BwZXJfb3JlBAkAbmFtZV9oYXNottjV4Ev5LAQDCgBuZXR3b3JrX2lkP23rgQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stone",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnN0b25lBAkAbmFtZV9oYXNoE3mqhJxzJycDCgBuZXR3b3JrX2lkIQ4xgAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:granite",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAwAACAQAbmFtZREAbWluZWNyYWZ0OmdyYW5pdGUECQBuYW1lX2hhc2iq+Dur2pw4AwMKAG5ldHdvcmtfaWT2NMfJCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:diorite",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAwAACAQAbmFtZREAbWluZWNyYWZ0OmRpb3JpdGUECQBuYW1lX2hhc2iaFsq2iinZBQMKAG5ldHdvcmtfaWQqGE6XCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:andesite",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAwAACAQAbmFtZRIAbWluZWNyYWZ0OmFuZGVzaXRlBAkAbmFtZV9oYXNosaLIEnQQoSYDCgBuZXR3b3JrX2lkEApRZAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:blackstone",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAgAACAQAbmFtZRQAbWluZWNyYWZ0OmJsYWNrc3RvbmUECQBuYW1lX2hhc2iMFYziD80D6QMKAG5ldHdvcmtfaWSrUryHCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:deepslate",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AgAACAQAbmFtZRMAbWluZWNyYWZ0OmRlZXBzbGF0ZQQJAG5hbWVfaGFzaKX5pAblxz8TAwoAbmV0d29ya19pZOJoQjsKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:tuff",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAgAACAQAbmFtZQ4AbWluZWNyYWZ0OnR1ZmYECQBuYW1lX2hhc2h1Rwc1XYsBGwMKAG5ldHdvcmtfaWRwQGn0CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:basalt",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhc2FsdAQJAG5hbWVfaGFzaH+UQO2yWodiAwoAbmV0d29ya19pZBPNSV4KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_granite",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2dyYW5pdGUECQBuYW1lX2hhc2iLiEfys8pFIAMKAG5ldHdvcmtfaWTCxxcHCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_diorite",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBvbGlzaGVkX2Rpb3JpdGUECQBuYW1lX2hhc2hTxY4fKmNmlAMKAG5ldHdvcmtfaWTmtjdRCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_andesite",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSAwAACAQAbmFtZRsAbWluZWNyYWZ0OnBvbGlzaGVkX2FuZGVzaXRlBAkAbmFtZV9oYXNovl28uFk4HuQDCgBuZXR3b3JrX2lklFjuCwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:polished_blackstone",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAgAACAQAbmFtZR0AbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmUECQBuYW1lX2hhc2jT9fHCl6vWQQMKAG5ldHdvcmtfaWR/Ho6oCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_deepslate",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AgAACAQAbmFtZRwAbWluZWNyYWZ0OnBvbGlzaGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaHC1edoaWF3uAwoAbmV0d29ya19pZCPeQsEKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:polished_tuff",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBvbGlzaGVkX3R1ZmYECQBuYW1lX2hhc2hyaLe/KEVZ0gMKAG5ldHdvcmtfaWTcX3NrCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_basalt",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTqAQAACAQAbmFtZRkAbWluZWNyYWZ0OnBvbGlzaGVkX2Jhc2FsdAQJAG5hbWVfaGFzaMS+L0gMnRcBAwoAbmV0d29ya19pZF+/mHwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:smooth_basalt",
+            "groupId": 27,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AgAACAQAbmFtZRcAbWluZWNyYWZ0OnNtb290aF9iYXNhbHQECQBuYW1lX2hhc2jKPUdz89kuNAMKAG5ldHdvcmtfaWTkb/oVCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:gravel",
+            "groupId": 28,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAAAACAQAbmFtZRAAbWluZWNyYWZ0OmdyYXZlbAQJAG5hbWVfaGFzaOFxz8XJd2r/AwoAbmV0d29ya19pZBpfI1sKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:sand",
+            "groupId": 28,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNhbmQECQBuYW1lX2hhc2i6lthXXbAyWAMKAG5ldHdvcmtfaWRjeUMICgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:red_sand",
+            "groupId": 28,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS0BAAACAQAbmFtZRIAbWluZWNyYWZ0OnJlZF9zYW5kBAkAbmFtZV9oYXNoCiarI69JQCkDCgBuZXR3b3JrX2lkU8UD/AoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cactus",
+            "groupId": 28,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAAAACAQAbmFtZRAAbWluZWNyYWZ0OmNhY3R1cwQJAG5hbWVfaGFzaCG9zL0N4wvGAwoAbmV0d29ya19pZDeCERAKBgBzdGF0ZXMDAwBhZ2UAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:oak_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAAAACAQAbmFtZREAbWluZWNyYWZ0Om9ha19sb2cECQBuYW1lX2hhc2ho6TS+K7PZFQMKAG5ldHdvcmtfaWQjfjoxCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_oak_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQJAQAACAQAbmFtZRoAbWluZWNyYWZ0OnN0cmlwcGVkX29ha19sb2cECQBuYW1lX2hhc2h8dqh+OOHU4wMKAG5ldHdvcmtfaWSYKjdrCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:spruce_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AwAACAQAbmFtZRQAbWluZWNyYWZ0OnNwcnVjZV9sb2cECQBuYW1lX2hhc2hZ03qaLoF3WgMKAG5ldHdvcmtfaWRlFD8eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_spruce_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV9sb2cECQBuYW1lX2hhc2iNrhKjS5IyrgMKAG5ldHdvcmtfaWRQcEC3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:birch_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AwAACAQAbmFtZRMAbWluZWNyYWZ0OmJpcmNoX2xvZwQJAG5hbWVfaGFzaBUzT3NxsZAnAwoAbmV0d29ya19pZBKN3VQKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stripped_birch_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAQAACAQAbmFtZRwAbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX2xvZwQJAG5hbWVfaGFzaCFKS4AeuSidAwoAbmV0d29ya19pZN0IONIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:jungle_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AwAACAQAbmFtZRQAbWluZWNyYWZ0Omp1bmdsZV9sb2cECQBuYW1lX2hhc2gkwW0KNulqDgMKAG5ldHdvcmtfaWQaziU/CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_jungle_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV9sb2cECQBuYW1lX2hhc2hAwMsgOk02JAMKAG5ldHdvcmtfaWQvls0eCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:acacia_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAAAACAQAbmFtZRQAbWluZWNyYWZ0OmFjYWNpYV9sb2cECQBuYW1lX2hhc2iV48VpYhjoYQMKAG5ldHdvcmtfaWRxEqe0CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_acacia_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAQAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV9sb2cECQBuYW1lX2hhc2hJb0lQqnEqlgMKAG5ldHdvcmtfaWRg3IdRCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AwAACAQAbmFtZRYAbWluZWNyYWZ0OmRhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaIWfVRd0XUo3AwoAbmV0d29ya19pZPMM7LYKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stripped_dark_oak_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQIAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX2xvZwQJAG5hbWVfaGFzaPFTdxRdPwkOAwoAbmV0d29ya19pZDIzenIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAgAACAQAbmFtZRYAbWluZWNyYWZ0Om1hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaHZe6DzPZBobAwoAbmV0d29ya19pZG6DuYkKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stripped_mangrove_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAgAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX2xvZwQJAG5hbWVfaGFzaLqIBo4hwA//AwoAbmV0d29ya19pZPtRn7UKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cherry_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAwAACAQAbmFtZRQAbWluZWNyYWZ0OmNoZXJyeV9sb2cECQBuYW1lX2hhc2hwFlaioppB1wMKAG5ldHdvcmtfaWS2sdXECgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_cherry_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQWAwAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV9sb2cECQBuYW1lX2hhc2i85H6G+WhXaAMKAG5ldHdvcmtfaWRjzoglCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiBAAACAQAbmFtZRYAbWluZWNyYWZ0OnBhbGVfb2FrX2xvZwQJAG5hbWVfaGFzaIEcMMTin/ihAwoAbmV0d29ya19pZMtoEVwKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stripped_pale_oak_log",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThBAAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX3BhbGVfb2FrX2xvZwQJAG5hbWVfaGFzaBVKFLV2TrFcAwoAbmV0d29ya19pZBY8/GAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:crimson_stem",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTgAQAACAQAbmFtZRYAbWluZWNyYWZ0OmNyaW1zb25fc3RlbQQJAG5hbWVfaGFzaM0FzfL0UTKZAwoAbmV0d29ya19pZKvzID0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stripped_crimson_stem",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvAQAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25fc3RlbQQJAG5hbWVfaGFzaDlA6nood57EAwoAbmV0d29ya19pZHrIqjIKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_stem",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAQAACAQAbmFtZRUAbWluZWNyYWZ0OndhcnBlZF9zdGVtBAkAbmFtZV9oYXNon7cKfPZxdrUDCgBuZXR3b3JrX2lkerWyMwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_warped_stem",
+            "groupId": 29,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAQAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9zdGVtBAkAbmFtZV9oYXNoEw+y0dDPSd8DCgBuZXR3b3JrX2lkIQ9vBAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:oak_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAQAACAQAbmFtZRIAbWluZWNyYWZ0Om9ha193b29kBAkAbmFtZV9oYXNoqQIkuVPyJX0DCgBuZXR3b3JrX2lku2G1YAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_oak_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnN0cmlwcGVkX29ha193b29kBAkAbmFtZV9oYXNovW6KCv+VZnsDCgBuZXR3b3JrX2lkkhWGegoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQtBAAACAQAbmFtZRUAbWluZWNyYWZ0OnNwcnVjZV93b29kBAkAbmFtZV9oYXNoTrIJ5TAQ+OgDCgBuZXR3b3JrX2lkaXLxCwoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_spruce_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzBAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX3NwcnVjZV93b29kBAkAbmFtZV9oYXNoMnuUk4Xo6icDCgBuZXR3b3JrX2lkes2ydAoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuBAAACAQAbmFtZRQAbWluZWNyYWZ0OmJpcmNoX3dvb2QECQBuYW1lX2hhc2iqVjG4xt0cKQMKAG5ldHdvcmtfaWS06c5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_birch_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0BAAACAQAbmFtZR0AbWluZWNyYWZ0OnN0cmlwcGVkX2JpcmNoX3dvb2QECQBuYW1lX2hhc2hm88R604TKbAMKAG5ldHdvcmtfaWRleEMJCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvBAAACAQAbmFtZRUAbWluZWNyYWZ0Omp1bmdsZV93b29kBAkAbmFtZV9oYXNo9bYW29ORWCoDCgBuZXR3b3JrX2lkyFyKLQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_jungle_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ1BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2p1bmdsZV93b29kBAkAbmFtZV9oYXNoUVs6KsZQRBoDCgBuZXR3b3JrX2lk92k8HQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQwBAAACAQAbmFtZRUAbWluZWNyYWZ0OmFjYWNpYV93b29kBAkAbmFtZV9oYXNoKkDfgzlJUcIDCgBuZXR3b3JrX2lkuTWlcgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_acacia_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2BAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2FjYWNpYV93b29kBAkAbmFtZV9oYXNo/kOPN2bCJhUDCgBuZXR3b3JrX2lktl6LwQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxBAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2jaKv4ORLadAAMKAG5ldHdvcmtfaWSDrNQ8CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_dark_oak_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3BAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX2Rhcmtfb2FrX3dvb2QECQBuYW1lX2hhc2h2jFDfKVFgfAMKAG5ldHdvcmtfaWTgZQ5VCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAgAACAQAbmFtZRcAbWluZWNyYWZ0Om1hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2iXVxG0JG2fVAMKAG5ldHdvcmtfaWSkqJ4cCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_mangrove_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX21hbmdyb3ZlX3dvb2QECQBuYW1lX2hhc2h7CkbaBF7/WAMKAG5ldHdvcmtfaWQLAX88CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAwAACAQAbmFtZRUAbWluZWNyYWZ0OmNoZXJyeV93b29kBAkAbmFtZV9oYXNoAW8srlmpBM8DCgBuZXR3b3JrX2lkLPsAwgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_cherry_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAwAACAQAbmFtZR4AbWluZWNyYWZ0OnN0cmlwcGVkX2NoZXJyeV93b29kBAkAbmFtZV9oYXNo/e7KXv+CB38DCgBuZXR3b3JrX2lkg5aVtQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTsBAAACAQAbmFtZRcAbWluZWNyYWZ0OnBhbGVfb2FrX3dvb2QECQBuYW1lX2hhc2hGlXnbUgRIggMKAG5ldHdvcmtfaWRPLx7LCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_pale_oak_wood",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTrBAAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3BhbGVfb2FrX3dvb2QECQBuYW1lX2hhc2iqaxd6ta2eNAMKAG5ldHdvcmtfaWQI+pz3CgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_hyphae",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQqAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNouRmKmfSqEWADCgBuZXR3b3JrX2lk+Tm5rQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stripped_crimson_hyphae",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQrAgAACAQAbmFtZSEAbWluZWNyYWZ0OnN0cmlwcGVkX2NyaW1zb25faHlwaGFlBAkAbmFtZV9oYXNoFffwmABq4LUDCgBuZXR3b3JrX2lkZAlUbgoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_hyphae",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQpAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2hn8plQUr6pmQMKAG5ldHdvcmtfaWRU2AIBCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:stripped_warped_hyphae",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQsAgAACAQAbmFtZSAAbWluZWNyYWZ0OnN0cmlwcGVkX3dhcnBlZF9oeXBoYWUECQBuYW1lX2hhc2irKq+HYPSgjQMKAG5ldHdvcmtfaWSbrOPDCgYAc3RhdGVzCAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_block",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQOAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJhbWJvb19ibG9jawQJAG5hbWVfaGFzaAbDeur6stIBAwoAbmV0d29ya19pZCJAwn0KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:stripped_bamboo_block",
+            "groupId": 30,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAwAACAQAbmFtZR8AbWluZWNyYWZ0OnN0cmlwcGVkX2JhbWJvb19ibG9jawQJAG5hbWVfaGFzaJpwytpZOZM9AwoAbmV0d29ya19pZKuRbNEKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:oak_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQSAAAACAQAbmFtZRQAbWluZWNyYWZ0Om9ha19sZWF2ZXMECQBuYW1lX2hhc2h6O4xGqA2oKgMKAG5ldHdvcmtfaWT98c59CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:spruce_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfBAAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9sZWF2ZXMECQBuYW1lX2hhc2i9x1CtNAuqZwMKAG5ldHdvcmtfaWSzF7pTCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:birch_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgBAAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2xlYXZlcwQJAG5hbWVfaGFzaBlAGHaoaLZSAwoAbmV0d29ya19pZOjtvWcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:jungle_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhBAAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9sZWF2ZXMECQBuYW1lX2hhc2iW1uAH07zGhgMKAG5ldHdvcmtfaWSA5KX0CgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:acacia_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAAAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9sZWF2ZXMECQBuYW1lX2hhc2iZJf8dAgDRNQMKAG5ldHdvcmtfaWQ/G7VuCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dark_oak_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiBAAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaCk7rDipWFSjAwoAbmV0d29ya19pZJ2AkbYKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:mangrove_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2xlYXZlcwQJAG5hbWVfaGFzaKyI/dWvhEG8AwoAbmV0d29ya19pZPQxCZ8KBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cherry_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQjAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9sZWF2ZXMECQBuYW1lX2hhc2giTs9ChhYBlQMKAG5ldHdvcmtfaWR8bPpwCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pale_oak_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX2xlYXZlcwQJAG5hbWVfaGFzaKVccFYyf0wbAwoAbmV0d29ya19pZNFNvgcKBgBzdGF0ZXMBDgBwZXJzaXN0ZW50X2JpdAABCgB1cGRhdGVfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:azalea_leaves",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAgAACAQAbmFtZRcAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXMECQBuYW1lX2hhc2iXFhD57wFS7AMKAG5ldHdvcmtfaWTNB/9ECgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:azalea_leaves_flowered",
+            "groupId": 31,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAgAACAQAbmFtZSAAbWluZWNyYWZ0OmF6YWxlYV9sZWF2ZXNfZmxvd2VyZWQECQBuYW1lX2hhc2gs8jxlS/pMrwMKAG5ldHdvcmtfaWQ7W4PyCgYAc3RhdGVzAQ4AcGVyc2lzdGVudF9iaXQAAQoAdXBkYXRlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:oak_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAAAACAQAbmFtZRUAbWluZWNyYWZ0Om9ha19zYXBsaW5nBAkAbmFtZV9oYXNoogXcT9QfjiUDCgBuZXR3b3JrX2lkG22C+AoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4BAAACAQAbmFtZRgAbWluZWNyYWZ0OnNwcnVjZV9zYXBsaW5nBAkAbmFtZV9oYXNoe8hz4uYP0FcDCgBuZXR3b3JrX2lkUQmhaQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5BAAACAQAbmFtZRcAbWluZWNyYWZ0OmJpcmNoX3NhcGxpbmcECQBuYW1lX2hhc2h348iJQ/tK4wMKAG5ldHdvcmtfaWQ2Uh53CgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6BAAACAQAbmFtZRgAbWluZWNyYWZ0Omp1bmdsZV9zYXBsaW5nBAkAbmFtZV9oYXNo7tyTOdSrxaADCgBuZXR3b3JrX2lkXmBAdAoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7BAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjYWNpYV9zYXBsaW5nBAkAbmFtZV9oYXNo99sg15uoX7ADCgBuZXR3b3JrX2lkPXX1KgoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8BAAACAQAbmFtZRoAbWluZWNyYWZ0OmRhcmtfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2jnVzFplW7cHgMKAG5ldHdvcmtfaWTD4giHCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_propagule",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAgAACAQAbmFtZRwAbWluZWNyYWZ0Om1hbmdyb3ZlX3Byb3BhZ3VsZQQJAG5hbWVfaGFzaJGeox6hkfLFAwoAbmV0d29ya19pZAIpvpYKBgBzdGF0ZXMBBwBoYW5naW5nAAMPAHByb3BhZ3VsZV9zdGFnZQAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQiAwAACAQAbmFtZRgAbWluZWNyYWZ0OmNoZXJyeV9zYXBsaW5nBAkAbmFtZV9oYXNoGrPpNMf1LtcDCgBuZXR3b3JrX2lkypakXQoGAHN0YXRlcwEHAGFnZV9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_sapling",
+            "groupId": 32,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTtBAAACAQAbmFtZRoAbWluZWNyYWZ0OnBhbGVfb2FrX3NhcGxpbmcECQBuYW1lX2hhc2gzvl+QbSfPHwMKAG5ldHdvcmtfaWSzav9sCgYAc3RhdGVzAQcAYWdlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bee_nest",
+            "groupId": 33,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTZAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJlZV9uZXN0BAkAbmFtZV9oYXNo2R2WBxUHEZIDCgBuZXR3b3JrX2lkiXWLEAoGAHN0YXRlcwMJAGRpcmVjdGlvbgAAAAADCwBob25leV9sZXZlbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:wheat_seeds",
+            "groupId": 34
+        },
+        {
+            "id": "minecraft:pumpkin_seeds",
+            "groupId": 34
+        },
+        {
+            "id": "minecraft:melon_seeds",
+            "groupId": 34
+        },
+        {
+            "id": "minecraft:beetroot_seeds",
+            "groupId": 34
+        },
+        {
+            "id": "minecraft:torchflower_seeds",
+            "groupId": 34
+        },
+        {
+            "id": "minecraft:pitcher_pod",
+            "groupId": 34
+        },
+        {
+            "id": "minecraft:wheat",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:beetroot",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:potato",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:poisonous_potato",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:carrot",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:golden_carrot",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:apple",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:golden_apple",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:enchanted_golden_apple",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:melon_block",
+            "groupId": 35,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAAAACAQAbmFtZRUAbWluZWNyYWZ0Om1lbG9uX2Jsb2NrBAkAbmFtZV9oYXNoXxSm0iYpAx8DCgBuZXR3b3JrX2lkC9rqygoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:melon_slice",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:glistering_melon_slice",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:sweet_berries",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:glow_berries",
+            "groupId": 35
+        },
+        {
+            "id": "minecraft:pumpkin",
+            "groupId": 35,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWAAAACAQAbmFtZREAbWluZWNyYWZ0OnB1bXBraW4ECQBuYW1lX2hhc2gc8A3jaSzWbgMKAG5ldHdvcmtfaWRFGA+xCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:carved_pumpkin",
+            "groupId": 36,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNhcnZlZF9wdW1wa2luBAkAbmFtZV9oYXNoPu1T0MJuG90DCgBuZXR3b3JrX2lkXNNn5QoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lit_pumpkin",
+            "groupId": 36,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmxpdF9wdW1wa2luBAkAbmFtZV9oYXNo7gWtEm2uPL0DCgBuZXR3b3JrX2lki8sU4AoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:honeycomb",
+            "groupId": 36
+        },
+        {
+            "id": "minecraft:resin_clump",
+            "groupId": 36,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT9BAAACAQAbmFtZRUAbWluZWNyYWZ0OnJlc2luX2NsdW1wBAkAbmFtZV9oYXNok5dcTB5ZyioDCgBuZXR3b3JrX2lkFbHrwwoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHMAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:fern",
+            "groupId": 37,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPBAAACAQAbmFtZQ4AbWluZWNyYWZ0OmZlcm4ECQBuYW1lX2hhc2iHbj3yXFn4owMKAG5ldHdvcmtfaWQKC6u7CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:large_fern",
+            "groupId": 37,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRgBAAACAQAbmFtZRQAbWluZWNyYWZ0OmxhcmdlX2Zlcm4ECQBuYW1lX2hhc2gnE9sd0LzHtQMKAG5ldHdvcmtfaWTS9hG4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:short_grass",
+            "groupId": 37,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQfAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNob3J0X2dyYXNzBAkAbmFtZV9oYXNobWQghLH0bLcDCgBuZXR3b3JrX2lkJWOOqAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:tall_grass",
+            "groupId": 37,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRfBAAACAQAbmFtZRQAbWluZWNyYWZ0OnRhbGxfZ3Jhc3MECQBuYW1lX2hhc2ii5MyZJpv4sgMKAG5ldHdvcmtfaWRRfeH4CgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:nether_sprouts",
+            "groupId": 37
+        },
+        {
+            "id": "minecraft:fire_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAwAACAQAbmFtZRQAbWluZWNyYWZ0OmZpcmVfY29yYWwECQBuYW1lX2hhc2hOHyyECVQVJwMKAG5ldHdvcmtfaWS9vF0UCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brain_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREAwAACAQAbmFtZRUAbWluZWNyYWZ0OmJyYWluX2NvcmFsBAkAbmFtZV9oYXNoRiWlLCwA2ycDCgBuZXR3b3JrX2lkrjAuhgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:bubble_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAwAACAQAbmFtZRYAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbAQJAG5hbWVfaGFzaJz6rWnl+v2qAwoAbmV0d29ya19pZImIWy0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:tube_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1YmVfY29yYWwECQBuYW1lX2hhc2iYa8oO/tgk7wMKAG5ldHdvcmtfaWRTfND5CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:horn_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAwAACAQAbmFtZRQAbWluZWNyYWZ0Omhvcm5fY29yYWwECQBuYW1lX2hhc2iZnRHjZbnLPgMKAG5ldHdvcmtfaWR+GGp8CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_fire_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbAQJAG5hbWVfaGFzaEPU6tFy/latAwoAbmV0d29ya19pZNMa7V4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dead_brain_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAwAACAQAbmFtZRoAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWwECQBuYW1lX2hhc2j5L6QJCISvzwMKAG5ldHdvcmtfaWQkKzeiCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_bubble_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAwAACAQAbmFtZRsAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsBAkAbmFtZV9oYXNoSTOZ/8wpeNYDCgBuZXR3b3JrX2lka6w9DAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dead_tube_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbAQJAG5hbWVfaGFzaJGjNWhlaIJeAwoAbmV0d29ya19pZO3Z0ygKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dead_horn_coral",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAwAACAQAbmFtZRkAbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbAQJAG5hbWVfaGFzaJBkz3qt+g2cAwoAbmV0d29ya19pZBAN+eYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:fire_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJBAAACAQAbmFtZRgAbWluZWNyYWZ0OmZpcmVfY29yYWxfZmFuBAkAbmFtZV9oYXNosOTxYYxsDLgDCgBuZXR3b3JrX2lkFKxbEgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brain_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHBAAACAQAbmFtZRkAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaAi5uHizSNcqAwoAbmV0d29ya19pZFtLjNwKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:bubble_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIBAAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hy/rX2on17DgMKAG5ldHdvcmtfaWQof60VCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:tube_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSEAQAACAQAbmFtZRgAbWluZWNyYWZ0OnR1YmVfY29yYWxfZmFuBAkAbmFtZV9oYXNo9pbJbo+PphIDCgBuZXR3b3JrX2lkenDTYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:horn_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKBAAACAQAbmFtZRgAbWluZWNyYWZ0Omhvcm5fY29yYWxfZmFuBAkAbmFtZV9oYXNoA+ri6NPDkbUDCgBuZXR3b3JrX2lkezoHNwoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_fire_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hpQO02NDxPvwMKAG5ldHdvcmtfaWTaOJgLCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dead_brain_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLBAAACAQAbmFtZR4AbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfZmFuBAkAbmFtZV9oYXNoI9/+Z4YqMhIDCgBuZXR3b3JrX2lkqYXxYgoGAHN0YXRlcwMTAGNvcmFsX2Zhbl9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_bubble_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2ZhbgQJAG5hbWVfaGFzaBNECtIM6VIOAwoAbmV0d29ya19pZLrNtBEKBgBzdGF0ZXMDEwBjb3JhbF9mYW5fZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dead_tube_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSFAQAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9mYW4ECQBuYW1lX2hhc2hbBBM9jFKWvQMKAG5ldHdvcmtfaWSkJKUWCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dead_horn_coral_fan",
+            "groupId": 38,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROBAAACAQAbmFtZR0AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9mYW4ECQBuYW1lX2hhc2hObElFrHfPygMKAG5ldHdvcmtfaWQ1ZxvmCgYAc3RhdGVzAxMAY29yYWxfZmFuX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_roots",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTeAQAACAQAbmFtZRcAbWluZWNyYWZ0OmNyaW1zb25fcm9vdHMECQBuYW1lX2hhc2j1fWgQLViv5QMKAG5ldHdvcmtfaWRLh5DXCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:warped_roots",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTfAQAACAQAbmFtZRYAbWluZWNyYWZ0OndhcnBlZF9yb290cwQJAG5hbWVfaGFzaBc3WvbJOLlkAwoAbmV0d29ya19pZNLgDnAKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dandelion",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQlAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRhbmRlbGlvbgQJAG5hbWVfaGFzaBJ3bEUi+Nn/AwoAbmV0d29ya19pZBjjC44KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:poppy",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBvcHB5BAkAbmFtZV9oYXNocMF8pITMbkcDCgBuZXR3b3JrX2lk8im6ywoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:blue_orchid",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9BAAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfb3JjaGlkBAkAbmFtZV9oYXNoBjz2MsgB21EDCgBuZXR3b3JrX2lk/iLsSwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:allium",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+BAAACAQAbmFtZRAAbWluZWNyYWZ0OmFsbGl1bQQJAG5hbWVfaGFzaDCGQBHNDTkcAwoAbmV0d29ya19pZD9Dgr0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:azure_bluet",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/BAAACAQAbmFtZRUAbWluZWNyYWZ0OmF6dXJlX2JsdWV0BAkAbmFtZV9oYXNo9N5egqMT2QcDCgBuZXR3b3JrX2lkwIgDnwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:red_tulip",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRABAAACAQAbmFtZRMAbWluZWNyYWZ0OnJlZF90dWxpcAQJAG5hbWVfaGFzaAjMi9Rd+6rhAwoAbmV0d29ya19pZAZCnt8KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:orange_tulip",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRBBAAACAQAbmFtZRYAbWluZWNyYWZ0Om9yYW5nZV90dWxpcAQJAG5hbWVfaGFzaP+NjxMBZ8vAAwoAbmV0d29ya19pZPYatsMKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_tulip",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCBAAACAQAbmFtZRUAbWluZWNyYWZ0OndoaXRlX3R1bGlwBAkAbmFtZV9oYXNo5vbU4VRPh3ADCgBuZXR3b3JrX2lkok+4rQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pink_tulip",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDBAAACAQAbmFtZRQAbWluZWNyYWZ0OnBpbmtfdHVsaXAECQBuYW1lX2hhc2hxDHZa6OaNXAMKAG5ldHdvcmtfaWTiOT+VCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:oxeye_daisy",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWREBAAACAQAbmFtZRUAbWluZWNyYWZ0Om94ZXllX2RhaXN5BAkAbmFtZV9oYXNoXwxsqNQTN9gDCgBuZXR3b3JrX2lkw7R7dwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cornflower",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFBAAACAQAbmFtZRQAbWluZWNyYWZ0OmNvcm5mbG93ZXIECQBuYW1lX2hhc2gnhyC3EeqHgAMKAG5ldHdvcmtfaWR4VrvACgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lily_of_the_valley",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGBAAACAQAbmFtZRwAbWluZWNyYWZ0OmxpbHlfb2ZfdGhlX3ZhbGxleQQJAG5hbWVfaGFzaI64TJSf9mgQAwoAbmV0d29ya19pZFE9+nwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:sunflower",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSvAAAACAQAbmFtZRMAbWluZWNyYWZ0OnN1bmZsb3dlcgQJAG5hbWVfaGFzaAMxYQLoqlZ0AwoAbmV0d29ya19pZA10iSoKBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lilac",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWReBAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxpbGFjBAkAbmFtZV9oYXNoD3nrQJuo7NkDCgBuZXR3b3JrX2lk5W+uFAoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:rose_bush",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhBAAACAQAbmFtZRMAbWluZWNyYWZ0OnJvc2VfYnVzaAQJAG5hbWVfaGFzaLoiFk8LVpGKAwoAbmV0d29ya19pZMZPv48KBgBzdGF0ZXMBDwB1cHBlcl9ibG9ja19iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:peony",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRiBAAACAQAbmFtZQ8AbWluZWNyYWZ0OnBlb255BAkAbmFtZV9oYXNoR4dYc4QquPADCgBuZXR3b3JrX2lkrTe7RwoGAHN0YXRlcwEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pitcher_plant",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAwAACAQAbmFtZRcAbWluZWNyYWZ0OnBpdGNoZXJfcGxhbnQECQBuYW1lX2hhc2hRJHzsbDH+SQMKAG5ldHdvcmtfaWRnY76VCgYAc3RhdGVzAQ8AdXBwZXJfYmxvY2tfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pink_petals",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQkAwAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfcGV0YWxzBAkAbmFtZV9oYXNo6DQwN9SwV3QDCgBuZXR3b3JrX2lkNWneGgoGAHN0YXRlcwMGAGdyb3d0aAAAAAAIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:wither_rose",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXAQAACAQAbmFtZRUAbWluZWNyYWZ0OndpdGhlcl9yb3NlBAkAbmFtZV9oYXNoaSKxl3I516gDCgBuZXR3b3JrX2lkATXLPwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:torchflower",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AwAACAQAbmFtZRUAbWluZWNyYWZ0OnRvcmNoZmxvd2VyBAkAbmFtZV9oYXNoL+mHtElwbqQDCgBuZXR3b3JrX2lkI34O+AoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:closed_eyeblossom",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT6BAAACAQAbmFtZRsAbWluZWNyYWZ0OmNsb3NlZF9leWVibG9zc29tBAkAbmFtZV9oYXNoYbeklHBkRL8DCgBuZXR3b3JrX2lku6xJeAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:open_eyeblossom",
+            "groupId": 39,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT5BAAACAQAbmFtZRkAbWluZWNyYWZ0Om9wZW5fZXllYmxvc3NvbQQJAG5hbWVfaGFzaHH2HXQ24l8fAwoAbmV0d29ya19pZP1bL4YKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:light_gray_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:gray_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:black_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:brown_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:red_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:orange_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:yellow_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:lime_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:green_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:cyan_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:light_blue_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:blue_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:purple_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:magenta_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:pink_dye",
+            "groupId": 40
+        },
+        {
+            "id": "minecraft:ink_sac",
+            "groupId": 41
+        },
+        {
+            "id": "minecraft:glow_ink_sac",
+            "groupId": 41
+        },
+        {
+            "id": "minecraft:cocoa_beans",
+            "groupId": 41
+        },
+        {
+            "id": "minecraft:lapis_lazuli",
+            "groupId": 41
+        },
+        {
+            "id": "minecraft:bone_meal",
+            "groupId": 41
+        },
+        {
+            "id": "minecraft:vine",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnZpbmUECQBuYW1lX2hhc2j0Sj8/XeXOLAMKAG5ldHdvcmtfaWSUkDtbCgYAc3RhdGVzAxMAdmluZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:weeping_vines",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAQAACAQAbmFtZRcAbWluZWNyYWZ0OndlZXBpbmdfdmluZXMECQBuYW1lX2hhc2jrLgLHkQygiwMKAG5ldHdvcmtfaWQ8NHSJCgYAc3RhdGVzAxEAd2VlcGluZ192aW5lc19hZ2UAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:twisting_vines",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAgAACAQAbmFtZRgAbWluZWNyYWZ0OnR3aXN0aW5nX3ZpbmVzBAkAbmFtZV9oYXNoDYR5QgVUQJADCgBuZXR3b3JrX2lk5kYVIQoGAHN0YXRlcwMSAHR3aXN0aW5nX3ZpbmVzX2FnZQAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:waterlily",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAAAACAQAbmFtZRMAbWluZWNyYWZ0OndhdGVybGlseQQJAG5hbWVfaGFzaEHgC4c1SXg0AwoAbmV0d29ya19pZOOerp8KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:seagrass",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSBAQAACAQAbmFtZRIAbWluZWNyYWZ0OnNlYWdyYXNzBAkAbmFtZV9oYXNoHSBFtoHdWxIDCgBuZXR3b3JrX2lkd3lhEAoGAHN0YXRlcwgOAHNlYV9ncmFzc190eXBlBwBkZWZhdWx0AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:kelp",
+            "groupId": 41
+        },
+        {
+            "id": "minecraft:deadbush",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAAAACAQAbmFtZRIAbWluZWNyYWZ0OmRlYWRidXNoBAkAbmFtZV9oYXNoPFODe4IScnYDCgBuZXR3b3JrX2lkVfnl+goGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:bamboo",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhbWJvbwQJAG5hbWVfaGFzaBgpGmyzhedCAwoAbmV0d29ya19pZIZv1nYKBgBzdGF0ZXMBBwBhZ2VfYml0AAgQAGJhbWJvb19sZWFmX3NpemUJAG5vX2xlYXZlcwgWAGJhbWJvb19zdGFsa190aGlja25lc3MEAHRoaW4AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:snow",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnNub3cECQBuYW1lX2hhc2gVHr5XXdETWAMKAG5ldHdvcmtfaWQ0zCeHCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:ice",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAAAACAQAbmFtZQ0AbWluZWNyYWZ0OmljZQQJAG5hbWVfaGFzaNF26f+uUT29AwoAbmV0d29ya19pZOUMaQYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:packed_ice",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSuAAAACAQAbmFtZRQAbWluZWNyYWZ0OnBhY2tlZF9pY2UECQBuYW1lX2hhc2hk4bu123ZrFgMKAG5ldHdvcmtfaWTr/ooaCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_ice",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQKAQAACAQAbmFtZRIAbWluZWNyYWZ0OmJsdWVfaWNlBAkAbmFtZV9oYXNo+EKxYgFhKcgDCgBuZXR3b3JrX2lkxfsA8goGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:snow_layer",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAAAACAQAbmFtZRQAbWluZWNyYWZ0OnNub3dfbGF5ZXIECQBuYW1lX2hhc2hXka6atMYUCQMKAG5ldHdvcmtfaWRCrIPcCgYAc3RhdGVzAQsAY292ZXJlZF9iaXQAAwYAaGVpZ2h0AAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pointed_dripstone",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQzAgAACAQAbmFtZRsAbWluZWNyYWZ0OnBvaW50ZWRfZHJpcHN0b25lBAkAbmFtZV9oYXNoJMISzmHQgt8DCgBuZXR3b3JrX2lkbWrtYgoGAHN0YXRlcwgTAGRyaXBzdG9uZV90aGlja25lc3MDAHRpcAEHAGhhbmdpbmcBAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dripstone_block",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AgAACAQAbmFtZRkAbWluZWNyYWZ0OmRyaXBzdG9uZV9ibG9jawQJAG5hbWVfaGFzaIIXnEqY77YsAwoAbmV0d29ya19pZMZi2kwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:moss_carpet",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWROAgAACAQAbmFtZRUAbWluZWNyYWZ0Om1vc3NfY2FycGV0BAkAbmFtZV9oYXNo/NEDxRPTshYDCgBuZXR3b3JrX2lkaGG3QwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:moss_block",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ/AgAACAQAbmFtZRQAbWluZWNyYWZ0Om1vc3NfYmxvY2sECQBuYW1lX2hhc2iovcsPUYX2tgMKAG5ldHdvcmtfaWT3JSbfCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_moss_carpet",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTxBAAACAQAbmFtZRoAbWluZWNyYWZ0OnBhbGVfbW9zc19jYXJwZXQECQBuYW1lX2hhc2g5SFufsjDdpAMKAG5ldHdvcmtfaWSwu2O/CgYAc3RhdGVzCBoAcGFsZV9tb3NzX2NhcnBldF9zaWRlX2Vhc3QEAG5vbmUIGwBwYWxlX21vc3NfY2FycGV0X3NpZGVfbm9ydGgEAG5vbmUIGwBwYWxlX21vc3NfY2FycGV0X3NpZGVfc291dGgEAG5vbmUIGgBwYWxlX21vc3NfY2FycGV0X3NpZGVfd2VzdAQAbm9uZQEPAHVwcGVyX2Jsb2NrX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pale_moss_block",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfbW9zc19ibG9jawQJAG5hbWVfaGFzaAv55craFDiRAwoAbmV0d29ya19pZNMKFzcKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:pale_hanging_moss",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTyBAAACAQAbmFtZRsAbWluZWNyYWZ0OnBhbGVfaGFuZ2luZ19tb3NzBAkAbmFtZV9oYXNoNjhSFL+E2aQDCgBuZXR3b3JrX2lkC5iPTgoGAHN0YXRlcwEDAHRpcAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:hanging_roots",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ+AgAACAQAbmFtZRcAbWluZWNyYWZ0Omhhbmdpbmdfcm9vdHMECQBuYW1lX2hhc2jaXn+Y5UZpDAMKAG5ldHdvcmtfaWRU4c2vCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:mangrove_roots",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWThAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNoa786PzQGZ6kDCgBuZXR3b3JrX2lklA0AHgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:muddy_mangrove_roots",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTiAgAACAQAbmFtZR4AbWluZWNyYWZ0Om11ZGR5X21hbmdyb3ZlX3Jvb3RzBAkAbmFtZV9oYXNo9YApdHpo1RkDCgBuZXR3b3JrX2lkH0Oc4woGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:big_dripleaf",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJpZ19kcmlwbGVhZgQJAG5hbWVfaGFzaGBEhXjo6qSdAwoAbmV0d29ya19pZMETsb8KBgBzdGF0ZXMBEQBiaWdfZHJpcGxlYWZfaGVhZAEIEQBiaWdfZHJpcGxlYWZfdGlsdAQAbm9uZQgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:small_dripleaf_block",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRPAgAACAQAbmFtZR4AbWluZWNyYWZ0OnNtYWxsX2RyaXBsZWFmX2Jsb2NrBAkAbmFtZV9oYXNojxRAgXP9uWADCgBuZXR3b3JrX2lkozbVPwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24EAGVhc3QBDwB1cHBlcl9ibG9ja19iaXQBAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spore_blossom",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRAAgAACAQAbmFtZRcAbWluZWNyYWZ0OnNwb3JlX2Jsb3Nzb20ECQBuYW1lX2hhc2il3U72Gbco2gMKAG5ldHdvcmtfaWSbbbgcCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:azalea",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQAgAACAQAbmFtZRAAbWluZWNyYWZ0OmF6YWxlYQQJAG5hbWVfaGFzaNyUl+BW9JrBAwoAbmV0d29ya19pZO/XZtQKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:flowering_azalea",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRAgAACAQAbmFtZRoAbWluZWNyYWZ0OmZsb3dlcmluZ19hemFsZWEECQBuYW1lX2hhc2ie9r33wz8kiwMKAG5ldHdvcmtfaWQ3ij0VCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:glow_lichen",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSaAgAACAQAbmFtZRUAbWluZWNyYWZ0Omdsb3dfbGljaGVuBAkAbmFtZV9oYXNobyPUrIYlo44DCgBuZXR3b3JrX2lkvcbWHwoGAHN0YXRlcwMZAG11bHRpX2ZhY2VfZGlyZWN0aW9uX2JpdHMAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:amethyst_block",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAgAACAQAbmFtZRgAbWluZWNyYWZ0OmFtZXRoeXN0X2Jsb2NrBAkAbmFtZV9oYXNob+JK1iiAthcDCgBuZXR3b3JrX2lk8HtpzgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:budding_amethyst",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRHAgAACAQAbmFtZRoAbWluZWNyYWZ0OmJ1ZGRpbmdfYW1ldGh5c3QECQBuYW1lX2hhc2gJvAwfI14fxgMKAG5ldHdvcmtfaWTQYqfACgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:amethyst_cluster",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAgAACAQAbmFtZRoAbWluZWNyYWZ0OmFtZXRoeXN0X2NsdXN0ZXIECQBuYW1lX2hhc2jK82S88Jgm8wMKAG5ldHdvcmtfaWSCPMPGCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:large_amethyst_bud",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRJAgAACAQAbmFtZRwAbWluZWNyYWZ0OmxhcmdlX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaAHhdpWD+sd5AwoAbmV0d29ya19pZKkQxOcKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:medium_amethyst_bud",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRKAgAACAQAbmFtZR0AbWluZWNyYWZ0Om1lZGl1bV9hbWV0aHlzdF9idWQECQBuYW1lX2hhc2g5lBGtC0DzZQMKAG5ldHdvcmtfaWSYiP4gCgYAc3RhdGVzCBQAbWluZWNyYWZ0OmJsb2NrX2ZhY2UCAHVwAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:small_amethyst_bud",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRLAgAACAQAbmFtZRwAbWluZWNyYWZ0OnNtYWxsX2FtZXRoeXN0X2J1ZAQJAG5hbWVfaGFzaEnb4+q9PO4YAwoAbmV0d29ya19pZGWzxrQKBgBzdGF0ZXMIFABtaW5lY3JhZnQ6YmxvY2tfZmFjZQIAdXAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:calcite",
+            "groupId": 41,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAgAACAQAbmFtZREAbWluZWNyYWZ0OmNhbGNpdGUECQBuYW1lX2hhc2ixKLu8ZIdzDQMKAG5ldHdvcmtfaWQlSbJDCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:chicken",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:porkchop",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:beef",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:mutton",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:rabbit",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:cod",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:salmon",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:tropical_fish",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:pufferfish",
+            "groupId": 42
+        },
+        {
+            "id": "minecraft:brown_mushroom",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAAAACAQAbmFtZRgAbWluZWNyYWZ0OmJyb3duX211c2hyb29tBAkAbmFtZV9oYXNonYw/FO78WDoDCgBuZXR3b3JrX2lkLh1OXAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:red_mushroom",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQoAAAACAQAbmFtZRYAbWluZWNyYWZ0OnJlZF9tdXNocm9vbQQJAG5hbWVfaGFzaPpzJua7669xAwoAbmV0d29ya19pZCvWPYkKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_fungus",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTjAQAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fZnVuZ3VzBAkAbmFtZV9oYXNolIcCUuFM2u0DCgBuZXR3b3JrX2lkD2NN0QoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_fungus",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkAQAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9mdW5ndXMECQBuYW1lX2hhc2gq8bSnRVTAFgMKAG5ldHdvcmtfaWTkwS+rCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brown_mushroom_block",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRjAAAACAQAbmFtZR4AbWluZWNyYWZ0OmJyb3duX211c2hyb29tX2Jsb2NrBAkAbmFtZV9oYXNoIyjnbI6xy9sDCgBuZXR3b3JrX2lkdOMhDAoGAHN0YXRlcwMSAGh1Z2VfbXVzaHJvb21fYml0cw4AAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_mushroom_block",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAAAACAQAbmFtZRwAbWluZWNyYWZ0OnJlZF9tdXNocm9vbV9ibG9jawQJAG5hbWVfaGFzaJTTyJbth9M9AwoAbmV0d29ya19pZM+AyboKBgBzdGF0ZXMDEgBodWdlX211c2hyb29tX2JpdHMOAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:mushroom_stem",
+            "groupId": 43,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTvBAAACAQAbmFtZRcAbWluZWNyYWZ0Om11c2hyb29tX3N0ZW0ECQBuYW1lX2hhc2i2SozhK9NLpgMKAG5ldHdvcmtfaWTTVND+CgYAc3RhdGVzAxIAaHVnZV9tdXNocm9vbV9iaXRzDwAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:egg",
+            "groupId": 44
+        },
+        {
+            "id": "minecraft:sugar_cane",
+            "groupId": 44
+        },
+        {
+            "id": "minecraft:sugar",
+            "groupId": 44
+        },
+        {
+            "id": "minecraft:rotten_flesh",
+            "groupId": 44
+        },
+        {
+            "id": "minecraft:bone",
+            "groupId": 44
+        },
+        {
+            "id": "minecraft:web",
+            "groupId": 44,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQeAAAACAQAbmFtZQ0AbWluZWNyYWZ0OndlYgQJAG5hbWVfaGFzaA4GKQCvG4i9AwoAbmV0d29ya19pZApt+jgKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:spider_eye",
+            "groupId": 44
+        },
+        {
+            "id": "minecraft:mob_spawner",
+            "groupId": 44,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ0AAAACAQAbmFtZRUAbWluZWNyYWZ0Om1vYl9zcGF3bmVyBAkAbmFtZV9oYXNoNwGrCV/Fkh8DCgBuZXR3b3JrX2lkM1wTmgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:trial_spawner",
+            "groupId": 44,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AgAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaWFsX3NwYXduZXIECQBuYW1lX2hhc2iNLRPB4ACz+QMKAG5ldHdvcmtfaWTWFYHGCgYAc3RhdGVzAQcAb21pbm91cwADEwB0cmlhbF9zcGF3bmVyX3N0YXRlAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:vault",
+            "groupId": 44,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ5AgAACAQAbmFtZQ8AbWluZWNyYWZ0OnZhdWx0BAkAbmFtZV9oYXNoCAp9n3IAyqcDCgBuZXR3b3JrX2lk6/P+vwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAQcAb21pbm91cwAICwB2YXVsdF9zdGF0ZQgAaW5hY3RpdmUAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:creaking_heart",
+            "groupId": 44,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTzBAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyZWFraW5nX2hlYXJ0BAkAbmFtZV9oYXNoQcOV0pmSMeADCgBuZXR3b3JrX2lk0dPBzwoGAHN0YXRlcwgUAGNyZWFraW5nX2hlYXJ0X3N0YXRlCAB1cHJvb3RlZAEHAG5hdHVyYWwACAsAcGlsbGFyX2F4aXMBAHkAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:end_portal_frame",
+            "groupId": 44,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR4AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuZF9wb3J0YWxfZnJhbWUECQBuYW1lX2hhc2gqofyUIjGOpQMKAG5ldHdvcmtfaWRbGHf8CgYAc3RhdGVzARIAZW5kX3BvcnRhbF9leWVfYml0AAgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:infested_stone",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRhAAAACAQAbmFtZRgAbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lBAkAbmFtZV9oYXNoxnRcHDu4zqQDCgBuZXR3b3JrX2lkpfcnsgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:infested_cobblestone",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZBAAACAQAbmFtZR4AbWluZWNyYWZ0OmluZmVzdGVkX2NvYmJsZXN0b25lBAkAbmFtZV9oYXNoy+LVCKG2kVMDCgBuZXR3b3JrX2lkpn+icAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:infested_stone_bricks",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRaBAAACAQAbmFtZR8AbWluZWNyYWZ0OmluZmVzdGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaBMnals7a32CAwoAbmV0d29ya19pZNHi2UYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:infested_mossy_stone_bricks",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRbBAAACAQAbmFtZSUAbWluZWNyYWZ0OmluZmVzdGVkX21vc3N5X3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaAmJk+HmVq0rAwoAbmV0d29ya19pZAVH8/sKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:infested_cracked_stone_bricks",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRcBAAACAQAbmFtZScAbWluZWNyYWZ0OmluZmVzdGVkX2NyYWNrZWRfc3RvbmVfYnJpY2tzBAkAbmFtZV9oYXNoMyc60XcfcyoDCgBuZXR3b3JrX2lkaW+kbQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:infested_chiseled_stone_bricks",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRdBAAACAQAbmFtZSgAbWluZWNyYWZ0OmluZmVzdGVkX2NoaXNlbGVkX3N0b25lX2JyaWNrcwQJAG5hbWVfaGFzaNUvNIIg9dZbAwoAbmV0d29ya19pZCajGicKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:infested_deepslate",
+            "groupId": 45,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAgAACAQAbmFtZRwAbWluZWNyYWZ0OmluZmVzdGVkX2RlZXBzbGF0ZQQJAG5hbWVfaGFzaICF2VYccxF1AwoAbmV0d29ya19pZDa/624KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dragon_egg",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR6AAAACAQAbmFtZRQAbWluZWNyYWZ0OmRyYWdvbl9lZ2cECQBuYW1lX2hhc2inMzXrV+/e1wMKAG5ldHdvcmtfaWTgO1yRCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:turtle_egg",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAQAACAQAbmFtZRQAbWluZWNyYWZ0OnR1cnRsZV9lZ2cECQBuYW1lX2hhc2iwSRcxOJIJ9gMKAG5ldHdvcmtfaWSIRNUhCgYAc3RhdGVzCA0AY3JhY2tlZF9zdGF0ZQkAbm9fY3JhY2tzCBAAdHVydGxlX2VnZ19jb3VudAcAb25lX2VnZwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sniffer_egg",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTAwAACAQAbmFtZRUAbWluZWNyYWZ0OnNuaWZmZXJfZWdnBAkAbmFtZV9oYXNoY1lozc8lPcYDCgBuZXR3b3JrX2lk7yb/2QoGAHN0YXRlcwgNAGNyYWNrZWRfc3RhdGUJAG5vX2NyYWNrcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:frog_spawn",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTTAgAACAQAbmFtZRQAbWluZWNyYWZ0OmZyb2dfc3Bhd24ECQBuYW1lX2hhc2iWmd7idp3ZZwMKAG5ldHdvcmtfaWRFzJudCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pearlescent_froglight",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAgAACAQAbmFtZR8AbWluZWNyYWZ0OnBlYXJsZXNjZW50X2Zyb2dsaWdodAQJAG5hbWVfaGFzaKkcFRyycYGyAwoAbmV0d29ya19pZJqYakAKBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:verdant_froglight",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAgAACAQAbmFtZRsAbWluZWNyYWZ0OnZlcmRhbnRfZnJvZ2xpZ2h0BAkAbmFtZV9oYXNoA+eXuTBohrQDCgBuZXR3b3JrX2lkDIVnsQoGAHN0YXRlcwgLAHBpbGxhcl9heGlzAQB5AAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:ochre_froglight",
+            "groupId": 46,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTWAgAACAQAbmFtZRkAbWluZWNyYWZ0Om9jaHJlX2Zyb2dsaWdodAQJAG5hbWVfaGFzaMY59kjPe+c3AwoAbmV0d29ya19pZO2TD50KBgBzdGF0ZXMICwBwaWxsYXJfYXhpcwEAeQADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:chicken_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:bee_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:cow_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:pig_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:sheep_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:wolf_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:polar_bear_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:ocelot_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:cat_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:mooshroom_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:bat_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:parrot_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:rabbit_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:llama_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:horse_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:donkey_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:mule_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:skeleton_horse_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:zombie_horse_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:tropical_fish_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:cod_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:pufferfish_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:salmon_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:dolphin_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:turtle_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:panda_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:fox_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:creeper_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:enderman_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:silverfish_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:skeleton_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:wither_skeleton_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:stray_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:slime_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:spider_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:zombie_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:zombie_pigman_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:husk_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:drowned_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:squid_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:glow_squid_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:cave_spider_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:witch_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:guardian_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:elder_guardian_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:endermite_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:magma_cube_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:strider_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:hoglin_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:piglin_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:zoglin_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:piglin_brute_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:goat_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:axolotl_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:warden_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:allay_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:frog_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:tadpole_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:trader_llama_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:camel_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:ghast_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:blaze_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:shulker_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:vindicator_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:evoker_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:vex_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:villager_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:wandering_trader_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:zombie_villager_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:phantom_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:pillager_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:ravager_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:iron_golem_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:snow_golem_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:sniffer_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:breeze_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:armadillo_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:bogged_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:creaking_spawn_egg",
+            "groupId": 47
+        },
+        {
+            "id": "minecraft:obsidian",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQxAAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2lkaWFuBAkAbmFtZV9oYXNoiz4qrb8QjyEDCgBuZXR3b3JrX2lkuqnPpQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:crying_obsidian",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQgAgAACAQAbmFtZRkAbWluZWNyYWZ0OmNyeWluZ19vYnNpZGlhbgQJAG5hbWVfaGFzaKT0JlA7Z1K+AwoAbmV0d29ya19pZCjbPV4KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bedrock",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQHAAAACAQAbmFtZREAbWluZWNyYWZ0OmJlZHJvY2sECQBuYW1lX2hhc2hWfFrh4LVtxwMKAG5ldHdvcmtfaWT7fKz1CgYAc3RhdGVzAQ4AaW5maW5pYnVybl9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:soul_sand",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYAAAACAQAbmFtZRMAbWluZWNyYWZ0OnNvdWxfc2FuZAQJAG5hbWVfaGFzaMaf+bccu+KTAwoAbmV0d29ya19pZBQSHrMKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:magma",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTVAAAACAQAbmFtZQ8AbWluZWNyYWZ0Om1hZ21hBAkAbmFtZV9oYXNoqyTjKaIsWfYDCgBuZXR3b3JrX2lkyfWAZgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:nether_wart",
+            "groupId": 48
+        },
+        {
+            "id": "minecraft:end_stone",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR5AAAACAQAbmFtZRMAbWluZWNyYWZ0OmVuZF9zdG9uZQQJAG5hbWVfaGFzaH1J9jA39GJNAwoAbmV0d29ya19pZFeFQ7UKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chorus_flower",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAAAACAQAbmFtZRcAbWluZWNyYWZ0OmNob3J1c19mbG93ZXIECQBuYW1lX2hhc2iMpSodli5uawMKAG5ldHdvcmtfaWRnd1ZWCgYAc3RhdGVzAwMAYWdlAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:chorus_plant",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTwAAAACAQAbmFtZRYAbWluZWNyYWZ0OmNob3J1c19wbGFudAQJAG5hbWVfaGFzaJhSrmNGKwaMAwoAbmV0d29ya19pZA3uVqMKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chorus_fruit",
+            "groupId": 48
+        },
+        {
+            "id": "minecraft:popped_chorus_fruit",
+            "groupId": 48
+        },
+        {
+            "id": "minecraft:sponge",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQTAAAACAQAbmFtZRAAbWluZWNyYWZ0OnNwb25nZQQJAG5hbWVfaGFzaLrd2ScYRDMiAwoAbmV0d29ya19pZNmQW/oKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:wet_sponge",
+            "groupId": 48,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTXBAAACAQAbmFtZRQAbWluZWNyYWZ0OndldF9zcG9uZ2UECQBuYW1lX2hhc2htp6nKpSHcAgMKAG5ldHdvcmtfaWQaW+fCCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:tube_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAQAACAQAbmFtZRoAbWluZWNyYWZ0OnR1YmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2iGkaiR7Eot4wMKAG5ldHdvcmtfaWQPNJ6sCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:brain_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRQBAAACAQAbmFtZRsAbWluZWNyYWZ0OmJyYWluX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNoeDNAK18yUo4DCgBuZXR3b3JrX2lkloN1vgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:bubble_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRRBAAACAQAbmFtZRwAbWluZWNyYWZ0OmJ1YmJsZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaAI2mwMlvcNbAwoAbmV0d29ya19pZBlkxKIKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:fire_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRSBAAACAQAbmFtZRoAbWluZWNyYWZ0OmZpcmVfY29yYWxfYmxvY2sECQBuYW1lX2hhc2gg1gLeXLmKaAMKAG5ldHdvcmtfaWSp3W57CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:horn_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRTBAAACAQAbmFtZRoAbWluZWNyYWZ0Omhvcm5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2hnZSLRWUwGhAMKAG5ldHdvcmtfaWRSK6ccCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_tube_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfdHViZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaB9+lY3hAkNNAwoAbmV0d29ya19pZF0hKKYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dead_brain_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRVBAAACAQAbmFtZSAAbWluZWNyYWZ0OmRlYWRfYnJhaW5fY29yYWxfYmxvY2sECQBuYW1lX2hhc2iHyDn52AO8uwMKAG5ldHdvcmtfaWQw7yCaCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dead_bubble_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRWBAAACAQAbmFtZSEAbWluZWNyYWZ0OmRlYWRfYnViYmxlX2NvcmFsX2Jsb2NrBAkAbmFtZV9oYXNotwkk/ITrsjADCgBuZXR3b3JrX2lk56mXUgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dead_fire_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRXBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfZmlyZV9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaG0qHxbIrBEyAwoAbmV0d29ya19pZFvnH88KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:dead_horn_coral_block",
+            "groupId": 49,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRYBAAACAQAbmFtZR8AbWluZWNyYWZ0OmRlYWRfaG9ybl9jb3JhbF9ibG9jawQJAG5hbWVfaGFzaL7D8bu4Fm+0AwoAbmV0d29ya19pZEALRLoKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:sculk",
+            "groupId": 50,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAgAACAQAbmFtZQ8AbWluZWNyYWZ0OnNjdWxrBAkAbmFtZV9oYXNo2Lq7T5yQF8kDCgBuZXR3b3JrX2lkyqUPPgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sculk_vein",
+            "groupId": 50,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNjdWxrX3ZlaW4ECQBuYW1lX2hhc2gJUdhVooV4zwMKAG5ldHdvcmtfaWSUfn1XCgYAc3RhdGVzAxkAbXVsdGlfZmFjZV9kaXJlY3Rpb25fYml0cwAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:sculk_catalyst",
+            "groupId": 50,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX2NhdGFseXN0BAkAbmFtZV9oYXNo+gCpbrCHST4DCgBuZXR3b3JrX2lkMJ2n/woGAHN0YXRlcwEFAGJsb29tAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sculk_shrieker",
+            "groupId": 50,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTMAgAACAQAbmFtZRgAbWluZWNyYWZ0OnNjdWxrX3Nocmlla2VyBAkAbmFtZV9oYXNo5OXtyObniQ4DCgBuZXR3b3JrX2lkxapoNAoGAHN0YXRlcwEGAGFjdGl2ZQABCgBjYW5fc3VtbW9uAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sculk_sensor",
+            "groupId": 50,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNjdWxrX3NlbnNvcgQJAG5hbWVfaGFzaCkmHreeTgNnAwoAbmV0d29ya19pZLj2WPcKBgBzdGF0ZXMDEgBzY3Vsa19zZW5zb3JfcGhhc2UAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:calibrated_sculk_sensor",
+            "groupId": 50,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRDAwAACAQAbmFtZSEAbWluZWNyYWZ0OmNhbGlicmF0ZWRfc2N1bGtfc2Vuc29yBAkAbmFtZV9oYXNoffAcXXN/iJUDCgBuZXR3b3JrX2lkwOx3QQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAxIAc2N1bGtfc2Vuc29yX3BoYXNlAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:reinforced_deepslate",
+            "groupId": 51,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTRAgAACAQAbmFtZR4AbWluZWNyYWZ0OnJlaW5mb3JjZWRfZGVlcHNsYXRlBAkAbmFtZV9oYXNoldDmj91EapQDCgBuZXR3b3JrX2lkHIt+aQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:leather_helmet",
+            "groupId": 52
+        },
+        {
+            "id": "minecraft:chainmail_helmet",
+            "groupId": 52
+        },
+        {
+            "id": "minecraft:iron_helmet",
+            "groupId": 52
+        },
+        {
+            "id": "minecraft:golden_helmet",
+            "groupId": 52
+        },
+        {
+            "id": "minecraft:diamond_helmet",
+            "groupId": 52
+        },
+        {
+            "id": "minecraft:netherite_helmet",
+            "groupId": 52
+        },
+        {
+            "id": "minecraft:leather_chestplate",
+            "groupId": 53
+        },
+        {
+            "id": "minecraft:chainmail_chestplate",
+            "groupId": 53
+        },
+        {
+            "id": "minecraft:iron_chestplate",
+            "groupId": 53
+        },
+        {
+            "id": "minecraft:golden_chestplate",
+            "groupId": 53
+        },
+        {
+            "id": "minecraft:diamond_chestplate",
+            "groupId": 53
+        },
+        {
+            "id": "minecraft:netherite_chestplate",
+            "groupId": 53
+        },
+        {
+            "id": "minecraft:leather_leggings",
+            "groupId": 54
+        },
+        {
+            "id": "minecraft:chainmail_leggings",
+            "groupId": 54
+        },
+        {
+            "id": "minecraft:iron_leggings",
+            "groupId": 54
+        },
+        {
+            "id": "minecraft:golden_leggings",
+            "groupId": 54
+        },
+        {
+            "id": "minecraft:diamond_leggings",
+            "groupId": 54
+        },
+        {
+            "id": "minecraft:netherite_leggings",
+            "groupId": 54
+        },
+        {
+            "id": "minecraft:leather_boots",
+            "groupId": 55
+        },
+        {
+            "id": "minecraft:chainmail_boots",
+            "groupId": 55
+        },
+        {
+            "id": "minecraft:iron_boots",
+            "groupId": 55
+        },
+        {
+            "id": "minecraft:golden_boots",
+            "groupId": 55
+        },
+        {
+            "id": "minecraft:diamond_boots",
+            "groupId": 55
+        },
+        {
+            "id": "minecraft:netherite_boots",
+            "groupId": 55
+        },
+        {
+            "id": "minecraft:wooden_sword",
+            "groupId": 56
+        },
+        {
+            "id": "minecraft:stone_sword",
+            "groupId": 56
+        },
+        {
+            "id": "minecraft:iron_sword",
+            "groupId": 56
+        },
+        {
+            "id": "minecraft:golden_sword",
+            "groupId": 56
+        },
+        {
+            "id": "minecraft:diamond_sword",
+            "groupId": 56
+        },
+        {
+            "id": "minecraft:netherite_sword",
+            "groupId": 56
+        },
+        {
+            "id": "minecraft:wooden_axe",
+            "groupId": 57
+        },
+        {
+            "id": "minecraft:stone_axe",
+            "groupId": 57
+        },
+        {
+            "id": "minecraft:iron_axe",
+            "groupId": 57
+        },
+        {
+            "id": "minecraft:golden_axe",
+            "groupId": 57
+        },
+        {
+            "id": "minecraft:diamond_axe",
+            "groupId": 57
+        },
+        {
+            "id": "minecraft:netherite_axe",
+            "groupId": 57
+        },
+        {
+            "id": "minecraft:wooden_pickaxe",
+            "groupId": 58
+        },
+        {
+            "id": "minecraft:stone_pickaxe",
+            "groupId": 58
+        },
+        {
+            "id": "minecraft:iron_pickaxe",
+            "groupId": 58
+        },
+        {
+            "id": "minecraft:golden_pickaxe",
+            "groupId": 58
+        },
+        {
+            "id": "minecraft:diamond_pickaxe",
+            "groupId": 58
+        },
+        {
+            "id": "minecraft:netherite_pickaxe",
+            "groupId": 58
+        },
+        {
+            "id": "minecraft:wooden_shovel",
+            "groupId": 59
+        },
+        {
+            "id": "minecraft:stone_shovel",
+            "groupId": 59
+        },
+        {
+            "id": "minecraft:iron_shovel",
+            "groupId": 59
+        },
+        {
+            "id": "minecraft:golden_shovel",
+            "groupId": 59
+        },
+        {
+            "id": "minecraft:diamond_shovel",
+            "groupId": 59
+        },
+        {
+            "id": "minecraft:netherite_shovel",
+            "groupId": 59
+        },
+        {
+            "id": "minecraft:wooden_hoe",
+            "groupId": 60
+        },
+        {
+            "id": "minecraft:stone_hoe",
+            "groupId": 60
+        },
+        {
+            "id": "minecraft:iron_hoe",
+            "groupId": 60
+        },
+        {
+            "id": "minecraft:golden_hoe",
+            "groupId": 60
+        },
+        {
+            "id": "minecraft:diamond_hoe",
+            "groupId": 60
+        },
+        {
+            "id": "minecraft:netherite_hoe",
+            "groupId": 60
+        },
+        {
+            "id": "minecraft:bow",
+            "groupId": 61
+        },
+        {
+            "id": "minecraft:crossbow",
+            "groupId": 61
+        },
+        {
+            "id": "minecraft:mace",
+            "groupId": 61
+        },
+        {
+            "id": "minecraft:arrow",
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 6,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 7,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 8,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 9,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 10,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 11,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 12,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 13,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 14,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 15,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 16,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 17,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 18,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 19,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 20,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 21,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 22,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 23,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 24,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 25,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 26,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 27,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 28,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 29,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 30,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 31,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 32,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 33,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 34,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 35,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 36,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 37,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 38,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 39,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 40,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 41,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 42,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 43,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 44,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 45,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 46,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:arrow",
+            "damage": 47,
+            "groupId": 62
+        },
+        {
+            "id": "minecraft:shield",
+            "groupId": 63
+        },
+        {
+            "id": "minecraft:cooked_chicken",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:cooked_porkchop",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:cooked_beef",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:cooked_mutton",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:cooked_rabbit",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:cooked_cod",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:cooked_salmon",
+            "groupId": 64
+        },
+        {
+            "id": "minecraft:bread",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:mushroom_stew",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:beetroot_soup",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:rabbit_stew",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:baked_potato",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:cookie",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:pumpkin_pie",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:cake",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:dried_kelp",
+            "groupId": 65
+        },
+        {
+            "id": "minecraft:fishing_rod",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:carrot_on_a_stick",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:warped_fungus_on_a_stick",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:snowball",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:wind_charge",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:shears",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:flint_and_steel",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:lead",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:clock",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:compass",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:recovery_compass",
+            "groupId": 66
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 1,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 2,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 3,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 4,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 5,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 6,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:goat_horn",
+            "damage": 7,
+            "groupId": 67
+        },
+        {
+            "id": "minecraft:empty_map",
+            "groupId": 68
+        },
+        {
+            "id": "minecraft:empty_map",
+            "damage": 2,
+            "groupId": 68
+        },
+        {
+            "id": "minecraft:saddle",
+            "groupId": 68
+        },
+        {
+            "id": "minecraft:bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:white_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:light_gray_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:gray_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:black_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:brown_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:red_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:orange_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:yellow_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:lime_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:green_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:cyan_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:light_blue_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:blue_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:purple_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:magenta_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:pink_bundle",
+            "groupId": 69
+        },
+        {
+            "id": "minecraft:leather_horse_armor",
+            "groupId": 70
+        },
+        {
+            "id": "minecraft:iron_horse_armor",
+            "groupId": 70
+        },
+        {
+            "id": "minecraft:golden_horse_armor",
+            "groupId": 70
+        },
+        {
+            "id": "minecraft:diamond_horse_armor",
+            "groupId": 70
+        },
+        {
+            "id": "minecraft:wolf_armor",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:trident",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:turtle_helmet",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:elytra",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:totem_of_undying",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:glass_bottle",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:experience_bottle",
+            "groupId": 71
+        },
+        {
+            "id": "minecraft:potion",
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 1,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 2,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 3,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 4,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 5,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 6,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 7,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 8,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 9,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 10,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 11,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 12,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 13,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 14,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 15,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 16,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 17,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 18,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 19,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 20,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 21,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 22,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 23,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 24,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 25,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 26,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 27,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 28,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 29,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 30,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 31,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 32,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 33,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 34,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 35,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 36,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 37,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 38,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 39,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 40,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 41,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 42,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 43,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 44,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 45,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:potion",
+            "damage": 46,
+            "groupId": 72
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 1,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 2,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 3,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 4,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 5,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 6,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 7,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 8,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 9,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 10,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 11,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 12,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 13,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 14,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 15,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 16,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 17,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 18,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 19,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 20,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 21,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 22,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 23,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 24,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 25,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 26,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 27,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 28,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 29,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 30,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 31,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 32,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 33,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 34,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 35,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 36,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 37,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 38,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 39,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 40,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 41,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 42,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 43,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 44,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 45,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:splash_potion",
+            "damage": 46,
+            "groupId": 73
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 1,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 2,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 3,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 4,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 5,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 6,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 7,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 8,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 9,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 10,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 11,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 12,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 13,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 14,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 15,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 16,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 17,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 18,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 19,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 20,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 21,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 22,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 23,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 24,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 25,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 26,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 27,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 28,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 29,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 30,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 31,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 32,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 33,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 34,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 35,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 36,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 37,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 38,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 39,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 40,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 41,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 42,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 43,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 44,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 45,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:lingering_potion",
+            "damage": 46,
+            "groupId": 74
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "groupId": 75
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 1,
+            "groupId": 75
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 2,
+            "groupId": 75
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 3,
+            "groupId": 75
+        },
+        {
+            "id": "minecraft:ominous_bottle",
+            "damage": 4,
+            "groupId": 75
+        },
+        {
+            "id": "minecraft:spyglass",
+            "groupId": 76
+        },
+        {
+            "id": "minecraft:brush",
+            "groupId": 76
+        },
+        {
+            "id": "minecraft:stick",
+            "groupId": 77
+        },
+        {
+            "id": "minecraft:bed",
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 8,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 7,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 15,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 12,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 14,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 1,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 4,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 5,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 13,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 9,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 3,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 11,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 10,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 2,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:bed",
+            "damage": 6,
+            "groupId": 78
+        },
+        {
+            "id": "minecraft:torch",
+            "groupId": 79,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQyAAAACAQAbmFtZQ8AbWluZWNyYWZ0OnRvcmNoBAkAbmFtZV9oYXNoagn7rmDBzisDCgBuZXR3b3JrX2lk+BwwuQoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:soul_torch",
+            "groupId": 79,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQLAgAACAQAbmFtZRQAbWluZWNyYWZ0OnNvdWxfdG9yY2gECQBuYW1lX2hhc2huixOT04BRdQMKAG5ldHdvcmtfaWShbFILCgYAc3RhdGVzCBYAdG9yY2hfZmFjaW5nX2RpcmVjdGlvbgcAdW5rbm93bgADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sea_pickle",
+            "groupId": 79,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAQAACAQAbmFtZRQAbWluZWNyYWZ0OnNlYV9waWNrbGUECQBuYW1lX2hhc2iONEfZJB+glgMKAG5ldHdvcmtfaWSINWQyCgYAc3RhdGVzAw0AY2x1c3Rlcl9jb3VudAAAAAABCABkZWFkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:lantern",
+            "groupId": 79,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTPAQAACAQAbmFtZREAbWluZWNyYWZ0OmxhbnRlcm4ECQBuYW1lX2hhc2hMw44VI2HWygMKAG5ldHdvcmtfaWRkjQvzCgYAc3RhdGVzAQcAaGFuZ2luZwAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:soul_lantern",
+            "groupId": 79,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQMAgAACAQAbmFtZRYAbWluZWNyYWZ0OnNvdWxfbGFudGVybgQJAG5hbWVfaGFzaGjIpjxk9z+RAwoAbmV0d29ya19pZGfoP8cKBgBzdGF0ZXMBBwBoYW5naW5nAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSbAgAACAQAbmFtZRAAbWluZWNyYWZ0OmNhbmRsZQQJAG5hbWVfaGFzaHPd+MsNdWTfAwoAbmV0d29ya19pZHsBMA0KBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAgAACAQAbmFtZRYAbWluZWNyYWZ0OndoaXRlX2NhbmRsZQQJAG5hbWVfaGFzaN1EG5Q1mHiEAwoAbmV0d29ya19pZKN1mmgKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:orange_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSdAgAACAQAbmFtZRcAbWluZWNyYWZ0Om9yYW5nZV9jYW5kbGUECQBuYW1lX2hhc2jySEVWHgUIHQMKAG5ldHdvcmtfaWSfVz82CgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:magenta_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSeAgAACAQAbmFtZRgAbWluZWNyYWZ0Om1hZ2VudGFfY2FuZGxlBAkAbmFtZV9oYXNoG0u6YIOoBSEDCgBuZXR3b3JrX2lk9xGNkQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_blue_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSfAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfY2FuZGxlBAkAbmFtZV9oYXNocXGeK0zgrG0DCgBuZXR3b3JrX2lk2m1y8goGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:yellow_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSgAgAACAQAbmFtZRcAbWluZWNyYWZ0OnllbGxvd19jYW5kbGUECQBuYW1lX2hhc2i00dtusU3CqQMKAG5ldHdvcmtfaWR9LTmpCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:lime_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWShAgAACAQAbmFtZRUAbWluZWNyYWZ0OmxpbWVfY2FuZGxlBAkAbmFtZV9oYXNokcmrw5xvz7ADCgBuZXR3b3JrX2lkIAUu6QoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:pink_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSiAgAACAQAbmFtZRUAbWluZWNyYWZ0OnBpbmtfY2FuZGxlBAkAbmFtZV9oYXNoQJdEY4sZ0dwDCgBuZXR3b3JrX2lk23Rn5AoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:gray_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSjAgAACAQAbmFtZRUAbWluZWNyYWZ0OmdyYXlfY2FuZGxlBAkAbmFtZV9oYXNoS5poSo9wBDEDCgBuZXR3b3JrX2lk3trRCAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_gray_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSkAgAACAQAbmFtZRsAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfY2FuZGxlBAkAbmFtZV9oYXNo9ruTZLBNMasDCgBuZXR3b3JrX2lkb6DOegoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cyan_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSlAgAACAQAbmFtZRUAbWluZWNyYWZ0OmN5YW5fY2FuZGxlBAkAbmFtZV9oYXNoc/M8PNVcjOwDCgBuZXR3b3JrX2lkZoIQOQoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:purple_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSmAgAACAQAbmFtZRcAbWluZWNyYWZ0OnB1cnBsZV9jYW5kbGUECQBuYW1lX2hhc2jaI3xUW0/myQMKAG5ldHdvcmtfaWSnLI2BCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSnAgAACAQAbmFtZRUAbWluZWNyYWZ0OmJsdWVfY2FuZGxlBAkAbmFtZV9oYXNoAASSPW6TgQADCgBuZXR3b3JrX2lkrxrjQAoGAHN0YXRlcwMHAGNhbmRsZXMAAAAAAQMAbGl0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:brown_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSoAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJyb3duX2NhbmRsZQQJAG5hbWVfaGFzaDia0l6s1+WYAwoAbmV0d29ya19pZKSkBXYKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:green_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAgAACAQAbmFtZRYAbWluZWNyYWZ0OmdyZWVuX2NhbmRsZQQJAG5hbWVfaGFzaLeFPO1l+fIoAwoAbmV0d29ya19pZBkznDsKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:red_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSqAgAACAQAbmFtZRQAbWluZWNyYWZ0OnJlZF9jYW5kbGUECQBuYW1lX2hhc2jjAQpGf59ZdwMKAG5ldHdvcmtfaWRbb88GCgYAc3RhdGVzAwcAY2FuZGxlcwAAAAABAwBsaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:black_candle",
+            "groupId": 80,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSrAgAACAQAbmFtZRYAbWluZWNyYWZ0OmJsYWNrX2NhbmRsZQQJAG5hbWVfaGFzaB+wRDpOqREKAwoAbmV0d29ya19pZNnOnuEKBgBzdGF0ZXMDBwBjYW5kbGVzAAAAAAEDAGxpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crafting_table",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ6AAAACAQAbmFtZRgAbWluZWNyYWZ0OmNyYWZ0aW5nX3RhYmxlBAkAbmFtZV9oYXNoe76VAmjvbpYDCgBuZXR3b3JrX2lkwCxwaAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cartography_table",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHAQAACAQAbmFtZRsAbWluZWNyYWZ0OmNhcnRvZ3JhcGh5X3RhYmxlBAkAbmFtZV9oYXNomaWiiD/znP8DCgBuZXR3b3JrX2lkI6FzMwoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:fletching_table",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIAQAACAQAbmFtZRkAbWluZWNyYWZ0OmZsZXRjaGluZ190YWJsZQQJAG5hbWVfaGFzaPFibh8unKyUAwoAbmV0d29ya19pZJ2mW0oKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:smithing_table",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJAQAACAQAbmFtZRgAbWluZWNyYWZ0OnNtaXRoaW5nX3RhYmxlBAkAbmFtZV9oYXNo4tFES2xOXEYDCgBuZXR3b3JrX2lkXWMBzQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:beehive",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAQAACAQAbmFtZREAbWluZWNyYWZ0OmJlZWhpdmUECQBuYW1lX2hhc2hCcqn12UbNpwMKAG5ldHdvcmtfaWR/idcaCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAMLAGhvbmV5X2xldmVsAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:suspicious_sand",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQQAwAACAQAbmFtZRkAbWluZWNyYWZ0OnN1c3BpY2lvdXNfc2FuZAQJAG5hbWVfaGFzaL67QsuvLP00AwoAbmV0d29ya19pZKnkaIAKBgBzdGF0ZXMDEABicnVzaGVkX3Byb2dyZXNzAAAAAAEHAGhhbmdpbmcBAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:suspicious_gravel",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ8AwAACAQAbmFtZRsAbWluZWNyYWZ0OnN1c3BpY2lvdXNfZ3JhdmVsBAkAbmFtZV9oYXNoJSVbGNk7C3oDCgBuZXR3b3JrX2lkvIEJAAoGAHN0YXRlcwMQAGJydXNoZWRfcHJvZ3Jlc3MAAAAAAQcAaGFuZ2luZwEAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:campfire",
+            "groupId": 81
+        },
+        {
+            "id": "minecraft:soul_campfire",
+            "groupId": 81
+        },
+        {
+            "id": "minecraft:furnace",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ9AAAACAQAbmFtZREAbWluZWNyYWZ0OmZ1cm5hY2UECQBuYW1lX2hhc2ioOQrludYY8wMKAG5ldHdvcmtfaWRZxnDOCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:blast_furnace",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTDAQAACAQAbmFtZRcAbWluZWNyYWZ0OmJsYXN0X2Z1cm5hY2UECQBuYW1lX2hhc2ivDbnjkpGm5QMKAG5ldHdvcmtfaWTcEbV/CgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:smoker",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFAQAACAQAbmFtZRAAbWluZWNyYWZ0OnNtb2tlcgQJAG5hbWVfaGFzaJd1rDMkRWomAwoAbmV0d29ya19pZGWswMwKBgBzdGF0ZXMIHABtaW5lY3JhZnQ6Y2FyZGluYWxfZGlyZWN0aW9uBQBzb3V0aAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:respawn_anchor",
+            "groupId": 81,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQPAgAACAQAbmFtZRgAbWluZWNyYWZ0OnJlc3Bhd25fYW5jaG9yBAkAbmFtZV9oYXNoZOdcjW05qigDCgBuZXR3b3JrX2lkmhMcaQoGAHN0YXRlcwMVAHJlc3Bhd25fYW5jaG9yX2NoYXJnZQAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:brewing_stand",
+            "groupId": 81
+        },
+        {
+            "id": "minecraft:anvil",
+            "groupId": 82,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSRAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmFudmlsBAkAbmFtZV9oYXNoNqB3fgcUCbwDCgBuZXR3b3JrX2lkqXzNjwoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAHNvdXRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:chipped_anvil",
+            "groupId": 82,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS+BAAACAQAbmFtZRcAbWluZWNyYWZ0OmNoaXBwZWRfYW52aWwECQBuYW1lX2hhc2ge+QY3vlS/eQMKAG5ldHdvcmtfaWRJ15iUCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:damaged_anvil",
+            "groupId": 82,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWS/BAAACAQAbmFtZRcAbWluZWNyYWZ0OmRhbWFnZWRfYW52aWwECQBuYW1lX2hhc2imJ12Be2V8+AMKAG5ldHdvcmtfaWRh5SHkCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:grindstone",
+            "groupId": 83,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTCAQAACAQAbmFtZRQAbWluZWNyYWZ0OmdyaW5kc3RvbmUECQBuYW1lX2hhc2id56zc0nk99wMKAG5ldHdvcmtfaWS4Es07CgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:enchanting_table",
+            "groupId": 83,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR0AAAACAQAbmFtZRoAbWluZWNyYWZ0OmVuY2hhbnRpbmdfdGFibGUECQBuYW1lX2hhc2jgIx24VLvMvwMKAG5ldHdvcmtfaWRliFFJCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:bookshelf",
+            "groupId": 83,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQvAAAACAQAbmFtZRMAbWluZWNyYWZ0OmJvb2tzaGVsZgQJAG5hbWVfaGFzaDU04DrgJCS9AwoAbmV0d29ya19pZBcWwIwKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chiseled_bookshelf",
+            "groupId": 83,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQNAwAACAQAbmFtZRwAbWluZWNyYWZ0OmNoaXNlbGVkX2Jvb2tzaGVsZgQJAG5hbWVfaGFzaNXDBnsIsywYAwoAbmV0d29ya19pZIprt5IKBgBzdGF0ZXMDDABib29rc19zdG9yZWQAAAAAAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:lectern",
+            "groupId": 83,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTBAQAACAQAbmFtZREAbWluZWNyYWZ0OmxlY3Rlcm4ECQBuYW1lX2hhc2j5Z4Mmi/1QxAMKAG5ldHdvcmtfaWR4JfDHCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAc291dGgBCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cauldron",
+            "groupId": 83
+        },
+        {
+            "id": "minecraft:composter",
+            "groupId": 83,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTUAQAACAQAbmFtZRMAbWluZWNyYWZ0OmNvbXBvc3RlcgQJAG5hbWVfaGFzaPAADHptzeWJAwoAbmV0d29ya19pZHIL6i4KBgBzdGF0ZXMDFABjb21wb3N0ZXJfZmlsbF9sZXZlbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:chest",
+            "groupId": 84,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ2AAAACAQAbmFtZQ8AbWluZWNyYWZ0OmNoZXN0BAkAbmFtZV9oYXNog9ozMxlcA88DCgBuZXR3b3JrX2lkDkOFvAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:trapped_chest",
+            "groupId": 84,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSSAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyYXBwZWRfY2hlc3QECQBuYW1lX2hhc2g2qpF9stsEjgMKAG5ldHdvcmtfaWTjJWYxCgYAc3RhdGVzCBwAbWluZWNyYWZ0OmNhcmRpbmFsX2RpcmVjdGlvbgUAbm9ydGgAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:ender_chest",
+            "groupId": 84,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSCAAAACAQAbmFtZRUAbWluZWNyYWZ0OmVuZGVyX2NoZXN0BAkAbmFtZV9oYXNohEZzOFdg0WUDCgBuZXR3b3JrX2lkx4jiSQoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:barrel",
+            "groupId": 85,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTKAQAACAQAbmFtZRAAbWluZWNyYWZ0OmJhcnJlbAQJAG5hbWVfaGFzaHDkRPGymiRqAwoAbmV0d29ya19pZPnxzgsKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAEIAG9wZW5fYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:undyed_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAAAACAQAbmFtZRwAbWluZWNyYWZ0OnVuZHllZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaOC9mypm/MlBAwoAbmV0d29ya19pZJ8rxp0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:white_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTaAAAACAQAbmFtZRsAbWluZWNyYWZ0OndoaXRlX3NodWxrZXJfYm94BAkAbmFtZV9oYXNosK79m1rPUBwDCgBuZXR3b3JrX2lkjrET6goGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:light_gray_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRrAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2dyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iBe5zq7PxHmgMKAG5ldHdvcmtfaWSCVJv0CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:gray_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRqAwAACAQAbmFtZRoAbWluZWNyYWZ0OmdyYXlfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2ga2s8ctjHUhgMKAG5ldHdvcmtfaWS3WMsWCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:black_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRyAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJsYWNrX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoPm03OZphrp8DCgBuZXR3b3JrX2lkXHztNAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:brown_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRvAwAACAQAbmFtZRsAbWluZWNyYWZ0OmJyb3duX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoT3DD6qAL9cADCgBuZXR3b3JrX2lkaXxpYQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:red_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRxAwAACAQAbmFtZRkAbWluZWNyYWZ0OnJlZF9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaMIlKSCzqSZoAwoAbmV0d29ya19pZNrf+icKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:orange_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRkAwAACAQAbmFtZRwAbWluZWNyYWZ0Om9yYW5nZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaG2MAXU67wGrAwoAbmV0d29ya19pZGoO05gKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:yellow_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRnAwAACAQAbmFtZRwAbWluZWNyYWZ0OnllbGxvd19zaHVsa2VyX2JveAQJAG5hbWVfaGFzaIsLwQHYjcIEAwoAbmV0d29ya19pZBCBSiYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:lime_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRoAwAACAQAbmFtZRoAbWluZWNyYWZ0OmxpbWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hUwBkg+faUGAMKAG5ldHdvcmtfaWRJeKqqCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:green_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRwAwAACAQAbmFtZRsAbWluZWNyYWZ0OmdyZWVuX3NodWxrZXJfYm94BAkAbmFtZV9oYXNoZgUeT3LupLUDCgBuZXR3b3JrX2lkzJiohQoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:cyan_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRsAwAACAQAbmFtZRoAbWluZWNyYWZ0OmN5YW5fc2h1bGtlcl9ib3gECQBuYW1lX2hhc2gSfbjteXg5yAMKAG5ldHdvcmtfaWTHeliECgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:light_blue_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRmAwAACAQAbmFtZSAAbWluZWNyYWZ0OmxpZ2h0X2JsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2h0VFCX0qsRxQMKAG5ldHdvcmtfaWQXD8U0CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:blue_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRuAwAACAQAbmFtZRoAbWluZWNyYWZ0OmJsdWVfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2hn9gS0XIe6rAMKAG5ldHdvcmtfaWTO4PJaCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:purple_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRtAwAACAQAbmFtZRwAbWluZWNyYWZ0OnB1cnBsZV9zaHVsa2VyX2JveAQJAG5hbWVfaGFzaEV/lkNPxRDdAwoAbmV0d29ya19pZFK25GAKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:magenta_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRlAwAACAQAbmFtZR0AbWluZWNyYWZ0Om1hZ2VudGFfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2iqWM7IJHxcFgMKAG5ldHdvcmtfaWTyyudTCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pink_shulker_box",
+            "groupId": 86,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRpAwAACAQAbmFtZRoAbWluZWNyYWZ0OnBpbmtfc2h1bGtlcl9ib3gECQBuYW1lX2hhc2in1tkJ1GNcZgMKAG5ldHdvcmtfaWQOEGXjCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:armor_stand",
+            "groupId": 87
+        },
+        {
+            "id": "minecraft:noteblock",
+            "groupId": 87,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAAAACAQAbmFtZRMAbWluZWNyYWZ0Om5vdGVibG9jawQJAG5hbWVfaGFzaHPA8dBBH0UaAwoAbmV0d29ya19pZH1U5QkKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jukebox",
+            "groupId": 87,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRUAAAACAQAbmFtZREAbWluZWNyYWZ0Omp1a2Vib3gECQBuYW1lX2hhc2ieAIPExf/ZfgMKAG5ldHdvcmtfaWSmR7JfCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:music_disc_13",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_cat",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_blocks",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_chirp",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_far",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_mall",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_mellohi",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_stal",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_strad",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_ward",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_11",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_wait",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_otherside",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_5",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_pigstep",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_relic",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_creator",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_creator_music_box",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:music_disc_precipice",
+            "groupId": 88
+        },
+        {
+            "id": "minecraft:disc_fragment_5",
+            "groupId": 89
+        },
+        {
+            "id": "minecraft:glowstone_dust",
+            "groupId": 89
+        },
+        {
+            "id": "minecraft:glowstone",
+            "groupId": 89,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRZAAAACAQAbmFtZRMAbWluZWNyYWZ0Omdsb3dzdG9uZQQJAG5hbWVfaGFzaFYqXNkefIlPAwoAbmV0d29ya19pZGT7WYYKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:redstone_lamp",
+            "groupId": 89,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR7AAAACAQAbmFtZRcAbWluZWNyYWZ0OnJlZHN0b25lX2xhbXAECQBuYW1lX2hhc2hJ9V80caPvEgMKAG5ldHdvcmtfaWRvNPwnCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:sea_lantern",
+            "groupId": 89,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSpAAAACAQAbmFtZRUAbWluZWNyYWZ0OnNlYV9sYW50ZXJuBAkAbmFtZV9oYXNoLPsv1TX9M+QDCgBuZXR3b3JrX2lk1PPVyAoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:oak_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:spruce_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:birch_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:jungle_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:acacia_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:dark_oak_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:mangrove_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:cherry_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:pale_oak_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:bamboo_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:crimson_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:warped_sign",
+            "groupId": 90
+        },
+        {
+            "id": "minecraft:oak_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:spruce_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:birch_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:jungle_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:acacia_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:dark_oak_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:mangrove_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:cherry_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:pale_oak_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:bamboo_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:crimson_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:warped_hanging_sign",
+            "groupId": 91
+        },
+        {
+            "id": "minecraft:painting",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:frame",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:glow_frame",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:honey_bottle",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:flower_pot",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:bowl",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:milk_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:water_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:lava_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:cod_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:salmon_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:tropical_fish_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:pufferfish_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:powder_snow_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:axolotl_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:tadpole_bucket",
+            "groupId": 92
+        },
+        {
+            "id": "minecraft:player_head",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTGBAAACAQAbmFtZRUAbWluZWNyYWZ0OnBsYXllcl9oZWFkBAkAbmFtZV9oYXNonFwZb7CL8EYDCgBuZXR3b3JrX2lkZeAXqAoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:zombie_head",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTFBAAACAQAbmFtZRUAbWluZWNyYWZ0OnpvbWJpZV9oZWFkBAkAbmFtZV9oYXNoixuENYuaGgEDCgBuZXR3b3JrX2lk0NsHDgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:creeper_head",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTHBAAACAQAbmFtZRYAbWluZWNyYWZ0OmNyZWVwZXJfaGVhZAQJAG5hbWVfaGFzaCvAGFMS/RqVAwoAbmV0d29ya19pZEfskXYKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dragon_head",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTIBAAACAQAbmFtZRUAbWluZWNyYWZ0OmRyYWdvbl9oZWFkBAkAbmFtZV9oYXNozjh6bGRaa5UDCgBuZXR3b3JrX2lk/zjetgoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:skeleton_skull",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSQAAAACAQAbmFtZRgAbWluZWNyYWZ0OnNrZWxldG9uX3NrdWxsBAkAbmFtZV9oYXNo3+kbzeMgg4kDCgBuZXR3b3JrX2lk/RqWbwoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:wither_skeleton_skull",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEBAAACAQAbmFtZR8AbWluZWNyYWZ0OndpdGhlcl9za2VsZXRvbl9za3VsbAQJAG5hbWVfaGFzaEcZrUyy9cfRAwoAbmV0d29ya19pZJZ2G/oKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:piglin_head",
+            "groupId": 93,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTJBAAACAQAbmFtZRUAbWluZWNyYWZ0OnBpZ2xpbl9oZWFkBAkAbmFtZV9oYXNo+jUCKgb5DskDCgBuZXR3b3JrX2lkQ1ETVwoGAHN0YXRlcwMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:beacon",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSKAAAACAQAbmFtZRAAbWluZWNyYWZ0OmJlYWNvbgQJAG5hbWVfaGFzaACwhhfSkdkHAwoAbmV0d29ya19pZF8jfiEKBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bell",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTNAQAACAQAbmFtZQ4AbWluZWNyYWZ0OmJlbGwECQBuYW1lX2hhc2iPqsgDXRcsxAMKAG5ldHdvcmtfaWT7zhOoCgYAc3RhdGVzCAoAYXR0YWNobWVudAgAc3RhbmRpbmcDCQBkaXJlY3Rpb24AAAAAAQoAdG9nZ2xlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:conduit",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWScAQAACAQAbmFtZREAbWluZWNyYWZ0OmNvbmR1aXQECQBuYW1lX2hhc2jqxKAxq2EaWQMKAG5ldHdvcmtfaWTWcBVnCgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stonecutter_block",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTEAQAACAQAbmFtZRsAbWluZWNyYWZ0OnN0b25lY3V0dGVyX2Jsb2NrBAkAbmFtZV9oYXNoQAXTbAM3MeYDCgBuZXR3b3JrX2lkWS4RjAoGAHN0YXRlcwgcAG1pbmVjcmFmdDpjYXJkaW5hbF9kaXJlY3Rpb24FAG5vcnRoAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:coal",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:charcoal",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:diamond",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:iron_nugget",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:raw_iron",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:raw_gold",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:raw_copper",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:copper_ingot",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:iron_ingot",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:netherite_scrap",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:netherite_ingot",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:gold_nugget",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:gold_ingot",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:emerald",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:quartz",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:clay_ball",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:brick",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:netherbrick",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:resin_brick",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:prismarine_shard",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:amethyst_shard",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:prismarine_crystals",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:nautilus_shell",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:heart_of_the_sea",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:turtle_scute",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:armadillo_scute",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:phantom_membrane",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:string",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:feather",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:flint",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:gunpowder",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:leather",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:rabbit_hide",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:rabbit_foot",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:fire_charge",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:blaze_rod",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:breeze_rod",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:heavy_core",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ7AgAACAQAbmFtZRQAbWluZWNyYWZ0OmhlYXZ5X2NvcmUECQBuYW1lX2hhc2hhz/uNCtrC2QMKAG5ldHdvcmtfaWRaFu+8CgYAc3RhdGVzAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:blaze_powder",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:magma_cream",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:fermented_spider_eye",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:echo_shard",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:dragon_breath",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:shulker_shell",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:ghast_tear",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:slime_ball",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:ender_pearl",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:ender_eye",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:nether_star",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:end_rod",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTQAAAACAQAbmFtZREAbWluZWNyYWZ0OmVuZF9yb2QECQBuYW1lX2hhc2jx/q5cEA0hmQMKAG5ldHdvcmtfaWQ2eM8kCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:lightning_rod",
+            "groupId": 94,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ3AgAACAQAbmFtZRcAbWluZWNyYWZ0OmxpZ2h0bmluZ19yb2QECQBuYW1lX2hhc2ioXQF1xvfHNQMKAG5ldHdvcmtfaWRLuHyACgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:end_crystal",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:paper",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:book",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:writable_book",
+            "groupId": 94
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQAAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQBAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQCAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQDAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQEAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQFAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQGAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQHAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQIAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQJAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQKAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQLAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQMAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQNAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQOAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQPAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQQAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQRAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQSAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQTAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQUAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQVAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQWAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQXAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQYAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQZAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQaAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQbAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQcAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQdAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQeAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQfAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQgAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQhAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQiAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQjAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQkAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQlAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQmAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQnAAIDAGx2bAUAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAEAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAIAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAMAAAA="
+        },
+        {
+            "id": "minecraft:enchanted_book",
+            "groupId": 95,
+            "nbt_b64": "CgAACQQAZW5jaAoBAAAAAgIAaWQoAAIDAGx2bAQAAAA="
+        },
+        {
+            "id": "minecraft:oak_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:spruce_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:birch_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:jungle_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:acacia_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:dark_oak_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:mangrove_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:cherry_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:pale_oak_boat",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:bamboo_raft",
+            "groupId": 96
+        },
+        {
+            "id": "minecraft:oak_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:spruce_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:birch_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:jungle_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:acacia_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:dark_oak_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:mangrove_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:cherry_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:pale_oak_chest_boat",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:bamboo_chest_raft",
+            "groupId": 97
+        },
+        {
+            "id": "minecraft:rail",
+            "groupId": 98,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRCAAAACAQAbmFtZQ4AbWluZWNyYWZ0OnJhaWwECQBuYW1lX2hhc2hUzmhUXYJDUQMKAG5ldHdvcmtfaWR+Sp6YCgYAc3RhdGVzAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:golden_rail",
+            "groupId": 98,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQbAAAACAQAbmFtZRUAbWluZWNyYWZ0OmdvbGRlbl9yYWlsBAkAbmFtZV9oYXNoOoV5MaKipoUDCgBuZXR3b3JrX2lkfAcxLwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:detector_rail",
+            "groupId": 98,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQcAAAACAQAbmFtZRcAbWluZWNyYWZ0OmRldGVjdG9yX3JhaWwECQBuYW1lX2hhc2gVUk31qOysUQMKAG5ldHdvcmtfaWRVW/aICgYAc3RhdGVzAQ0AcmFpbF9kYXRhX2JpdAADDgByYWlsX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:activator_rail",
+            "groupId": 98,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR+AAAACAQAbmFtZRgAbWluZWNyYWZ0OmFjdGl2YXRvcl9yYWlsBAkAbmFtZV9oYXNosIL91qriCRkDCgBuZXR3b3JrX2lkZfckmwoGAHN0YXRlcwENAHJhaWxfZGF0YV9iaXQAAw4AcmFpbF9kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:minecart",
+            "groupId": 99
+        },
+        {
+            "id": "minecraft:chest_minecart",
+            "groupId": 99
+        },
+        {
+            "id": "minecraft:hopper_minecart",
+            "groupId": 99
+        },
+        {
+            "id": "minecraft:tnt_minecart",
+            "groupId": 99
+        },
+        {
+            "id": "minecraft:redstone",
+            "groupId": 100
+        },
+        {
+            "id": "minecraft:redstone_block",
+            "groupId": 100,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX2Jsb2NrBAkAbmFtZV9oYXNoRhULL0r8o0sDCgBuZXR3b3JrX2lklayOHgoGAHN0YXRlcwADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:redstone_torch",
+            "groupId": 100,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRMAAAACAQAbmFtZRgAbWluZWNyYWZ0OnJlZHN0b25lX3RvcmNoBAkAbmFtZV9oYXNoizFRjpYMIDgDCgBuZXR3b3JrX2lkuHz7yAoGAHN0YXRlcwgWAHRvcmNoX2ZhY2luZ19kaXJlY3Rpb24HAHVua25vd24AAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:lever",
+            "groupId": 100,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRFAAAACAQAbmFtZQ8AbWluZWNyYWZ0OmxldmVyBAkAbmFtZV9oYXNoGMJeLJsUMLYDCgBuZXR3b3JrX2lkEF/GuAoGAHN0YXRlcwgPAGxldmVyX2RpcmVjdGlvbg4AZG93bl9lYXN0X3dlc3QBCABvcGVuX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:wooden_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAAAACAQAbmFtZRcAbWluZWNyYWZ0Ondvb2Rlbl9idXR0b24ECQBuYW1lX2hhc2hR7PgSTQt0sQMKAG5ldHdvcmtfaWSU07kYCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSPAQAACAQAbmFtZRcAbWluZWNyYWZ0OnNwcnVjZV9idXR0b24ECQBuYW1lX2hhc2jBW9Z8aYE7YQMKAG5ldHdvcmtfaWTkUIGuCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSMAQAACAQAbmFtZRYAbWluZWNyYWZ0OmJpcmNoX2J1dHRvbgQJAG5hbWVfaGFzaJXYgGuSHbTwAwoAbmV0d29ya19pZGWp3yoKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSOAQAACAQAbmFtZRcAbWluZWNyYWZ0Omp1bmdsZV9idXR0b24ECQBuYW1lX2hhc2iCgNANcJs+BQMKAG5ldHdvcmtfaWT9fImWCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSLAQAACAQAbmFtZRcAbWluZWNyYWZ0OmFjYWNpYV9idXR0b24ECQBuYW1lX2hhc2gVvmcT7LTO0wMKAG5ldHdvcmtfaWRQnxIJCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSNAQAACAQAbmFtZRkAbWluZWNyYWZ0OmRhcmtfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaIV10ZGGrCIEAwoAbmV0d29ya19pZN5vAmIKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTmAgAACAQAbmFtZRkAbWluZWNyYWZ0Om1hbmdyb3ZlX2J1dHRvbgQJAG5hbWVfaGFzaNzeYYKLgOzJAwoAbmV0d29ya19pZAFEGQ0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQRAwAACAQAbmFtZRcAbWluZWNyYWZ0OmNoZXJyeV9idXR0b24ECQBuYW1lX2hhc2j2/IHjeAbUcwMKAG5ldHdvcmtfaWRJ1irQCgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTcBAAACAQAbmFtZRkAbWluZWNyYWZ0OnBhbGVfb2FrX2J1dHRvbgQJAG5hbWVfaGFzaLk54s7RtGHgAwoAbmV0d29ya19pZNLO6ZwKBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT+AgAACAQAbmFtZRcAbWluZWNyYWZ0OmJhbWJvb19idXR0b24ECQBuYW1lX2hhc2j7AddMi+6nsgMKAG5ldHdvcmtfaWSa9w4/CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRNAAAACAQAbmFtZRYAbWluZWNyYWZ0OnN0b25lX2J1dHRvbgQJAG5hbWVfaGFzaM4ejMctmvohAwoAbmV0d29ya19pZMw+aC0KBgBzdGF0ZXMBEgBidXR0b25fcHJlc3NlZF9iaXQAAxAAZmFjaW5nX2RpcmVjdGlvbgAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:crimson_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQDAgAACAQAbmFtZRgAbWluZWNyYWZ0OmNyaW1zb25fYnV0dG9uBAkAbmFtZV9oYXNofnjYHaYIeWgDCgBuZXR3b3JrX2lk+n1vyQoGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQEAgAACAQAbmFtZRcAbWluZWNyYWZ0OndhcnBlZF9idXR0b24ECQBuYW1lX2hhc2jwkV2EU6Cn1QMKAG5ldHdvcmtfaWTnHnk1CgYAc3RhdGVzARIAYnV0dG9uX3ByZXNzZWRfYml0AAMQAGZhY2luZ19kaXJlY3Rpb24AAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:polished_blackstone_button",
+            "groupId": 101,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQnAgAACAQAbmFtZSQAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfYnV0dG9uBAkAbmFtZV9oYXNojmxzQKS0S/EDCgBuZXR3b3JrX2lkDtQ95woGAHN0YXRlcwESAGJ1dHRvbl9wcmVzc2VkX2JpdAADEABmYWNpbmdfZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:tripwire_hook",
+            "groupId": 102,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSDAAAACAQAbmFtZRcAbWluZWNyYWZ0OnRyaXB3aXJlX2hvb2sECQBuYW1lX2hhc2gQdp+oGZLNnAMKAG5ldHdvcmtfaWSy+1KJCgYAc3RhdGVzAQwAYXR0YWNoZWRfYml0AAMJAGRpcmVjdGlvbgAAAAABCwBwb3dlcmVkX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:wooden_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRIAAAACAQAbmFtZR8AbWluZWNyYWZ0Ondvb2Rlbl9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaGkGs5kCuA74AwoAbmV0d29ya19pZDRzPNwKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:spruce_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSZAQAACAQAbmFtZR8AbWluZWNyYWZ0OnNwcnVjZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNmwuq549fJKAwoAbmV0d29ya19pZLQMCw0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:birch_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSWAQAACAQAbmFtZR4AbWluZWNyYWZ0OmJpcmNoX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNorQkT9kDdlTwDCgBuZXR3b3JrX2lkH0G97AoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:jungle_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSYAQAACAQAbmFtZR8AbWluZWNyYWZ0Omp1bmdsZV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaJ7DcteCkb8/AwoAbmV0d29ya19pZLdPBSAKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:acacia_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSVAQAACAQAbmFtZR8AbWluZWNyYWZ0OmFjYWNpYV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaC2frZtfoYqCAwoAbmV0d29ya19pZIDdI18KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:dark_oak_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAQAACAQAbmFtZSEAbWluZWNyYWZ0OmRhcmtfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoHUCJsTy52pwDCgBuZXR3b3JrX2lkKpi8rAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:mangrove_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTpAgAACAQAbmFtZSEAbWluZWNyYWZ0Om1hbmdyb3ZlX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoiDsTfJaX100DCgBuZXR3b3JrX2lkuwWDyQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:cherry_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQZAwAACAQAbmFtZR8AbWluZWNyYWZ0OmNoZXJyeV9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaALMqYEZDUQHAwoAbmV0d29ya19pZPNT+r0KBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:pale_oak_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTkBAAACAQAbmFtZSEAbWluZWNyYWZ0OnBhbGVfb2FrX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNo8cvY7evY5xkDCgBuZXR3b3JrX2lkDmW0uAoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:bamboo_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQBAwAACAQAbmFtZR8AbWluZWNyYWZ0OmJhbWJvb19wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaNvxJ7NIAaqlAwoAbmV0d29ya19pZIZ8XnYKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:crimson_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQFAgAACAQAbmFtZSAAbWluZWNyYWZ0OmNyaW1zb25fcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2hqBDVDAd31/gMKAG5ldHdvcmtfaWRmV18LCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:warped_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQGAgAACAQAbmFtZR8AbWluZWNyYWZ0OndhcnBlZF9wcmVzc3VyZV9wbGF0ZQQJAG5hbWVfaGFzaBxFoQksWtYUAwoAbmV0d29ya19pZJVRoIcKBgBzdGF0ZXMDDwByZWRzdG9uZV9zaWduYWwAAAAAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:stone_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWRGAAAACAQAbmFtZR4AbWluZWNyYWZ0OnN0b25lX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNounJuTBUTrU8DCgBuZXR3b3JrX2lkjDydwQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:light_weighted_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSTAAAACAQAbmFtZScAbWluZWNyYWZ0OmxpZ2h0X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoOyOJkNxLtkEDCgBuZXR3b3JrX2lkrr2AjgoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:heavy_weighted_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSUAAAACAQAbmFtZScAbWluZWNyYWZ0OmhlYXZ5X3dlaWdodGVkX3ByZXNzdXJlX3BsYXRlBAkAbmFtZV9oYXNoltgDmDvTajUDCgBuZXR3b3JrX2lkFxVKuQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:polished_blackstone_pressure_plate",
+            "groupId": 103,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAgAACAQAbmFtZSwAbWluZWNyYWZ0OnBvbGlzaGVkX2JsYWNrc3RvbmVfcHJlc3N1cmVfcGxhdGUECQBuYW1lX2hhc2h65Ci6/CeGqwMKAG5ldHdvcmtfaWTaSW5xCgYAc3RhdGVzAw8AcmVkc3RvbmVfc2lnbmFsAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:observer",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWT7AAAACAQAbmFtZRIAbWluZWNyYWZ0Om9ic2VydmVyBAkAbmFtZV9oYXNoYhlh1lpmHTgDCgBuZXR3b3JrX2lkQEh55goGAHN0YXRlcwgaAG1pbmVjcmFmdDpmYWNpbmdfZGlyZWN0aW9uBABkb3duAQsAcG93ZXJlZF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:daylight_detector",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWSXAAAACAQAbmFtZRsAbWluZWNyYWZ0OmRheWxpZ2h0X2RldGVjdG9yBAkAbmFtZV9oYXNoV0F0s7B7PVgDCgBuZXR3b3JrX2lkri5afQoGAHN0YXRlcwMPAHJlZHN0b25lX3NpZ25hbAAAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:repeater",
+            "groupId": 104
+        },
+        {
+            "id": "minecraft:comparator",
+            "groupId": 104
+        },
+        {
+            "id": "minecraft:hopper",
+            "groupId": 104
+        },
+        {
+            "id": "minecraft:dropper",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWR9AAAACAQAbmFtZREAbWluZWNyYWZ0OmRyb3BwZXIECQBuYW1lX2hhc2joXP7XqU0l3QMKAG5ldHdvcmtfaWQfQN6zCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgMAAAABDQB0cmlnZ2VyZWRfYml0AAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:dispenser",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQXAAAACAQAbmFtZRMAbWluZWNyYWZ0OmRpc3BlbnNlcgQJAG5hbWVfaGFzaP1RR+zAbYP2AwoAbmV0d29ya19pZGAayD0KBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAwAAAAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:crafter",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQ4AgAACAQAbmFtZREAbWluZWNyYWZ0OmNyYWZ0ZXIECQBuYW1lX2hhc2iLCT/rJmRN8QMKAG5ldHdvcmtfaWTPTbvrCgYAc3RhdGVzAQgAY3JhZnRpbmcACAsAb3JpZW50YXRpb24JAGRvd25fZWFzdAENAHRyaWdnZXJlZF9iaXQAAAMHAHZlcnNpb24hPBUBAA=="
+        },
+        {
+            "id": "minecraft:piston",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQhAAAACAQAbmFtZRAAbWluZWNyYWZ0OnBpc3RvbgQJAG5hbWVfaGFzaDs3AFh1fL0uAwoAbmV0d29ya19pZLD/5XQKBgBzdGF0ZXMDEABmYWNpbmdfZGlyZWN0aW9uAQAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:sticky_piston",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQdAAAACAQAbmFtZRcAbWluZWNyYWZ0OnN0aWNreV9waXN0b24ECQBuYW1lX2hhc2hPFJFJSiJ0ZQMKAG5ldHdvcmtfaWT/MzCJCgYAc3RhdGVzAxAAZmFjaW5nX2RpcmVjdGlvbgEAAAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:tnt",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQuAAAACAQAbmFtZQ0AbWluZWNyYWZ0OnRudAQJAG5hbWVfaGFzaEYOHwCvJH29AwoAbmV0d29ya19pZAXzHyUKBgBzdGF0ZXMBCwBleHBsb2RlX2JpdAAAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:name_tag",
+            "groupId": 104
+        },
+        {
+            "id": "minecraft:loom",
+            "groupId": 104,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTLAQAACAQAbmFtZQ4AbWluZWNyYWZ0Omxvb20ECQBuYW1lX2hhc2i7DKjAXNq8TAMKAG5ldHdvcmtfaWR/49HXCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:banner",
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 8,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 7,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 15,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 12,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 14,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 1,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 4,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 5,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 13,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 9,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 3,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 11,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 10,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 2,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 6,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQAAAAAA"
+        },
+        {
+            "id": "minecraft:banner",
+            "damage": 15,
+            "groupId": 105,
+            "nbt_b64": "CgAAAwQAVHlwZQEAAAAA"
+        },
+        {
+            "id": "minecraft:creeper_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:skull_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:flower_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:mojang_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:field_masoned_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:bordure_indented_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:piglin_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:globe_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:flow_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:guster_banner_pattern",
+            "groupId": 106
+        },
+        {
+            "id": "minecraft:angler_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:archer_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:arms_up_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:blade_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:brewer_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:burn_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:danger_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:explorer_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:flow_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:friend_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:guster_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:heart_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:heartbreak_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:howl_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:miner_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:mourner_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:plenty_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:prize_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:scrape_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:sheaf_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:shelter_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:skull_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:snort_pottery_sherd",
+            "groupId": 107
+        },
+        {
+            "id": "minecraft:netherite_upgrade_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:sentry_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:vex_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:wild_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:coast_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:dune_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:wayfinder_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:shaper_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:raiser_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:host_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:ward_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:silence_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:tide_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:snout_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:rib_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:eye_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:spire_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:flow_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:bolt_armor_trim_smithing_template",
+            "groupId": 108
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwAAAAAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAABwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAIBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAHBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAPBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAMBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAOBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAABBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAEBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAFBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAANBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAJBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAADBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAALBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAKBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAACBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_rocket",
+            "groupId": 109,
+            "nbt_b64": "CgAACgkARmlyZXdvcmtzCQoARXhwbG9zaW9ucwoBAAAABw0ARmlyZXdvcmtDb2xvcgEAAAAGBwwARmlyZXdvcmtGYWRlAAAAAAEPAEZpcmV3b3JrRmxpY2tlcgABDQBGaXJld29ya1RyYWlsAAEMAEZpcmV3b3JrVHlwZQAAAQYARmxpZ2h0AQAA"
+        },
+        {
+            "id": "minecraft:firework_star",
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yIR0d/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 8,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yUk9H/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 7,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yl52d/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 15,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y8PDw/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 12,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9y2rM6/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 14,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yHYD5/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 1,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yJi6w/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 4,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABAcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqkQ8/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 5,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yuDKJ/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 13,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAADQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yvU7H/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 9,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACQcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yqovz/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 3,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yMlSD/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 11,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACwcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yPdj+/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 10,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAACgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yH8eA/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 2,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAAAgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9yFnxe/wA="
+        },
+        {
+            "id": "minecraft:firework_star",
+            "damage": 6,
+            "groupId": 110,
+            "nbt_b64": "CgAACg0ARmlyZXdvcmtzSXRlbQcNAEZpcmV3b3JrQ29sb3IBAAAABgcMAEZpcmV3b3JrRmFkZQAAAAABDwBGaXJld29ya0ZsaWNrZXIAAQ0ARmlyZXdvcmtUcmFpbAABDABGaXJld29ya1R5cGUAAAMLAGN1c3RvbUNvbG9ynJwW/wA="
+        },
+        {
+            "id": "minecraft:chain",
+            "groupId": 111
+        },
+        {
+            "id": "minecraft:target",
+            "groupId": 111,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWTuAQAACAQAbmFtZRAAbWluZWNyYWZ0OnRhcmdldAQJAG5hbWVfaGFzaJc66SVbYlaxAwoAbmV0d29ya19pZPBozs0KBgBzdGF0ZXMAAwcAdmVyc2lvbiE8FQEA"
+        },
+        {
+            "id": "minecraft:decorated_pot",
+            "groupId": 111,
+            "block_state_b64": "CgAAAwgAYmxvY2tfaWQmAwAACAQAbmFtZRcAbWluZWNyYWZ0OmRlY29yYXRlZF9wb3QECQBuYW1lX2hhc2jjQgckn8VTvwMKAG5ldHdvcmtfaWRwvkUUCgYAc3RhdGVzAwkAZGlyZWN0aW9uAAAAAAADBwB2ZXJzaW9uITwVAQA="
+        },
+        {
+            "id": "minecraft:trial_key",
+            "groupId": 111
+        },
+        {
+            "id": "minecraft:ominous_trial_key",
+            "groupId": 111
+        }
+    ]
+}
diff --git a/core/src/main/resources/bedrock/item_components.nbt b/core/src/main/resources/bedrock/item_components.nbt
new file mode 100644
index 0000000000000000000000000000000000000000..34d2ac7f0ca1bf5fafda5891c7666b562aa6922f
GIT binary patch
literal 12649
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
Xkr#9y(Pfc{?&ALgn8T(o6b}Ia*2(6l

literal 0
HcmV?d00001

diff --git a/core/src/main/resources/bedrock/item_tags.1_21_60.json b/core/src/main/resources/bedrock/item_tags.1_21_60.json
new file mode 100644
index 000000000..b8b94d6f3
--- /dev/null
+++ b/core/src/main/resources/bedrock/item_tags.1_21_60.json
@@ -0,0 +1,829 @@
+{
+    "minecraft:arrow": [
+        "minecraft:arrow"
+    ],
+    "minecraft:banner": [
+        "minecraft:banner"
+    ],
+    "minecraft:boat": [
+        "minecraft:pale_oak_chest_boat",
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft",
+        "minecraft:pale_oak_boat"
+    ],
+    "minecraft:boats": [
+        "minecraft:pale_oak_chest_boat",
+        "minecraft:cherry_chest_boat",
+        "minecraft:oak_chest_boat",
+        "minecraft:mangrove_boat",
+        "minecraft:oak_boat",
+        "minecraft:birch_boat",
+        "minecraft:jungle_boat",
+        "minecraft:spruce_boat",
+        "minecraft:acacia_boat",
+        "minecraft:dark_oak_boat",
+        "minecraft:birch_chest_boat",
+        "minecraft:jungle_chest_boat",
+        "minecraft:spruce_chest_boat",
+        "minecraft:acacia_chest_boat",
+        "minecraft:dark_oak_chest_boat",
+        "minecraft:mangrove_chest_boat",
+        "minecraft:cherry_boat",
+        "minecraft:bamboo_raft",
+        "minecraft:bamboo_chest_raft",
+        "minecraft:pale_oak_boat"
+    ],
+    "minecraft:bookshelf_books": [
+        "minecraft:written_book",
+        "minecraft:book",
+        "minecraft:writable_book",
+        "minecraft:enchanted_book"
+    ],
+    "minecraft:chainmail_tier": [
+        "minecraft:chainmail_helmet",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots"
+    ],
+    "minecraft:coals": [
+        "minecraft:coal",
+        "minecraft:charcoal"
+    ],
+    "minecraft:crimson_stems": [
+        "minecraft:stripped_crimson_stem",
+        "minecraft:crimson_hyphae",
+        "minecraft:crimson_stem",
+        "minecraft:stripped_crimson_hyphae"
+    ],
+    "minecraft:decorated_pot_sherds": [
+        "minecraft:skull_pottery_sherd",
+        "minecraft:mourner_pottery_sherd",
+        "minecraft:angler_pottery_sherd",
+        "minecraft:prize_pottery_sherd",
+        "minecraft:arms_up_pottery_sherd",
+        "minecraft:burn_pottery_sherd",
+        "minecraft:snort_pottery_sherd",
+        "minecraft:brick",
+        "minecraft:heartbreak_pottery_sherd",
+        "minecraft:miner_pottery_sherd",
+        "minecraft:brewer_pottery_sherd",
+        "minecraft:plenty_pottery_sherd",
+        "minecraft:scrape_pottery_sherd",
+        "minecraft:howl_pottery_sherd",
+        "minecraft:explorer_pottery_sherd",
+        "minecraft:archer_pottery_sherd",
+        "minecraft:blade_pottery_sherd",
+        "minecraft:danger_pottery_sherd",
+        "minecraft:flow_pottery_sherd",
+        "minecraft:friend_pottery_sherd",
+        "minecraft:guster_pottery_sherd",
+        "minecraft:heart_pottery_sherd",
+        "minecraft:sheaf_pottery_sherd",
+        "minecraft:shelter_pottery_sherd"
+    ],
+    "minecraft:diamond_tier": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots"
+    ],
+    "minecraft:digger": [
+        "minecraft:iron_shovel",
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:door": [
+        "minecraft:weathered_copper_door",
+        "minecraft:warped_door",
+        "minecraft:wooden_door",
+        "minecraft:jungle_door",
+        "minecraft:waxed_weathered_copper_door",
+        "minecraft:iron_door",
+        "minecraft:mangrove_door",
+        "minecraft:exposed_copper_door",
+        "minecraft:bamboo_door",
+        "minecraft:spruce_door",
+        "minecraft:birch_door",
+        "minecraft:acacia_door",
+        "minecraft:dark_oak_door",
+        "minecraft:crimson_door",
+        "minecraft:cherry_door",
+        "minecraft:copper_door",
+        "minecraft:oxidized_copper_door",
+        "minecraft:waxed_copper_door",
+        "minecraft:waxed_exposed_copper_door",
+        "minecraft:waxed_oxidized_copper_door",
+        "minecraft:pale_oak_door"
+    ],
+    "minecraft:golden_tier": [
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:golden_hoe",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:hanging_actor": [
+        "minecraft:painting"
+    ],
+    "minecraft:hanging_sign": [
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:pale_oak_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign"
+    ],
+    "minecraft:horse_armor": [
+        "minecraft:iron_horse_armor",
+        "minecraft:golden_horse_armor",
+        "minecraft:leather_horse_armor",
+        "minecraft:diamond_horse_armor"
+    ],
+    "minecraft:iron_tier": [
+        "minecraft:iron_chestplate",
+        "minecraft:iron_shovel",
+        "minecraft:iron_sword",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:iron_hoe",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots"
+    ],
+    "minecraft:is_armor": [
+        "minecraft:iron_chestplate",
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:elytra",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:is_axe": [
+        "minecraft:iron_axe",
+        "minecraft:wooden_axe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_axe",
+        "minecraft:golden_axe",
+        "minecraft:netherite_axe"
+    ],
+    "minecraft:is_cooked": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_porkchop",
+        "minecraft:cooked_salmon",
+        "minecraft:cooked_rabbit",
+        "minecraft:cooked_beef",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton"
+    ],
+    "minecraft:is_fish": [
+        "minecraft:cooked_cod",
+        "minecraft:cooked_salmon",
+        "minecraft:cod",
+        "minecraft:salmon",
+        "minecraft:tropical_fish",
+        "minecraft:pufferfish"
+    ],
+    "minecraft:is_food": [
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:mushroom_stew",
+        "minecraft:potato",
+        "minecraft:enchanted_golden_apple",
+        "minecraft:golden_carrot",
+        "minecraft:carrot",
+        "minecraft:chicken",
+        "minecraft:beetroot",
+        "minecraft:sweet_berries",
+        "minecraft:apple",
+        "minecraft:golden_apple",
+        "minecraft:bread",
+        "minecraft:porkchop",
+        "minecraft:cookie",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:dried_kelp",
+        "minecraft:beetroot_soup",
+        "minecraft:melon_slice",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:baked_potato",
+        "minecraft:pumpkin_pie",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_hoe": [
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_meat": [
+        "minecraft:rabbit",
+        "minecraft:cooked_porkchop",
+        "minecraft:chicken",
+        "minecraft:porkchop",
+        "minecraft:cooked_rabbit",
+        "minecraft:beef",
+        "minecraft:cooked_beef",
+        "minecraft:rotten_flesh",
+        "minecraft:cooked_chicken",
+        "minecraft:rabbit_stew",
+        "minecraft:cooked_mutton",
+        "minecraft:mutton"
+    ],
+    "minecraft:is_minecart": [
+        "minecraft:command_block_minecart",
+        "minecraft:minecart",
+        "minecraft:chest_minecart",
+        "minecraft:tnt_minecart",
+        "minecraft:hopper_minecart"
+    ],
+    "minecraft:is_pickaxe": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:stone_pickaxe",
+        "minecraft:diamond_pickaxe",
+        "minecraft:golden_pickaxe",
+        "minecraft:netherite_pickaxe"
+    ],
+    "minecraft:is_shears": [
+        "minecraft:shears"
+    ],
+    "minecraft:is_shovel": [
+        "minecraft:iron_shovel",
+        "minecraft:wooden_shovel",
+        "minecraft:stone_shovel",
+        "minecraft:diamond_shovel",
+        "minecraft:golden_shovel",
+        "minecraft:netherite_shovel"
+    ],
+    "minecraft:is_sword": [
+        "minecraft:netherite_sword",
+        "minecraft:iron_sword",
+        "minecraft:wooden_sword",
+        "minecraft:stone_sword",
+        "minecraft:diamond_sword",
+        "minecraft:mace",
+        "minecraft:golden_sword"
+    ],
+    "minecraft:is_tool": [
+        "minecraft:netherite_sword",
+        "minecraft:iron_shovel",
+        "minecraft:iron_sword",
+        "minecraft:wooden_pickaxe",
+        "minecraft:iron_pickaxe",
+        "minecraft:iron_axe",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:mace",
+        "minecraft:golden_sword",
+        "minecraft:golden_shovel",
+        "minecraft:golden_pickaxe",
+        "minecraft:golden_axe",
+        "minecraft:wooden_hoe",
+        "minecraft:stone_hoe",
+        "minecraft:iron_hoe",
+        "minecraft:diamond_hoe",
+        "minecraft:golden_hoe",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe"
+    ],
+    "minecraft:is_trident": [
+        "minecraft:trident"
+    ],
+    "minecraft:leather_tier": [
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots"
+    ],
+    "minecraft:lectern_books": [
+        "minecraft:written_book",
+        "minecraft:writable_book"
+    ],
+    "minecraft:logs": [
+        "minecraft:stripped_oak_log",
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_crimson_stem",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:pale_oak_wood",
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:acacia_log",
+        "minecraft:stripped_warped_stem",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:stripped_pale_oak_wood",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_pale_oak_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:crimson_hyphae",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:crimson_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:pale_oak_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:warped_stem",
+        "minecraft:stripped_crimson_hyphae",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:logs_that_burn": [
+        "minecraft:stripped_oak_log",
+        "minecraft:mangrove_wood",
+        "minecraft:spruce_wood",
+        "minecraft:stripped_cherry_wood",
+        "minecraft:stripped_spruce_wood",
+        "minecraft:spruce_log",
+        "minecraft:acacia_wood",
+        "minecraft:stripped_acacia_wood",
+        "minecraft:pale_oak_wood",
+        "minecraft:acacia_log",
+        "minecraft:oak_log",
+        "minecraft:birch_log",
+        "minecraft:jungle_log",
+        "minecraft:stripped_pale_oak_wood",
+        "minecraft:dark_oak_log",
+        "minecraft:jungle_wood",
+        "minecraft:stripped_jungle_wood",
+        "minecraft:oak_wood",
+        "minecraft:birch_wood",
+        "minecraft:dark_oak_wood",
+        "minecraft:stripped_oak_wood",
+        "minecraft:stripped_birch_wood",
+        "minecraft:stripped_dark_oak_wood",
+        "minecraft:stripped_dark_oak_log",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_jungle_log",
+        "minecraft:stripped_pale_oak_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_cherry_log",
+        "minecraft:stripped_birch_log",
+        "minecraft:stripped_acacia_log",
+        "minecraft:pale_oak_log",
+        "minecraft:stripped_spruce_log",
+        "minecraft:cherry_wood",
+        "minecraft:cherry_log",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:mangrove_logs": [
+        "minecraft:mangrove_wood",
+        "minecraft:mangrove_log",
+        "minecraft:stripped_mangrove_wood",
+        "minecraft:stripped_mangrove_log"
+    ],
+    "minecraft:music_disc": [
+        "minecraft:music_disc_ward",
+        "minecraft:music_disc_stal",
+        "minecraft:music_disc_wait",
+        "minecraft:music_disc_cat",
+        "minecraft:music_disc_strad",
+        "minecraft:music_disc_chirp",
+        "minecraft:music_disc_mall",
+        "minecraft:music_disc_creator_music_box",
+        "minecraft:music_disc_pigstep",
+        "minecraft:music_disc_11",
+        "minecraft:music_disc_13",
+        "minecraft:music_disc_blocks",
+        "minecraft:music_disc_far",
+        "minecraft:music_disc_mellohi",
+        "minecraft:music_disc_otherside",
+        "minecraft:music_disc_5",
+        "minecraft:music_disc_relic",
+        "minecraft:music_disc_creator",
+        "minecraft:music_disc_precipice"
+    ],
+    "minecraft:netherite_tier": [
+        "minecraft:netherite_sword",
+        "minecraft:netherite_boots",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_pickaxe",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_shovel",
+        "minecraft:netherite_axe",
+        "minecraft:netherite_hoe",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:planks": [
+        "minecraft:spruce_planks",
+        "minecraft:oak_planks",
+        "minecraft:mangrove_planks",
+        "minecraft:dark_oak_planks",
+        "minecraft:birch_planks",
+        "minecraft:jungle_planks",
+        "minecraft:acacia_planks",
+        "minecraft:bamboo_planks",
+        "minecraft:warped_planks",
+        "minecraft:pale_oak_planks",
+        "minecraft:crimson_planks",
+        "minecraft:cherry_planks"
+    ],
+    "minecraft:sand": [
+        "minecraft:sand",
+        "minecraft:red_sand"
+    ],
+    "minecraft:sign": [
+        "minecraft:jungle_sign",
+        "minecraft:bamboo_sign",
+        "minecraft:mangrove_hanging_sign",
+        "minecraft:cherry_sign",
+        "minecraft:oak_sign",
+        "minecraft:bamboo_hanging_sign",
+        "minecraft:warped_sign",
+        "minecraft:spruce_sign",
+        "minecraft:pale_oak_hanging_sign",
+        "minecraft:spruce_hanging_sign",
+        "minecraft:acacia_sign",
+        "minecraft:birch_hanging_sign",
+        "minecraft:birch_sign",
+        "minecraft:dark_oak_sign",
+        "minecraft:mangrove_sign",
+        "minecraft:crimson_sign",
+        "minecraft:cherry_hanging_sign",
+        "minecraft:oak_hanging_sign",
+        "minecraft:jungle_hanging_sign",
+        "minecraft:acacia_hanging_sign",
+        "minecraft:dark_oak_hanging_sign",
+        "minecraft:crimson_hanging_sign",
+        "minecraft:warped_hanging_sign",
+        "minecraft:pale_oak_sign"
+    ],
+    "minecraft:soul_fire_base_blocks": [
+        "minecraft:soul_soil",
+        "minecraft:soul_sand"
+    ],
+    "minecraft:spawn_egg": [
+        "minecraft:enderman_spawn_egg",
+        "minecraft:endermite_spawn_egg",
+        "minecraft:tropical_fish_spawn_egg",
+        "minecraft:ravager_spawn_egg",
+        "minecraft:pufferfish_spawn_egg",
+        "minecraft:zoglin_spawn_egg",
+        "minecraft:strider_spawn_egg",
+        "minecraft:slime_spawn_egg",
+        "minecraft:glow_squid_spawn_egg",
+        "minecraft:blaze_spawn_egg",
+        "minecraft:witch_spawn_egg",
+        "minecraft:horse_spawn_egg",
+        "minecraft:polar_bear_spawn_egg",
+        "minecraft:pillager_spawn_egg",
+        "minecraft:stray_spawn_egg",
+        "minecraft:zombie_pigman_spawn_egg",
+        "minecraft:snow_golem_spawn_egg",
+        "minecraft:panda_spawn_egg",
+        "minecraft:axolotl_spawn_egg",
+        "minecraft:agent_spawn_egg",
+        "minecraft:shulker_spawn_egg",
+        "minecraft:vindicator_spawn_egg",
+        "minecraft:evoker_spawn_egg",
+        "minecraft:parrot_spawn_egg",
+        "minecraft:wolf_spawn_egg",
+        "minecraft:sheep_spawn_egg",
+        "minecraft:elder_guardian_spawn_egg",
+        "minecraft:silverfish_spawn_egg",
+        "minecraft:tadpole_spawn_egg",
+        "minecraft:cow_spawn_egg",
+        "minecraft:bogged_spawn_egg",
+        "minecraft:ocelot_spawn_egg",
+        "minecraft:bee_spawn_egg",
+        "minecraft:piglin_brute_spawn_egg",
+        "minecraft:rabbit_spawn_egg",
+        "minecraft:camel_spawn_egg",
+        "minecraft:creeper_spawn_egg",
+        "minecraft:drowned_spawn_egg",
+        "minecraft:chicken_spawn_egg",
+        "minecraft:pig_spawn_egg",
+        "minecraft:mooshroom_spawn_egg",
+        "minecraft:skeleton_spawn_egg",
+        "minecraft:spider_spawn_egg",
+        "minecraft:zombie_spawn_egg",
+        "minecraft:villager_spawn_egg",
+        "minecraft:squid_spawn_egg",
+        "minecraft:bat_spawn_egg",
+        "minecraft:ghast_spawn_egg",
+        "minecraft:magma_cube_spawn_egg",
+        "minecraft:cave_spider_spawn_egg",
+        "minecraft:guardian_spawn_egg",
+        "minecraft:husk_spawn_egg",
+        "minecraft:piglin_spawn_egg",
+        "minecraft:wither_skeleton_spawn_egg",
+        "minecraft:donkey_spawn_egg",
+        "minecraft:creaking_spawn_egg",
+        "minecraft:mule_spawn_egg",
+        "minecraft:skeleton_horse_spawn_egg",
+        "minecraft:zombie_horse_spawn_egg",
+        "minecraft:npc_spawn_egg",
+        "minecraft:breeze_spawn_egg",
+        "minecraft:llama_spawn_egg",
+        "minecraft:vex_spawn_egg",
+        "minecraft:warden_spawn_egg",
+        "minecraft:zombie_villager_spawn_egg",
+        "minecraft:cod_spawn_egg",
+        "minecraft:salmon_spawn_egg",
+        "minecraft:dolphin_spawn_egg",
+        "minecraft:turtle_spawn_egg",
+        "minecraft:phantom_spawn_egg",
+        "minecraft:cat_spawn_egg",
+        "minecraft:fox_spawn_egg",
+        "minecraft:wandering_trader_spawn_egg",
+        "minecraft:hoglin_spawn_egg",
+        "minecraft:sniffer_spawn_egg",
+        "minecraft:goat_spawn_egg",
+        "minecraft:iron_golem_spawn_egg",
+        "minecraft:ender_dragon_spawn_egg",
+        "minecraft:wither_spawn_egg",
+        "minecraft:frog_spawn_egg",
+        "minecraft:allay_spawn_egg",
+        "minecraft:trader_llama_spawn_egg",
+        "minecraft:armadillo_spawn_egg",
+        "minecraft:spawn_egg"
+    ],
+    "minecraft:stone_bricks": [
+        "minecraft:mossy_stone_bricks",
+        "minecraft:stone_bricks",
+        "minecraft:cracked_stone_bricks",
+        "minecraft:chiseled_stone_bricks"
+    ],
+    "minecraft:stone_crafting_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:stone_tier": [
+        "minecraft:stone_sword",
+        "minecraft:stone_shovel",
+        "minecraft:stone_pickaxe",
+        "minecraft:stone_axe",
+        "minecraft:stone_hoe"
+    ],
+    "minecraft:stone_tool_materials": [
+        "minecraft:cobblestone",
+        "minecraft:cobbled_deepslate",
+        "minecraft:blackstone"
+    ],
+    "minecraft:transform_materials": [
+        "minecraft:netherite_ingot"
+    ],
+    "minecraft:transform_templates": [
+        "minecraft:netherite_upgrade_smithing_template"
+    ],
+    "minecraft:transformable_items": [
+        "minecraft:diamond_sword",
+        "minecraft:diamond_shovel",
+        "minecraft:diamond_pickaxe",
+        "minecraft:diamond_axe",
+        "minecraft:diamond_hoe",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_boots"
+    ],
+    "minecraft:trim_materials": [
+        "minecraft:resin_brick",
+        "minecraft:diamond",
+        "minecraft:iron_ingot",
+        "minecraft:gold_ingot",
+        "minecraft:redstone",
+        "minecraft:netherite_ingot",
+        "minecraft:lapis_lazuli",
+        "minecraft:quartz",
+        "minecraft:copper_ingot",
+        "minecraft:emerald",
+        "minecraft:amethyst_shard"
+    ],
+    "minecraft:trim_templates": [
+        "minecraft:coast_armor_trim_smithing_template",
+        "minecraft:vex_armor_trim_smithing_template",
+        "minecraft:wild_armor_trim_smithing_template",
+        "minecraft:flow_armor_trim_smithing_template",
+        "minecraft:silence_armor_trim_smithing_template",
+        "minecraft:snout_armor_trim_smithing_template",
+        "minecraft:dune_armor_trim_smithing_template",
+        "minecraft:rib_armor_trim_smithing_template",
+        "minecraft:host_armor_trim_smithing_template",
+        "minecraft:eye_armor_trim_smithing_template",
+        "minecraft:spire_armor_trim_smithing_template",
+        "minecraft:sentry_armor_trim_smithing_template",
+        "minecraft:ward_armor_trim_smithing_template",
+        "minecraft:tide_armor_trim_smithing_template",
+        "minecraft:wayfinder_armor_trim_smithing_template",
+        "minecraft:raiser_armor_trim_smithing_template",
+        "minecraft:shaper_armor_trim_smithing_template",
+        "minecraft:bolt_armor_trim_smithing_template"
+    ],
+    "minecraft:trimmable_armors": [
+        "minecraft:iron_chestplate",
+        "minecraft:netherite_boots",
+        "minecraft:chainmail_helmet",
+        "minecraft:leather_helmet",
+        "minecraft:leather_chestplate",
+        "minecraft:leather_leggings",
+        "minecraft:leather_boots",
+        "minecraft:chainmail_chestplate",
+        "minecraft:chainmail_leggings",
+        "minecraft:chainmail_boots",
+        "minecraft:iron_helmet",
+        "minecraft:iron_leggings",
+        "minecraft:iron_boots",
+        "minecraft:diamond_helmet",
+        "minecraft:diamond_chestplate",
+        "minecraft:diamond_leggings",
+        "minecraft:diamond_boots",
+        "minecraft:golden_helmet",
+        "minecraft:golden_chestplate",
+        "minecraft:golden_leggings",
+        "minecraft:golden_boots",
+        "minecraft:turtle_helmet",
+        "minecraft:netherite_chestplate",
+        "minecraft:netherite_leggings",
+        "minecraft:netherite_helmet"
+    ],
+    "minecraft:vibration_damper": [
+        "minecraft:black_carpet",
+        "minecraft:pink_carpet",
+        "minecraft:lime_carpet",
+        "minecraft:blue_carpet",
+        "minecraft:green_wool",
+        "minecraft:cyan_carpet",
+        "minecraft:orange_wool",
+        "minecraft:white_carpet",
+        "minecraft:purple_carpet",
+        "minecraft:yellow_carpet",
+        "minecraft:light_gray_wool",
+        "minecraft:magenta_carpet",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:red_carpet",
+        "minecraft:brown_carpet",
+        "minecraft:light_blue_wool",
+        "minecraft:green_carpet",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool",
+        "minecraft:orange_carpet",
+        "minecraft:light_blue_carpet",
+        "minecraft:gray_carpet",
+        "minecraft:light_gray_carpet"
+    ],
+    "minecraft:warped_stems": [
+        "minecraft:stripped_warped_hyphae",
+        "minecraft:stripped_warped_stem",
+        "minecraft:warped_hyphae",
+        "minecraft:warped_stem"
+    ],
+    "minecraft:wooden_slabs": [
+        "minecraft:birch_slab",
+        "minecraft:oak_slab",
+        "minecraft:spruce_slab",
+        "minecraft:bamboo_slab",
+        "minecraft:warped_slab",
+        "minecraft:pale_oak_slab",
+        "minecraft:mangrove_slab",
+        "minecraft:cherry_slab",
+        "minecraft:jungle_slab",
+        "minecraft:acacia_slab",
+        "minecraft:dark_oak_slab",
+        "minecraft:crimson_slab"
+    ],
+    "minecraft:wooden_tier": [
+        "minecraft:wooden_pickaxe",
+        "minecraft:wooden_sword",
+        "minecraft:wooden_shovel",
+        "minecraft:wooden_axe",
+        "minecraft:wooden_hoe"
+    ],
+    "minecraft:wool": [
+        "minecraft:green_wool",
+        "minecraft:orange_wool",
+        "minecraft:light_gray_wool",
+        "minecraft:purple_wool",
+        "minecraft:gray_wool",
+        "minecraft:light_blue_wool",
+        "minecraft:white_wool",
+        "minecraft:magenta_wool",
+        "minecraft:yellow_wool",
+        "minecraft:lime_wool",
+        "minecraft:pink_wool",
+        "minecraft:cyan_wool",
+        "minecraft:blue_wool",
+        "minecraft:brown_wool",
+        "minecraft:red_wool",
+        "minecraft:black_wool"
+    ]
+}
diff --git a/core/src/main/resources/bedrock/runtime_item_states.1_21_60.json b/core/src/main/resources/bedrock/runtime_item_states.1_21_60.json
new file mode 100644
index 000000000..9f8bf5cdb
--- /dev/null
+++ b/core/src/main/resources/bedrock/runtime_item_states.1_21_60.json
@@ -0,0 +1,10730 @@
+[
+    {
+        "name": "minecraft:acacia_boat",
+        "id": 405,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_button",
+        "id": -140,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_chest_boat",
+        "id": 679,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_door",
+        "id": 589,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_double_slab",
+        "id": -812,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_fence",
+        "id": -575,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_fence_gate",
+        "id": 187,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_hanging_sign",
+        "id": -504,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_leaves",
+        "id": 161,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_log",
+        "id": 162,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_planks",
+        "id": -742,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_pressure_plate",
+        "id": -150,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_sapling",
+        "id": -828,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_sign",
+        "id": 612,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_slab",
+        "id": -807,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_stairs",
+        "id": 163,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_standing_sign",
+        "id": -190,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_trapdoor",
+        "id": -145,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_wall_sign",
+        "id": -191,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:acacia_wood",
+        "id": -817,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:activator_rail",
+        "id": 126,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:agent_spawn_egg",
+        "id": 515,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:air",
+        "id": -158,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:allay_spawn_egg",
+        "id": 668,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:allium",
+        "id": -831,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:allow",
+        "id": 210,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:amethyst_block",
+        "id": -327,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:amethyst_cluster",
+        "id": -329,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:amethyst_shard",
+        "id": 661,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ancient_debris",
+        "id": -271,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:andesite",
+        "id": -594,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:andesite_double_slab",
+        "id": -920,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:andesite_slab",
+        "id": -893,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:andesite_stairs",
+        "id": -171,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:andesite_wall",
+        "id": -974,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:angler_pottery_sherd",
+        "id": 693,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:anvil",
+        "id": 145,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:apple",
+        "id": 278,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:archer_pottery_sherd",
+        "id": 694,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:armadillo_scute",
+        "id": 740,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:armadillo_spawn_egg",
+        "id": 739,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:armor_stand",
+        "id": 585,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:arms_up_pottery_sherd",
+        "id": 695,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:arrow",
+        "id": 325,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:axolotl_bucket",
+        "id": 394,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:axolotl_spawn_egg",
+        "id": 530,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:azalea",
+        "id": -337,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:azalea_leaves",
+        "id": -324,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:azalea_leaves_flowered",
+        "id": -325,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:azure_bluet",
+        "id": -832,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:baked_potato",
+        "id": 303,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:balloon",
+        "id": 635,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo",
+        "id": -163,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_block",
+        "id": -527,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_button",
+        "id": -511,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_chest_raft",
+        "id": 691,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_door",
+        "id": -517,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_double_slab",
+        "id": -521,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_fence",
+        "id": -515,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_fence_gate",
+        "id": -516,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_hanging_sign",
+        "id": -522,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_mosaic",
+        "id": -509,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_mosaic_double_slab",
+        "id": -525,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_mosaic_slab",
+        "id": -524,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_mosaic_stairs",
+        "id": -523,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_planks",
+        "id": -510,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_pressure_plate",
+        "id": -514,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_raft",
+        "id": 690,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_sapling",
+        "id": -164,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_sign",
+        "id": 689,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_slab",
+        "id": -513,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_stairs",
+        "id": -512,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_standing_sign",
+        "id": -518,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_trapdoor",
+        "id": -520,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bamboo_wall_sign",
+        "id": -519,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:banner",
+        "id": 600,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:banner_pattern",
+        "id": 793,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:barrel",
+        "id": -203,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:barrier",
+        "id": -161,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:basalt",
+        "id": -234,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bat_spawn_egg",
+        "id": 480,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:beacon",
+        "id": 138,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bed",
+        "id": 444,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bedrock",
+        "id": 7,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bee_nest",
+        "id": -218,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bee_spawn_egg",
+        "id": 522,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:beef",
+        "id": 295,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:beehive",
+        "id": -219,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:beetroot",
+        "id": 307,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:beetroot_seeds",
+        "id": 317,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:beetroot_soup",
+        "id": 308,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bell",
+        "id": -206,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:big_dripleaf",
+        "id": -323,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_boat",
+        "id": 402,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_button",
+        "id": -141,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_chest_boat",
+        "id": 676,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_door",
+        "id": 587,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_double_slab",
+        "id": -810,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_fence",
+        "id": -576,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_fence_gate",
+        "id": 184,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_hanging_sign",
+        "id": -502,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_leaves",
+        "id": -801,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_log",
+        "id": -570,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_planks",
+        "id": -740,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_pressure_plate",
+        "id": -151,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_sapling",
+        "id": -826,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_sign",
+        "id": 610,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_slab",
+        "id": -805,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_stairs",
+        "id": 135,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_standing_sign",
+        "id": -186,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_trapdoor",
+        "id": -146,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_wall_sign",
+        "id": -187,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:birch_wood",
+        "id": -815,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_bundle",
+        "id": 257,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:black_candle",
+        "id": -428,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_candle_cake",
+        "id": -445,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_carpet",
+        "id": -611,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_concrete",
+        "id": -642,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_concrete_powder",
+        "id": -723,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_dye",
+        "id": 421,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_glazed_terracotta",
+        "id": 235,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_shulker_box",
+        "id": -627,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_stained_glass",
+        "id": -687,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_stained_glass_pane",
+        "id": -657,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_terracotta",
+        "id": -738,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:black_wool",
+        "id": -554,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blackstone",
+        "id": -273,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blackstone_double_slab",
+        "id": -283,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blackstone_slab",
+        "id": -282,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blackstone_stairs",
+        "id": -276,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blackstone_wall",
+        "id": -277,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blade_pottery_sherd",
+        "id": 696,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blast_furnace",
+        "id": -196,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blaze_powder",
+        "id": 456,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blaze_rod",
+        "id": 449,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blaze_spawn_egg",
+        "id": 483,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bleach",
+        "id": 633,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_bundle",
+        "id": 258,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:blue_candle",
+        "id": -424,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_candle_cake",
+        "id": -441,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_carpet",
+        "id": -607,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_concrete",
+        "id": -638,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_concrete_powder",
+        "id": -719,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_dye",
+        "id": 425,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_glazed_terracotta",
+        "id": 231,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_ice",
+        "id": -11,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_orchid",
+        "id": -830,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_shulker_box",
+        "id": -623,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_stained_glass",
+        "id": -683,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_stained_glass_pane",
+        "id": -653,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_terracotta",
+        "id": -734,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:blue_wool",
+        "id": -563,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:board",
+        "id": 629,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:boat",
+        "id": 791,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bogged_spawn_egg",
+        "id": 490,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bolt_armor_trim_smithing_template",
+        "id": 735,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bone",
+        "id": 441,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bone_block",
+        "id": 216,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bone_meal",
+        "id": 437,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:book",
+        "id": 413,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bookshelf",
+        "id": 47,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:border_block",
+        "id": 212,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bordure_indented_banner_pattern",
+        "id": 619,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bow",
+        "id": 324,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bowl",
+        "id": 346,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brain_coral",
+        "id": -581,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brain_coral_block",
+        "id": -849,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brain_coral_fan",
+        "id": -840,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brain_coral_wall_fan",
+        "id": -904,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bread",
+        "id": 283,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:breeze_rod",
+        "id": 274,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:breeze_spawn_egg",
+        "id": 529,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brewer_pottery_sherd",
+        "id": 697,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brewing_stand",
+        "id": 458,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:brick",
+        "id": 409,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brick_block",
+        "id": 45,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brick_double_slab",
+        "id": -880,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brick_slab",
+        "id": -874,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brick_stairs",
+        "id": 108,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brick_wall",
+        "id": -976,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_bundle",
+        "id": 259,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:brown_candle",
+        "id": -425,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_candle_cake",
+        "id": -442,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_carpet",
+        "id": -608,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_concrete",
+        "id": -639,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_concrete_powder",
+        "id": -720,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_dye",
+        "id": 424,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_glazed_terracotta",
+        "id": 232,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_mushroom",
+        "id": 39,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_mushroom_block",
+        "id": 99,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_shulker_box",
+        "id": -624,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_stained_glass",
+        "id": -684,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_stained_glass_pane",
+        "id": -654,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_terracotta",
+        "id": -735,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brown_wool",
+        "id": -555,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:brush",
+        "id": 716,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bubble_column",
+        "id": -160,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bubble_coral",
+        "id": -582,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bubble_coral_block",
+        "id": -850,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bubble_coral_fan",
+        "id": -841,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bubble_coral_wall_fan",
+        "id": -136,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bucket",
+        "id": 385,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:budding_amethyst",
+        "id": -328,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:bundle",
+        "id": 260,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:burn_pottery_sherd",
+        "id": 698,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cactus",
+        "id": 81,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cake",
+        "id": 443,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:calcite",
+        "id": -326,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:calibrated_sculk_sensor",
+        "id": -580,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:camel_spawn_egg",
+        "id": 692,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:camera",
+        "id": 630,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:campfire",
+        "id": 624,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:candle",
+        "id": -412,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:candle_cake",
+        "id": -429,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:carpet",
+        "id": 750,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:carrot",
+        "id": 301,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:carrot_on_a_stick",
+        "id": 550,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:carrots",
+        "id": 141,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cartography_table",
+        "id": -200,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:carved_pumpkin",
+        "id": -155,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cat_spawn_egg",
+        "id": 516,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cauldron",
+        "id": 459,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:cave_spider_spawn_egg",
+        "id": 484,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cave_vines",
+        "id": -322,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cave_vines_body_with_berries",
+        "id": -375,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cave_vines_head_with_berries",
+        "id": -376,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chain",
+        "id": 656,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:chain_command_block",
+        "id": 189,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chainmail_boots",
+        "id": 367,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chainmail_chestplate",
+        "id": 365,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chainmail_helmet",
+        "id": 364,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chainmail_leggings",
+        "id": 366,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chalkboard",
+        "id": 230,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:charcoal",
+        "id": 327,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:chemical_heat",
+        "id": 192,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chemistry_table",
+        "id": 785,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_boat",
+        "id": 686,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_button",
+        "id": -530,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_chest_boat",
+        "id": 687,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_door",
+        "id": -531,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_double_slab",
+        "id": -540,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_fence",
+        "id": -532,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_fence_gate",
+        "id": -533,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_hanging_sign",
+        "id": -534,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_leaves",
+        "id": -548,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_log",
+        "id": -536,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_planks",
+        "id": -537,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_pressure_plate",
+        "id": -538,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_sapling",
+        "id": -547,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_sign",
+        "id": 688,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_slab",
+        "id": -539,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_stairs",
+        "id": -541,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_standing_sign",
+        "id": -542,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_trapdoor",
+        "id": -543,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_wall_sign",
+        "id": -544,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cherry_wood",
+        "id": -546,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chest",
+        "id": 54,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chest_boat",
+        "id": 682,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chest_minecart",
+        "id": 415,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chicken",
+        "id": 297,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chicken_spawn_egg",
+        "id": 462,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chipped_anvil",
+        "id": -959,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_bookshelf",
+        "id": -526,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_copper",
+        "id": -760,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_deepslate",
+        "id": -395,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_nether_bricks",
+        "id": -302,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_polished_blackstone",
+        "id": -279,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_quartz_block",
+        "id": -953,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_red_sandstone",
+        "id": -956,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_resin_bricks",
+        "id": -1020,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_sandstone",
+        "id": -944,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_stone_bricks",
+        "id": -870,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_tuff",
+        "id": -753,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chiseled_tuff_bricks",
+        "id": -759,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chorus_flower",
+        "id": 200,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chorus_fruit",
+        "id": 591,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:chorus_plant",
+        "id": 240,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:clay",
+        "id": 82,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:clay_ball",
+        "id": 410,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:client_request_placeholder_block",
+        "id": -465,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:clock",
+        "id": 419,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:closed_eyeblossom",
+        "id": -1019,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coal",
+        "id": 326,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:coal_block",
+        "id": 173,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coal_ore",
+        "id": 16,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coarse_dirt",
+        "id": -962,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coast_armor_trim_smithing_template",
+        "id": 720,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobbled_deepslate",
+        "id": -379,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_double_slab",
+        "id": -396,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_slab",
+        "id": -380,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_stairs",
+        "id": -381,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobbled_deepslate_wall",
+        "id": -382,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobblestone",
+        "id": 4,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobblestone_double_slab",
+        "id": -879,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobblestone_slab",
+        "id": -873,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cobblestone_wall",
+        "id": 139,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cocoa",
+        "id": 127,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cocoa_beans",
+        "id": 438,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cod",
+        "id": 286,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cod_bucket",
+        "id": 389,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cod_spawn_egg",
+        "id": 508,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:colored_torch_blue",
+        "id": 204,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:colored_torch_bp",
+        "id": 789,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:colored_torch_green",
+        "id": -963,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:colored_torch_purple",
+        "id": -964,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:colored_torch_red",
+        "id": 202,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:colored_torch_rg",
+        "id": 788,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:command_block",
+        "id": 137,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:command_block_minecart",
+        "id": 596,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:comparator",
+        "id": 555,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:compass",
+        "id": 417,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:composter",
+        "id": -213,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:compound",
+        "id": 631,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:compound_creator",
+        "id": 238,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:concrete",
+        "id": 776,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:concrete_powder",
+        "id": 777,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:conduit",
+        "id": -157,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_beef",
+        "id": 296,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_chicken",
+        "id": 298,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_cod",
+        "id": 290,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_mutton",
+        "id": 584,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_porkchop",
+        "id": 285,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_rabbit",
+        "id": 311,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cooked_salmon",
+        "id": 291,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cookie",
+        "id": 293,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_block",
+        "id": -340,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_bulb",
+        "id": -776,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_door",
+        "id": -784,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_grate",
+        "id": -768,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_ingot",
+        "id": 538,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_ore",
+        "id": -311,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:copper_trapdoor",
+        "id": -792,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coral",
+        "id": 772,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coral_block",
+        "id": 754,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coral_fan",
+        "id": 763,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:coral_fan_dead",
+        "id": 764,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cornflower",
+        "id": -838,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cow_spawn_egg",
+        "id": 463,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cracked_deepslate_bricks",
+        "id": -410,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cracked_deepslate_tiles",
+        "id": -409,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cracked_nether_bricks",
+        "id": -303,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cracked_polished_blackstone_bricks",
+        "id": -280,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cracked_stone_bricks",
+        "id": -869,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crafter",
+        "id": -313,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crafting_table",
+        "id": 58,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:creaking_heart",
+        "id": -1012,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:creaking_spawn_egg",
+        "id": 747,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:creeper_banner_pattern",
+        "id": 615,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:creeper_head",
+        "id": -968,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:creeper_spawn_egg",
+        "id": 468,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_button",
+        "id": -260,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_door",
+        "id": 653,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_double_slab",
+        "id": -266,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_fence",
+        "id": -256,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_fence_gate",
+        "id": -258,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_fungus",
+        "id": -228,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_hanging_sign",
+        "id": -506,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_hyphae",
+        "id": -299,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_nylium",
+        "id": -232,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_planks",
+        "id": -242,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_pressure_plate",
+        "id": -262,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_roots",
+        "id": -223,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_sign",
+        "id": 651,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_slab",
+        "id": -264,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_stairs",
+        "id": -254,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_standing_sign",
+        "id": -250,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_stem",
+        "id": -225,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_trapdoor",
+        "id": -246,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crimson_wall_sign",
+        "id": -252,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crossbow",
+        "id": 608,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:crying_obsidian",
+        "id": -289,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_copper",
+        "id": -347,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_copper_slab",
+        "id": -361,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_copper_stairs",
+        "id": -354,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_red_sandstone",
+        "id": -957,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_red_sandstone_double_slab",
+        "id": -928,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_red_sandstone_slab",
+        "id": -901,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_sandstone",
+        "id": -945,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_sandstone_double_slab",
+        "id": -927,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cut_sandstone_slab",
+        "id": -900,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_bundle",
+        "id": 261,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:cyan_candle",
+        "id": -422,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_candle_cake",
+        "id": -439,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_carpet",
+        "id": -605,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_concrete",
+        "id": -636,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_concrete_powder",
+        "id": -717,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_dye",
+        "id": 427,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_glazed_terracotta",
+        "id": 229,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_shulker_box",
+        "id": -621,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_stained_glass",
+        "id": -681,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_stained_glass_pane",
+        "id": -651,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_terracotta",
+        "id": -732,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:cyan_wool",
+        "id": -561,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:damaged_anvil",
+        "id": -960,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dandelion",
+        "id": 37,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:danger_pottery_sherd",
+        "id": 699,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_boat",
+        "id": 406,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_button",
+        "id": -142,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_chest_boat",
+        "id": 680,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_door",
+        "id": 590,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_double_slab",
+        "id": -813,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_fence",
+        "id": -577,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_fence_gate",
+        "id": 186,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_hanging_sign",
+        "id": -505,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_leaves",
+        "id": -803,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_log",
+        "id": -572,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_planks",
+        "id": -743,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_pressure_plate",
+        "id": -152,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_sapling",
+        "id": -829,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_sign",
+        "id": 613,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_slab",
+        "id": -808,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_stairs",
+        "id": 164,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_trapdoor",
+        "id": -147,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_oak_wood",
+        "id": -818,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_prismarine",
+        "id": -947,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_prismarine_double_slab",
+        "id": -913,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_prismarine_slab",
+        "id": -886,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dark_prismarine_stairs",
+        "id": -3,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:darkoak_standing_sign",
+        "id": -192,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:darkoak_wall_sign",
+        "id": -193,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:daylight_detector",
+        "id": 151,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:daylight_detector_inverted",
+        "id": 178,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_brain_coral",
+        "id": -586,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_brain_coral_block",
+        "id": -854,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_brain_coral_fan",
+        "id": -844,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_brain_coral_wall_fan",
+        "id": -906,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_bubble_coral",
+        "id": -587,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_bubble_coral_block",
+        "id": -855,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_bubble_coral_fan",
+        "id": -845,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_bubble_coral_wall_fan",
+        "id": -908,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_fire_coral",
+        "id": -588,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_fire_coral_block",
+        "id": -856,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_fire_coral_fan",
+        "id": -846,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_fire_coral_wall_fan",
+        "id": -909,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_horn_coral",
+        "id": -589,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_horn_coral_block",
+        "id": -857,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_horn_coral_fan",
+        "id": -847,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_horn_coral_wall_fan",
+        "id": -910,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_tube_coral",
+        "id": -585,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_tube_coral_block",
+        "id": -853,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_tube_coral_fan",
+        "id": -134,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dead_tube_coral_wall_fan",
+        "id": -905,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deadbush",
+        "id": 32,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:decorated_pot",
+        "id": -551,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate",
+        "id": -378,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_brick_double_slab",
+        "id": -399,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_brick_slab",
+        "id": -392,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_brick_stairs",
+        "id": -393,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_brick_wall",
+        "id": -394,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_bricks",
+        "id": -391,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_coal_ore",
+        "id": -406,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_copper_ore",
+        "id": -408,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_diamond_ore",
+        "id": -405,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_emerald_ore",
+        "id": -407,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_gold_ore",
+        "id": -402,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_iron_ore",
+        "id": -401,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_lapis_ore",
+        "id": -400,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_redstone_ore",
+        "id": -403,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_tile_double_slab",
+        "id": -398,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_tile_slab",
+        "id": -388,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_tile_stairs",
+        "id": -389,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_tile_wall",
+        "id": -390,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deepslate_tiles",
+        "id": -387,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deny",
+        "id": 211,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deprecated_anvil",
+        "id": -961,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deprecated_purpur_block_1",
+        "id": -950,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:deprecated_purpur_block_2",
+        "id": -952,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:detector_rail",
+        "id": 28,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond",
+        "id": 328,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_axe",
+        "id": 343,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_block",
+        "id": 57,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_boots",
+        "id": 375,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_chestplate",
+        "id": 373,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_helmet",
+        "id": 372,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_hoe",
+        "id": 357,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_horse_armor",
+        "id": 566,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_leggings",
+        "id": 374,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_ore",
+        "id": 56,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_pickaxe",
+        "id": 342,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_shovel",
+        "id": 341,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diamond_sword",
+        "id": 340,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diorite",
+        "id": -592,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diorite_double_slab",
+        "id": -921,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diorite_slab",
+        "id": -894,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diorite_stairs",
+        "id": -170,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:diorite_wall",
+        "id": -973,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dirt",
+        "id": 3,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dirt_with_roots",
+        "id": -318,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:disc_fragment_5",
+        "id": 674,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dispenser",
+        "id": 23,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dolphin_spawn_egg",
+        "id": 512,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:donkey_spawn_egg",
+        "id": 493,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:double_cut_copper_slab",
+        "id": -368,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:double_plant",
+        "id": 770,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:double_stone_block_slab",
+        "id": 759,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:double_stone_block_slab2",
+        "id": 760,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:double_stone_block_slab3",
+        "id": 761,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:double_stone_block_slab4",
+        "id": 762,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dragon_breath",
+        "id": 593,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dragon_egg",
+        "id": 122,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dragon_head",
+        "id": -969,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dried_kelp",
+        "id": 292,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dried_kelp_block",
+        "id": -139,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dripstone_block",
+        "id": -317,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dropper",
+        "id": 125,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:drowned_spawn_egg",
+        "id": 511,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dune_armor_trim_smithing_template",
+        "id": 719,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:dye",
+        "id": 792,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:echo_shard",
+        "id": 684,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:egg",
+        "id": 416,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:elder_guardian_spawn_egg",
+        "id": 499,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_0",
+        "id": 36,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_1",
+        "id": -12,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_10",
+        "id": -21,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_100",
+        "id": -111,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_101",
+        "id": -112,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_102",
+        "id": -113,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_103",
+        "id": -114,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_104",
+        "id": -115,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_105",
+        "id": -116,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_106",
+        "id": -117,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_107",
+        "id": -118,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_108",
+        "id": -119,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_109",
+        "id": -120,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_11",
+        "id": -22,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_110",
+        "id": -121,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_111",
+        "id": -122,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_112",
+        "id": -123,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_113",
+        "id": -124,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_114",
+        "id": -125,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_115",
+        "id": -126,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_116",
+        "id": -127,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_117",
+        "id": -128,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_118",
+        "id": -129,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_12",
+        "id": -23,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_13",
+        "id": -24,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_14",
+        "id": -25,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_15",
+        "id": -26,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_16",
+        "id": -27,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_17",
+        "id": -28,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_18",
+        "id": -29,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_19",
+        "id": -30,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_2",
+        "id": -13,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_20",
+        "id": -31,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_21",
+        "id": -32,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_22",
+        "id": -33,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_23",
+        "id": -34,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_24",
+        "id": -35,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_25",
+        "id": -36,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_26",
+        "id": -37,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_27",
+        "id": -38,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_28",
+        "id": -39,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_29",
+        "id": -40,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_3",
+        "id": -14,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_30",
+        "id": -41,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_31",
+        "id": -42,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_32",
+        "id": -43,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_33",
+        "id": -44,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_34",
+        "id": -45,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_35",
+        "id": -46,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_36",
+        "id": -47,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_37",
+        "id": -48,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_38",
+        "id": -49,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_39",
+        "id": -50,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_4",
+        "id": -15,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_40",
+        "id": -51,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_41",
+        "id": -52,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_42",
+        "id": -53,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_43",
+        "id": -54,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_44",
+        "id": -55,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_45",
+        "id": -56,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_46",
+        "id": -57,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_47",
+        "id": -58,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_48",
+        "id": -59,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_49",
+        "id": -60,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_5",
+        "id": -16,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_50",
+        "id": -61,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_51",
+        "id": -62,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_52",
+        "id": -63,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_53",
+        "id": -64,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_54",
+        "id": -65,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_55",
+        "id": -66,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_56",
+        "id": -67,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_57",
+        "id": -68,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_58",
+        "id": -69,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_59",
+        "id": -70,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_6",
+        "id": -17,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_60",
+        "id": -71,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_61",
+        "id": -72,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_62",
+        "id": -73,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_63",
+        "id": -74,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_64",
+        "id": -75,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_65",
+        "id": -76,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_66",
+        "id": -77,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_67",
+        "id": -78,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_68",
+        "id": -79,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_69",
+        "id": -80,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_7",
+        "id": -18,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_70",
+        "id": -81,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_71",
+        "id": -82,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_72",
+        "id": -83,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_73",
+        "id": -84,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_74",
+        "id": -85,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_75",
+        "id": -86,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_76",
+        "id": -87,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_77",
+        "id": -88,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_78",
+        "id": -89,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_79",
+        "id": -90,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_8",
+        "id": -19,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_80",
+        "id": -91,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_81",
+        "id": -92,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_82",
+        "id": -93,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_83",
+        "id": -94,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_84",
+        "id": -95,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_85",
+        "id": -96,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_86",
+        "id": -97,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_87",
+        "id": -98,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_88",
+        "id": -99,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_89",
+        "id": -100,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_9",
+        "id": -20,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_90",
+        "id": -101,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_91",
+        "id": -102,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_92",
+        "id": -103,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_93",
+        "id": -104,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_94",
+        "id": -105,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_95",
+        "id": -106,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_96",
+        "id": -107,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_97",
+        "id": -108,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_98",
+        "id": -109,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_99",
+        "id": -110,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:element_constructor",
+        "id": -987,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:elytra",
+        "id": 597,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:emerald",
+        "id": 546,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:emerald_block",
+        "id": 133,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:emerald_ore",
+        "id": 129,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:empty_map",
+        "id": 549,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:enchanted_book",
+        "id": 554,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:enchanted_golden_apple",
+        "id": 281,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:enchanting_table",
+        "id": 116,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_brick_stairs",
+        "id": -178,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_bricks",
+        "id": 206,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_crystal",
+        "id": 795,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_gateway",
+        "id": 209,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_portal",
+        "id": 119,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_portal_frame",
+        "id": 120,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_rod",
+        "id": 208,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_stone",
+        "id": 121,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_stone_brick_double_slab",
+        "id": -167,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_stone_brick_slab",
+        "id": -162,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:end_stone_brick_wall",
+        "id": -980,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ender_chest",
+        "id": 130,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ender_dragon_spawn_egg",
+        "id": 535,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ender_eye",
+        "id": 460,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ender_pearl",
+        "id": 448,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:enderman_spawn_egg",
+        "id": 469,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:endermite_spawn_egg",
+        "id": 487,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:evoker_spawn_egg",
+        "id": 503,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:experience_bottle",
+        "id": 542,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:explorer_pottery_sherd",
+        "id": 700,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_chiseled_copper",
+        "id": -761,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_copper",
+        "id": -341,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_copper_bulb",
+        "id": -777,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_copper_door",
+        "id": -785,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_copper_grate",
+        "id": -769,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_copper_trapdoor",
+        "id": -793,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_cut_copper",
+        "id": -348,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_cut_copper_slab",
+        "id": -362,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_cut_copper_stairs",
+        "id": -355,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:exposed_double_cut_copper_slab",
+        "id": -369,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:eye_armor_trim_smithing_template",
+        "id": 723,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:farmland",
+        "id": 60,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:feather",
+        "id": 352,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fence",
+        "id": 752,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fence_gate",
+        "id": 107,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fermented_spider_eye",
+        "id": 455,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fern",
+        "id": -848,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:field_masoned_banner_pattern",
+        "id": 618,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:filled_map",
+        "id": 446,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fire",
+        "id": 51,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fire_charge",
+        "id": 543,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fire_coral",
+        "id": -583,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fire_coral_block",
+        "id": -851,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fire_coral_fan",
+        "id": -842,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fire_coral_wall_fan",
+        "id": -907,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:firework_rocket",
+        "id": 552,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:firework_star",
+        "id": 553,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fishing_rod",
+        "id": 418,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:fletching_table",
+        "id": -201,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flint",
+        "id": 381,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flint_and_steel",
+        "id": 323,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flow_armor_trim_smithing_template",
+        "id": 734,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flow_banner_pattern",
+        "id": 622,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flow_pottery_sherd",
+        "id": 701,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flower_banner_pattern",
+        "id": 614,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flower_pot",
+        "id": 548,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:flowering_azalea",
+        "id": -338,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flowing_lava",
+        "id": 10,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:flowing_water",
+        "id": 8,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:fox_spawn_egg",
+        "id": 518,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:frame",
+        "id": 547,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:friend_pottery_sherd",
+        "id": 702,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:frog_spawn",
+        "id": -468,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:frog_spawn_egg",
+        "id": 665,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:frosted_ice",
+        "id": 207,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:furnace",
+        "id": 61,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ghast_spawn_egg",
+        "id": 481,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ghast_tear",
+        "id": 451,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gilded_blackstone",
+        "id": -281,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glass",
+        "id": 20,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glass_bottle",
+        "id": 454,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glass_pane",
+        "id": 102,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glistering_melon_slice",
+        "id": 461,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:globe_banner_pattern",
+        "id": 621,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glow_berries",
+        "id": 796,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glow_frame",
+        "id": 660,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:glow_ink_sac",
+        "id": 537,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glow_lichen",
+        "id": -411,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glow_squid_spawn_egg",
+        "id": 532,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glow_stick",
+        "id": 638,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glowingobsidian",
+        "id": 246,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glowstone",
+        "id": 89,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:glowstone_dust",
+        "id": 420,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:goat_horn",
+        "id": 664,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:goat_spawn_egg",
+        "id": 531,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gold_block",
+        "id": 41,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gold_ingot",
+        "id": 330,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gold_nugget",
+        "id": 452,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gold_ore",
+        "id": 14,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_apple",
+        "id": 280,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_axe",
+        "id": 350,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_boots",
+        "id": 379,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_carrot",
+        "id": 305,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_chestplate",
+        "id": 377,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_helmet",
+        "id": 376,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_hoe",
+        "id": 358,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_horse_armor",
+        "id": 565,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_leggings",
+        "id": 378,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_pickaxe",
+        "id": 349,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_rail",
+        "id": 27,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_shovel",
+        "id": 348,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:golden_sword",
+        "id": 347,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:granite",
+        "id": -590,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:granite_double_slab",
+        "id": -923,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:granite_slab",
+        "id": -896,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:granite_stairs",
+        "id": -169,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:granite_wall",
+        "id": -972,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:grass_block",
+        "id": 2,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:grass_path",
+        "id": 198,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gravel",
+        "id": 13,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_bundle",
+        "id": 262,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:gray_candle",
+        "id": -420,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_candle_cake",
+        "id": -437,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_carpet",
+        "id": -603,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_concrete",
+        "id": -634,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_concrete_powder",
+        "id": -715,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_dye",
+        "id": 429,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_glazed_terracotta",
+        "id": 227,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_shulker_box",
+        "id": -619,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_stained_glass",
+        "id": -679,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_stained_glass_pane",
+        "id": -649,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_terracotta",
+        "id": -730,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gray_wool",
+        "id": -553,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_bundle",
+        "id": 263,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:green_candle",
+        "id": -426,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_candle_cake",
+        "id": -443,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_carpet",
+        "id": -609,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_concrete",
+        "id": -640,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_concrete_powder",
+        "id": -721,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_dye",
+        "id": 423,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_glazed_terracotta",
+        "id": 233,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_shulker_box",
+        "id": -625,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_stained_glass",
+        "id": -685,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_stained_glass_pane",
+        "id": -655,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_terracotta",
+        "id": -736,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:green_wool",
+        "id": -560,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:grindstone",
+        "id": -195,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:guardian_spawn_egg",
+        "id": 488,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:gunpowder",
+        "id": 353,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:guster_banner_pattern",
+        "id": 623,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:guster_pottery_sherd",
+        "id": 703,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hanging_roots",
+        "id": -319,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_black_stained_glass",
+        "id": -702,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_black_stained_glass_pane",
+        "id": -672,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_blue_stained_glass",
+        "id": -698,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_blue_stained_glass_pane",
+        "id": -668,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_brown_stained_glass",
+        "id": -699,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_brown_stained_glass_pane",
+        "id": -669,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_cyan_stained_glass",
+        "id": -696,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_cyan_stained_glass_pane",
+        "id": -666,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_glass",
+        "id": 253,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_glass_pane",
+        "id": 190,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_gray_stained_glass",
+        "id": -694,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_gray_stained_glass_pane",
+        "id": -664,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_green_stained_glass",
+        "id": -700,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_green_stained_glass_pane",
+        "id": -670,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_light_blue_stained_glass",
+        "id": -690,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_light_blue_stained_glass_pane",
+        "id": -660,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_light_gray_stained_glass",
+        "id": -695,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_light_gray_stained_glass_pane",
+        "id": -665,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_lime_stained_glass",
+        "id": -692,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_lime_stained_glass_pane",
+        "id": -662,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_magenta_stained_glass",
+        "id": -689,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_magenta_stained_glass_pane",
+        "id": -659,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_orange_stained_glass",
+        "id": -688,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_orange_stained_glass_pane",
+        "id": -658,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_pink_stained_glass",
+        "id": -693,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_pink_stained_glass_pane",
+        "id": -663,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_purple_stained_glass",
+        "id": -697,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_purple_stained_glass_pane",
+        "id": -667,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_red_stained_glass",
+        "id": -701,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_red_stained_glass_pane",
+        "id": -671,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_stained_glass",
+        "id": 786,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_stained_glass_pane",
+        "id": 787,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_white_stained_glass",
+        "id": 254,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_white_stained_glass_pane",
+        "id": 191,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_yellow_stained_glass",
+        "id": -691,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hard_yellow_stained_glass_pane",
+        "id": -661,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hardened_clay",
+        "id": 172,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hay_block",
+        "id": 170,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:heart_of_the_sea",
+        "id": 604,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:heart_pottery_sherd",
+        "id": 704,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:heartbreak_pottery_sherd",
+        "id": 705,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:heavy_core",
+        "id": -316,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:heavy_weighted_pressure_plate",
+        "id": 148,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hoglin_spawn_egg",
+        "id": 524,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:honey_block",
+        "id": -220,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:honey_bottle",
+        "id": 627,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:honeycomb",
+        "id": 626,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:honeycomb_block",
+        "id": -221,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:hopper",
+        "id": 560,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:hopper_minecart",
+        "id": 559,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:horn_coral",
+        "id": -584,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:horn_coral_block",
+        "id": -852,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:horn_coral_fan",
+        "id": -843,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:horn_coral_wall_fan",
+        "id": -137,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:horse_spawn_egg",
+        "id": 485,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:host_armor_trim_smithing_template",
+        "id": 733,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:howl_pottery_sherd",
+        "id": 706,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:husk_spawn_egg",
+        "id": 491,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ice",
+        "id": 79,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ice_bomb",
+        "id": 632,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_chiseled_stone_bricks",
+        "id": -862,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_cobblestone",
+        "id": -858,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_cracked_stone_bricks",
+        "id": -861,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_deepslate",
+        "id": -454,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_mossy_stone_bricks",
+        "id": -860,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_stone",
+        "id": 97,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:infested_stone_bricks",
+        "id": -859,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:info_update",
+        "id": 248,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:info_update2",
+        "id": 249,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ink_sac",
+        "id": 439,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:invisible_bedrock",
+        "id": 95,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_axe",
+        "id": 322,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_bars",
+        "id": 101,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_block",
+        "id": 42,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_boots",
+        "id": 371,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_chestplate",
+        "id": 369,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_door",
+        "id": 397,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_golem_spawn_egg",
+        "id": 533,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_helmet",
+        "id": 368,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_hoe",
+        "id": 356,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_horse_armor",
+        "id": 564,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_ingot",
+        "id": 329,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_leggings",
+        "id": 370,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_nugget",
+        "id": 602,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_ore",
+        "id": 15,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_pickaxe",
+        "id": 321,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_shovel",
+        "id": 320,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_sword",
+        "id": 331,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:iron_trapdoor",
+        "id": 167,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.acacia_door",
+        "id": 196,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.bed",
+        "id": 26,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.beetroot",
+        "id": 244,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.birch_door",
+        "id": 194,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.brewing_stand",
+        "id": 117,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.cake",
+        "id": 92,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.camera",
+        "id": 242,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.campfire",
+        "id": -209,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.cauldron",
+        "id": 118,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.chain",
+        "id": -286,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.crimson_door",
+        "id": -244,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.dark_oak_door",
+        "id": 197,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.flower_pot",
+        "id": 140,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.frame",
+        "id": 199,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.glow_frame",
+        "id": -339,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.hopper",
+        "id": 154,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.iron_door",
+        "id": 71,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.jungle_door",
+        "id": 195,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.kelp",
+        "id": -138,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.mangrove_door",
+        "id": -493,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.nether_sprouts",
+        "id": -238,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.nether_wart",
+        "id": 115,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.reeds",
+        "id": 83,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.soul_campfire",
+        "id": -290,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.spruce_door",
+        "id": 193,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.warped_door",
+        "id": -245,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.wheat",
+        "id": 59,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:item.wooden_door",
+        "id": 64,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jigsaw",
+        "id": -211,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jukebox",
+        "id": 84,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_boat",
+        "id": 403,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_button",
+        "id": -143,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_chest_boat",
+        "id": 677,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_door",
+        "id": 588,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_double_slab",
+        "id": -811,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_fence",
+        "id": -578,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_fence_gate",
+        "id": 185,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_hanging_sign",
+        "id": -503,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_leaves",
+        "id": -802,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_log",
+        "id": -571,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_planks",
+        "id": -741,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_pressure_plate",
+        "id": -153,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_sapling",
+        "id": -827,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_sign",
+        "id": 611,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_slab",
+        "id": -806,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_stairs",
+        "id": 136,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_standing_sign",
+        "id": -188,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_trapdoor",
+        "id": -148,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_wall_sign",
+        "id": -189,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:jungle_wood",
+        "id": -816,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:kelp",
+        "id": 408,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:lab_table",
+        "id": -988,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ladder",
+        "id": 65,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lantern",
+        "id": -208,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lapis_block",
+        "id": 22,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lapis_lazuli",
+        "id": 440,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lapis_ore",
+        "id": 21,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:large_amethyst_bud",
+        "id": -330,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:large_fern",
+        "id": -865,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lava",
+        "id": 11,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lava_bucket",
+        "id": 388,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lead",
+        "id": 580,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leather",
+        "id": 407,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leather_boots",
+        "id": 363,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leather_chestplate",
+        "id": 361,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leather_helmet",
+        "id": 360,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leather_horse_armor",
+        "id": 563,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leather_leggings",
+        "id": 362,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leaves",
+        "id": 766,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:leaves2",
+        "id": 767,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lectern",
+        "id": -194,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lever",
+        "id": 69,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block",
+        "id": 790,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_0",
+        "id": -215,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_1",
+        "id": -929,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_10",
+        "id": -938,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_11",
+        "id": -939,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_12",
+        "id": -940,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_13",
+        "id": -941,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_14",
+        "id": -942,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_15",
+        "id": -943,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_2",
+        "id": -930,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_3",
+        "id": -931,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_4",
+        "id": -932,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_5",
+        "id": -933,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_6",
+        "id": -934,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_7",
+        "id": -935,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_8",
+        "id": -936,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_block_9",
+        "id": -937,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_bundle",
+        "id": 264,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:light_blue_candle",
+        "id": -416,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_candle_cake",
+        "id": -433,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_carpet",
+        "id": -599,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_concrete",
+        "id": -630,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_concrete_powder",
+        "id": -711,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_dye",
+        "id": 433,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_glazed_terracotta",
+        "id": 223,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_shulker_box",
+        "id": -615,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_stained_glass",
+        "id": -675,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_stained_glass_pane",
+        "id": -645,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_terracotta",
+        "id": -726,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_blue_wool",
+        "id": -562,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_bundle",
+        "id": 265,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:light_gray_candle",
+        "id": -421,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_candle_cake",
+        "id": -438,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_carpet",
+        "id": -604,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_concrete",
+        "id": -635,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_concrete_powder",
+        "id": -716,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_dye",
+        "id": 428,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_shulker_box",
+        "id": -620,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_stained_glass",
+        "id": -680,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_stained_glass_pane",
+        "id": -650,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_terracotta",
+        "id": -731,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_gray_wool",
+        "id": -552,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:light_weighted_pressure_plate",
+        "id": 147,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lightning_rod",
+        "id": -312,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lilac",
+        "id": -863,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lily_of_the_valley",
+        "id": -839,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_bundle",
+        "id": 266,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:lime_candle",
+        "id": -418,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_candle_cake",
+        "id": -435,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_carpet",
+        "id": -601,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_concrete",
+        "id": -632,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_concrete_powder",
+        "id": -713,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_dye",
+        "id": 431,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_glazed_terracotta",
+        "id": 225,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_shulker_box",
+        "id": -617,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_stained_glass",
+        "id": -677,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_stained_glass_pane",
+        "id": -647,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_terracotta",
+        "id": -728,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lime_wool",
+        "id": -559,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lingering_potion",
+        "id": 595,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_blast_furnace",
+        "id": -214,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_deepslate_redstone_ore",
+        "id": -404,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_furnace",
+        "id": 62,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_pumpkin",
+        "id": 91,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_redstone_lamp",
+        "id": 124,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_redstone_ore",
+        "id": 74,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lit_smoker",
+        "id": -199,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:llama_spawn_egg",
+        "id": 501,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lodestone",
+        "id": -222,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:lodestone_compass",
+        "id": 639,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:log",
+        "id": 751,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:log2",
+        "id": 774,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:loom",
+        "id": -204,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mace",
+        "id": 344,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_bundle",
+        "id": 267,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:magenta_candle",
+        "id": -415,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_candle_cake",
+        "id": -432,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_carpet",
+        "id": -598,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_concrete",
+        "id": -629,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_concrete_powder",
+        "id": -710,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_dye",
+        "id": 434,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_glazed_terracotta",
+        "id": 222,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_shulker_box",
+        "id": -614,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_stained_glass",
+        "id": -674,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_stained_glass_pane",
+        "id": -644,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_terracotta",
+        "id": -725,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magenta_wool",
+        "id": -565,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magma",
+        "id": 213,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magma_cream",
+        "id": 457,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:magma_cube_spawn_egg",
+        "id": 482,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_boat",
+        "id": 672,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_button",
+        "id": -487,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_chest_boat",
+        "id": 681,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_door",
+        "id": 670,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_double_slab",
+        "id": -499,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_fence",
+        "id": -491,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_fence_gate",
+        "id": -492,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_hanging_sign",
+        "id": -508,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_leaves",
+        "id": -472,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_log",
+        "id": -484,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_planks",
+        "id": -486,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_pressure_plate",
+        "id": -490,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_propagule",
+        "id": -474,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_roots",
+        "id": -482,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_sign",
+        "id": 671,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_slab",
+        "id": -489,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_stairs",
+        "id": -488,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_standing_sign",
+        "id": -494,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_trapdoor",
+        "id": -496,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_wall_sign",
+        "id": -495,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mangrove_wood",
+        "id": -497,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:material_reducer",
+        "id": -986,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:medicine",
+        "id": 636,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:medium_amethyst_bud",
+        "id": -331,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:melon_block",
+        "id": 103,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:melon_seeds",
+        "id": 315,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:melon_slice",
+        "id": 294,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:melon_stem",
+        "id": 105,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:milk_bucket",
+        "id": 386,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:minecart",
+        "id": 395,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:miner_pottery_sherd",
+        "id": 707,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mob_spawner",
+        "id": 52,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mojang_banner_pattern",
+        "id": 617,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:monster_egg",
+        "id": 775,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mooshroom_spawn_egg",
+        "id": 467,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:moss_block",
+        "id": -320,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:moss_carpet",
+        "id": -335,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_cobblestone",
+        "id": 48,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_double_slab",
+        "id": -915,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_slab",
+        "id": -888,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_stairs",
+        "id": -179,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_cobblestone_wall",
+        "id": -971,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_double_slab",
+        "id": -168,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_slab",
+        "id": -166,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_stairs",
+        "id": -175,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_stone_brick_wall",
+        "id": -978,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mossy_stone_bricks",
+        "id": -868,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mourner_pottery_sherd",
+        "id": 708,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:moving_block",
+        "id": 250,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mud",
+        "id": -473,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mud_brick_double_slab",
+        "id": -479,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mud_brick_slab",
+        "id": -478,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mud_brick_stairs",
+        "id": -480,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mud_brick_wall",
+        "id": -481,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mud_bricks",
+        "id": -475,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:muddy_mangrove_roots",
+        "id": -483,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mule_spawn_egg",
+        "id": 494,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mushroom_stem",
+        "id": -1008,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mushroom_stew",
+        "id": 282,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:music_disc_11",
+        "id": 577,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_13",
+        "id": 567,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_5",
+        "id": 673,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_blocks",
+        "id": 569,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_cat",
+        "id": 568,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_chirp",
+        "id": 570,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_creator",
+        "id": 782,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_creator_music_box",
+        "id": 783,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_far",
+        "id": 571,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_mall",
+        "id": 572,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_mellohi",
+        "id": 573,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_otherside",
+        "id": 663,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_pigstep",
+        "id": 657,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_precipice",
+        "id": 784,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_relic",
+        "id": 736,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_stal",
+        "id": 574,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_strad",
+        "id": 575,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_wait",
+        "id": 578,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:music_disc_ward",
+        "id": 576,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:mutton",
+        "id": 583,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:mycelium",
+        "id": 110,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:name_tag",
+        "id": 581,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nautilus_shell",
+        "id": 603,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_brick",
+        "id": 112,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_brick_double_slab",
+        "id": -883,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_brick_fence",
+        "id": 113,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_brick_slab",
+        "id": -877,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_brick_stairs",
+        "id": 114,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_brick_wall",
+        "id": -979,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_gold_ore",
+        "id": -288,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_sprouts",
+        "id": 658,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:nether_star",
+        "id": 551,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_wart",
+        "id": 316,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:nether_wart_block",
+        "id": 214,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherbrick",
+        "id": 556,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_axe",
+        "id": 643,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_block",
+        "id": -270,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_boots",
+        "id": 649,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_chestplate",
+        "id": 647,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_helmet",
+        "id": 646,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_hoe",
+        "id": 644,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_ingot",
+        "id": 645,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_leggings",
+        "id": 648,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_pickaxe",
+        "id": 642,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_scrap",
+        "id": 650,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_shovel",
+        "id": 641,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_sword",
+        "id": 640,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherite_upgrade_smithing_template",
+        "id": 717,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherrack",
+        "id": 87,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:netherreactor",
+        "id": 247,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:normal_stone_double_slab",
+        "id": -926,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:normal_stone_slab",
+        "id": -899,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:normal_stone_stairs",
+        "id": -180,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:noteblock",
+        "id": 25,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:npc_spawn_egg",
+        "id": 498,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_boat",
+        "id": 401,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_chest_boat",
+        "id": 675,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_double_slab",
+        "id": 157,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_fence",
+        "id": 85,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_hanging_sign",
+        "id": -500,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_leaves",
+        "id": 18,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_log",
+        "id": 17,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_planks",
+        "id": 5,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_sapling",
+        "id": 6,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_sign",
+        "id": 383,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_slab",
+        "id": 158,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_stairs",
+        "id": 53,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oak_wood",
+        "id": -212,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:observer",
+        "id": 251,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:obsidian",
+        "id": 49,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ocelot_spawn_egg",
+        "id": 478,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ochre_froglight",
+        "id": -471,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ominous_bottle",
+        "id": 628,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ominous_trial_key",
+        "id": 275,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:open_eyeblossom",
+        "id": -1018,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_bundle",
+        "id": 268,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:orange_candle",
+        "id": -414,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_candle_cake",
+        "id": -431,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_carpet",
+        "id": -597,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_concrete",
+        "id": -628,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_concrete_powder",
+        "id": -709,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_dye",
+        "id": 435,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_glazed_terracotta",
+        "id": 221,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_shulker_box",
+        "id": -613,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_stained_glass",
+        "id": -673,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_stained_glass_pane",
+        "id": -643,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_terracotta",
+        "id": -724,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_tulip",
+        "id": -834,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:orange_wool",
+        "id": -557,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxeye_daisy",
+        "id": -837,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_chiseled_copper",
+        "id": -763,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_copper",
+        "id": -343,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_copper_bulb",
+        "id": -779,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_copper_door",
+        "id": -787,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_copper_grate",
+        "id": -771,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_copper_trapdoor",
+        "id": -795,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_cut_copper",
+        "id": -350,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_cut_copper_slab",
+        "id": -364,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_cut_copper_stairs",
+        "id": -357,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:oxidized_double_cut_copper_slab",
+        "id": -371,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:packed_ice",
+        "id": 174,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:packed_mud",
+        "id": -477,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:painting",
+        "id": 382,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_hanging_moss",
+        "id": -1011,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_moss_block",
+        "id": -1009,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_moss_carpet",
+        "id": -1010,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_boat",
+        "id": 744,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_button",
+        "id": -989,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_chest_boat",
+        "id": 745,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_door",
+        "id": -990,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_double_slab",
+        "id": -999,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_fence",
+        "id": -991,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_fence_gate",
+        "id": -992,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_hanging_sign",
+        "id": -993,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_leaves",
+        "id": -1007,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_log",
+        "id": -995,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_planks",
+        "id": -996,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_pressure_plate",
+        "id": -997,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_sapling",
+        "id": -1006,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_sign",
+        "id": 746,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_slab",
+        "id": -998,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_stairs",
+        "id": -1000,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_standing_sign",
+        "id": -1001,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_trapdoor",
+        "id": -1002,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_wall_sign",
+        "id": -1003,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pale_oak_wood",
+        "id": -1005,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:panda_spawn_egg",
+        "id": 517,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:paper",
+        "id": 412,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:parrot_spawn_egg",
+        "id": 506,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pearlescent_froglight",
+        "id": -469,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:peony",
+        "id": -867,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:petrified_oak_double_slab",
+        "id": -903,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:petrified_oak_slab",
+        "id": -902,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:phantom_membrane",
+        "id": 607,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:phantom_spawn_egg",
+        "id": 514,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pig_spawn_egg",
+        "id": 464,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:piglin_banner_pattern",
+        "id": 620,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:piglin_brute_spawn_egg",
+        "id": 527,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:piglin_head",
+        "id": -970,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:piglin_spawn_egg",
+        "id": 525,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pillager_spawn_egg",
+        "id": 519,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_bundle",
+        "id": 269,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:pink_candle",
+        "id": -419,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_candle_cake",
+        "id": -436,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_carpet",
+        "id": -602,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_concrete",
+        "id": -633,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_concrete_powder",
+        "id": -714,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_dye",
+        "id": 430,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_glazed_terracotta",
+        "id": 226,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_petals",
+        "id": -549,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_shulker_box",
+        "id": -618,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_stained_glass",
+        "id": -678,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_stained_glass_pane",
+        "id": -648,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_terracotta",
+        "id": -729,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_tulip",
+        "id": -836,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pink_wool",
+        "id": -566,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:piston",
+        "id": 33,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:piston_arm_collision",
+        "id": 34,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pitcher_crop",
+        "id": -574,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pitcher_plant",
+        "id": -612,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pitcher_pod",
+        "id": 319,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:planks",
+        "id": 771,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:player_head",
+        "id": -967,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:plenty_pottery_sherd",
+        "id": 709,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:podzol",
+        "id": 243,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pointed_dripstone",
+        "id": -308,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:poisonous_potato",
+        "id": 304,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polar_bear_spawn_egg",
+        "id": 500,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_andesite",
+        "id": -595,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_andesite_double_slab",
+        "id": -919,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_andesite_slab",
+        "id": -892,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_andesite_stairs",
+        "id": -174,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_basalt",
+        "id": -235,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone",
+        "id": -291,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_double_slab",
+        "id": -285,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_slab",
+        "id": -284,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_stairs",
+        "id": -275,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_brick_wall",
+        "id": -278,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_bricks",
+        "id": -274,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_button",
+        "id": -296,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_double_slab",
+        "id": -294,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_pressure_plate",
+        "id": -295,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_slab",
+        "id": -293,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_stairs",
+        "id": -292,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_blackstone_wall",
+        "id": -297,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_deepslate",
+        "id": -383,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_deepslate_double_slab",
+        "id": -397,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_deepslate_slab",
+        "id": -384,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_deepslate_stairs",
+        "id": -385,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_deepslate_wall",
+        "id": -386,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_diorite",
+        "id": -593,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_diorite_double_slab",
+        "id": -922,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_diorite_slab",
+        "id": -895,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_diorite_stairs",
+        "id": -173,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_granite",
+        "id": -591,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_granite_double_slab",
+        "id": -924,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_granite_slab",
+        "id": -897,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_granite_stairs",
+        "id": -172,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_tuff",
+        "id": -748,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_tuff_double_slab",
+        "id": -750,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_tuff_slab",
+        "id": -749,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_tuff_stairs",
+        "id": -751,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:polished_tuff_wall",
+        "id": -752,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:popped_chorus_fruit",
+        "id": 592,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:poppy",
+        "id": 38,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:porkchop",
+        "id": 284,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:portal",
+        "id": 90,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:potato",
+        "id": 302,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:potatoes",
+        "id": 142,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:potion",
+        "id": 453,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:powder_snow",
+        "id": -306,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:powder_snow_bucket",
+        "id": 393,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:powered_comparator",
+        "id": 150,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:powered_repeater",
+        "id": 94,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine",
+        "id": 168,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_brick_double_slab",
+        "id": -914,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_brick_slab",
+        "id": -887,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_bricks",
+        "id": -948,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_bricks_stairs",
+        "id": -4,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_crystals",
+        "id": 582,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_double_slab",
+        "id": -912,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_shard",
+        "id": 598,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_slab",
+        "id": -885,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_stairs",
+        "id": -2,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prismarine_wall",
+        "id": -981,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:prize_pottery_sherd",
+        "id": 710,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pufferfish",
+        "id": 289,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pufferfish_bucket",
+        "id": 392,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pufferfish_spawn_egg",
+        "id": 509,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pumpkin",
+        "id": 86,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pumpkin_pie",
+        "id": 306,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pumpkin_seeds",
+        "id": 314,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:pumpkin_stem",
+        "id": 104,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_bundle",
+        "id": 270,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:purple_candle",
+        "id": -423,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_candle_cake",
+        "id": -440,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_carpet",
+        "id": -606,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_concrete",
+        "id": -637,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_concrete_powder",
+        "id": -718,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_dye",
+        "id": 426,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_glazed_terracotta",
+        "id": 219,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_shulker_box",
+        "id": -622,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_stained_glass",
+        "id": -682,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_stained_glass_pane",
+        "id": -652,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_terracotta",
+        "id": -733,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purple_wool",
+        "id": -564,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purpur_block",
+        "id": 201,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purpur_double_slab",
+        "id": -911,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purpur_pillar",
+        "id": -951,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purpur_slab",
+        "id": -884,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:purpur_stairs",
+        "id": 203,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz",
+        "id": 557,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_block",
+        "id": 155,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_bricks",
+        "id": -304,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_double_slab",
+        "id": -882,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_ore",
+        "id": 153,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_pillar",
+        "id": -954,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_slab",
+        "id": -876,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:quartz_stairs",
+        "id": 156,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rabbit",
+        "id": 310,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rabbit_foot",
+        "id": 561,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rabbit_hide",
+        "id": 562,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rabbit_spawn_egg",
+        "id": 486,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rabbit_stew",
+        "id": 312,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rail",
+        "id": 66,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raiser_armor_trim_smithing_template",
+        "id": 731,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rapid_fertilizer",
+        "id": 634,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ravager_spawn_egg",
+        "id": 521,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raw_copper",
+        "id": 541,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raw_copper_block",
+        "id": -452,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raw_gold",
+        "id": 540,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raw_gold_block",
+        "id": -453,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raw_iron",
+        "id": 539,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:raw_iron_block",
+        "id": -451,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:recovery_compass",
+        "id": 683,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_bundle",
+        "id": 271,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:red_candle",
+        "id": -427,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_candle_cake",
+        "id": -444,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_carpet",
+        "id": -610,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_concrete",
+        "id": -641,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_concrete_powder",
+        "id": -722,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_dye",
+        "id": 422,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_flower",
+        "id": 769,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_glazed_terracotta",
+        "id": 234,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_mushroom",
+        "id": 40,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_mushroom_block",
+        "id": 100,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_nether_brick",
+        "id": 215,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_nether_brick_double_slab",
+        "id": -917,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_nether_brick_slab",
+        "id": -890,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_nether_brick_stairs",
+        "id": -184,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_nether_brick_wall",
+        "id": -983,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_sand",
+        "id": -949,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_sandstone",
+        "id": 179,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_sandstone_double_slab",
+        "id": 181,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_sandstone_slab",
+        "id": 182,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_sandstone_stairs",
+        "id": 180,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_sandstone_wall",
+        "id": -982,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_shulker_box",
+        "id": -626,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_stained_glass",
+        "id": -686,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_stained_glass_pane",
+        "id": -656,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_terracotta",
+        "id": -737,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_tulip",
+        "id": -833,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:red_wool",
+        "id": -556,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:redstone",
+        "id": 398,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:redstone_block",
+        "id": 152,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:redstone_lamp",
+        "id": 123,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:redstone_ore",
+        "id": 73,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:redstone_torch",
+        "id": 76,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:redstone_wire",
+        "id": 55,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:reinforced_deepslate",
+        "id": -466,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:repeater",
+        "id": 445,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:repeating_command_block",
+        "id": 188,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:reserved6",
+        "id": 255,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_block",
+        "id": -1021,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_brick",
+        "id": 748,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_brick_double_slab",
+        "id": -1015,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_brick_slab",
+        "id": -1014,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_brick_stairs",
+        "id": -1016,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_brick_wall",
+        "id": -1017,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_bricks",
+        "id": -1013,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:resin_clump",
+        "id": -1022,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:respawn_anchor",
+        "id": -272,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rib_armor_trim_smithing_template",
+        "id": 727,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rose_bush",
+        "id": -866,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:rotten_flesh",
+        "id": 299,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:saddle",
+        "id": 396,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:salmon",
+        "id": 287,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:salmon_bucket",
+        "id": 390,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:salmon_spawn_egg",
+        "id": 510,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sand",
+        "id": 12,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sandstone",
+        "id": 24,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sandstone_double_slab",
+        "id": -878,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sandstone_slab",
+        "id": -872,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sandstone_stairs",
+        "id": 128,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sandstone_wall",
+        "id": -975,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sapling",
+        "id": 765,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:scaffolding",
+        "id": -165,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:scrape_pottery_sherd",
+        "id": 711,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sculk",
+        "id": -458,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sculk_catalyst",
+        "id": -460,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sculk_sensor",
+        "id": -307,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sculk_shrieker",
+        "id": -461,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sculk_vein",
+        "id": -459,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sea_lantern",
+        "id": 169,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sea_pickle",
+        "id": -156,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:seagrass",
+        "id": -130,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sentry_armor_trim_smithing_template",
+        "id": 718,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shaper_armor_trim_smithing_template",
+        "id": 732,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sheaf_pottery_sherd",
+        "id": 712,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shears",
+        "id": 447,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sheep_spawn_egg",
+        "id": 465,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shelter_pottery_sherd",
+        "id": 713,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shield",
+        "id": 380,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:short_grass",
+        "id": 31,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shroomlight",
+        "id": -230,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shulker_box",
+        "id": 780,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shulker_shell",
+        "id": 599,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:shulker_spawn_egg",
+        "id": 497,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:silence_armor_trim_smithing_template",
+        "id": 729,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:silver_glazed_terracotta",
+        "id": 228,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:silverfish_spawn_egg",
+        "id": 470,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:skeleton_horse_spawn_egg",
+        "id": 495,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:skeleton_skull",
+        "id": 144,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:skeleton_spawn_egg",
+        "id": 471,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:skull",
+        "id": 737,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:skull_banner_pattern",
+        "id": 616,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:skull_pottery_sherd",
+        "id": 714,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:slime",
+        "id": 165,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:slime_ball",
+        "id": 414,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:slime_spawn_egg",
+        "id": 472,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:small_amethyst_bud",
+        "id": -332,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:small_dripleaf_block",
+        "id": -336,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smithing_table",
+        "id": -202,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smoker",
+        "id": -198,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_basalt",
+        "id": -377,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_quartz",
+        "id": -955,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_quartz_double_slab",
+        "id": -925,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_quartz_slab",
+        "id": -898,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_quartz_stairs",
+        "id": -185,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone",
+        "id": -958,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone_double_slab",
+        "id": -918,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone_slab",
+        "id": -891,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_red_sandstone_stairs",
+        "id": -176,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_sandstone",
+        "id": -946,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_sandstone_double_slab",
+        "id": -916,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_sandstone_slab",
+        "id": -889,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_sandstone_stairs",
+        "id": -177,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_stone",
+        "id": -183,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_stone_double_slab",
+        "id": 43,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:smooth_stone_slab",
+        "id": 44,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sniffer_egg",
+        "id": -596,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sniffer_spawn_egg",
+        "id": 528,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:snort_pottery_sherd",
+        "id": 715,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:snout_armor_trim_smithing_template",
+        "id": 726,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:snow",
+        "id": 80,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:snow_golem_spawn_egg",
+        "id": 534,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:snow_layer",
+        "id": 78,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:snowball",
+        "id": 399,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:soul_campfire",
+        "id": 659,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:soul_fire",
+        "id": -237,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:soul_lantern",
+        "id": -269,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:soul_sand",
+        "id": 88,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:soul_soil",
+        "id": -236,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:soul_torch",
+        "id": -268,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sparkler",
+        "id": 637,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spawn_egg",
+        "id": 794,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spider_eye",
+        "id": 300,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spider_spawn_egg",
+        "id": 473,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spire_armor_trim_smithing_template",
+        "id": 728,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:splash_potion",
+        "id": 594,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sponge",
+        "id": 19,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spore_blossom",
+        "id": -321,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_boat",
+        "id": 404,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_button",
+        "id": -144,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_chest_boat",
+        "id": 678,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_door",
+        "id": 586,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_double_slab",
+        "id": -809,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_fence",
+        "id": -579,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_fence_gate",
+        "id": 183,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_hanging_sign",
+        "id": -501,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_leaves",
+        "id": -800,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_log",
+        "id": -569,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_planks",
+        "id": -739,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_pressure_plate",
+        "id": -154,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_sapling",
+        "id": -825,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_sign",
+        "id": 609,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_slab",
+        "id": -804,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_stairs",
+        "id": 134,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_standing_sign",
+        "id": -181,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_trapdoor",
+        "id": -149,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_wall_sign",
+        "id": -182,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spruce_wood",
+        "id": -814,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:spyglass",
+        "id": 662,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:squid_spawn_egg",
+        "id": 477,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stained_glass",
+        "id": 778,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stained_glass_pane",
+        "id": 779,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stained_hardened_clay",
+        "id": 738,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:standing_banner",
+        "id": 176,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:standing_sign",
+        "id": 63,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stick",
+        "id": 345,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sticky_piston",
+        "id": 29,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sticky_piston_arm_collision",
+        "id": -217,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone",
+        "id": 1,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_axe",
+        "id": 339,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_block_slab",
+        "id": 755,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_block_slab2",
+        "id": 756,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_block_slab3",
+        "id": 757,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_block_slab4",
+        "id": 758,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_brick_double_slab",
+        "id": -881,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_brick_slab",
+        "id": -875,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_brick_stairs",
+        "id": 109,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_brick_wall",
+        "id": -977,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_bricks",
+        "id": 98,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_button",
+        "id": 77,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_hoe",
+        "id": 355,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_pickaxe",
+        "id": 338,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_pressure_plate",
+        "id": 70,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_shovel",
+        "id": 337,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_stairs",
+        "id": 67,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stone_sword",
+        "id": 336,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stonebrick",
+        "id": 753,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stonecutter",
+        "id": 245,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stonecutter_block",
+        "id": -197,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stray_spawn_egg",
+        "id": 489,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:strider_spawn_egg",
+        "id": 523,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:string",
+        "id": 351,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:stripped_acacia_log",
+        "id": -8,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_acacia_wood",
+        "id": -823,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_bamboo_block",
+        "id": -528,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_birch_log",
+        "id": -6,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_birch_wood",
+        "id": -821,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_cherry_log",
+        "id": -535,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_cherry_wood",
+        "id": -545,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_crimson_hyphae",
+        "id": -300,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_crimson_stem",
+        "id": -240,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_dark_oak_log",
+        "id": -9,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_dark_oak_wood",
+        "id": -824,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_jungle_log",
+        "id": -7,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_jungle_wood",
+        "id": -822,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_mangrove_log",
+        "id": -485,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_mangrove_wood",
+        "id": -498,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_oak_log",
+        "id": -10,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_oak_wood",
+        "id": -819,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_pale_oak_log",
+        "id": -994,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_pale_oak_wood",
+        "id": -1004,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_spruce_log",
+        "id": -5,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_spruce_wood",
+        "id": -820,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_warped_hyphae",
+        "id": -301,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:stripped_warped_stem",
+        "id": -241,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:structure_block",
+        "id": 252,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:structure_void",
+        "id": 217,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sugar",
+        "id": 442,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sugar_cane",
+        "id": 411,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:sunflower",
+        "id": 175,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:suspicious_gravel",
+        "id": -573,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:suspicious_sand",
+        "id": -529,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:suspicious_stew",
+        "id": 625,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sweet_berries",
+        "id": 309,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:sweet_berry_bush",
+        "id": -207,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tadpole_bucket",
+        "id": 667,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tadpole_spawn_egg",
+        "id": 666,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tall_grass",
+        "id": -864,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tallgrass",
+        "id": 773,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:target",
+        "id": -239,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tide_armor_trim_smithing_template",
+        "id": 725,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tinted_glass",
+        "id": -334,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tnt",
+        "id": 46,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tnt_minecart",
+        "id": 558,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:torch",
+        "id": 50,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:torchflower",
+        "id": -568,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:torchflower_crop",
+        "id": -567,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:torchflower_seeds",
+        "id": 318,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:totem_of_undying",
+        "id": 601,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:trader_llama_spawn_egg",
+        "id": 685,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:trapdoor",
+        "id": 96,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:trapped_chest",
+        "id": 146,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:trial_key",
+        "id": 276,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:trial_spawner",
+        "id": -315,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:trident",
+        "id": 579,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:trip_wire",
+        "id": 132,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tripwire_hook",
+        "id": 131,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tropical_fish",
+        "id": 288,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tropical_fish_bucket",
+        "id": 391,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tropical_fish_spawn_egg",
+        "id": 507,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tube_coral",
+        "id": -131,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tube_coral_block",
+        "id": -132,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tube_coral_fan",
+        "id": -133,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tube_coral_wall_fan",
+        "id": -135,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff",
+        "id": -333,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_brick_double_slab",
+        "id": -756,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_brick_slab",
+        "id": -755,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_brick_stairs",
+        "id": -757,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_brick_wall",
+        "id": -758,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_bricks",
+        "id": -754,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_double_slab",
+        "id": -745,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_slab",
+        "id": -744,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_stairs",
+        "id": -746,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:tuff_wall",
+        "id": -747,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:turtle_egg",
+        "id": -159,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:turtle_helmet",
+        "id": 606,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:turtle_scute",
+        "id": 605,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:turtle_spawn_egg",
+        "id": 513,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:twisting_vines",
+        "id": -287,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:underwater_tnt",
+        "id": -985,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:underwater_torch",
+        "id": 239,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:undyed_shulker_box",
+        "id": 205,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:unknown",
+        "id": -305,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:unlit_redstone_torch",
+        "id": 75,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:unpowered_comparator",
+        "id": 149,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:unpowered_repeater",
+        "id": 93,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:vault",
+        "id": -314,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:verdant_froglight",
+        "id": -470,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:vex_armor_trim_smithing_template",
+        "id": 724,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:vex_spawn_egg",
+        "id": 504,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:villager_spawn_egg",
+        "id": 476,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:vindicator_spawn_egg",
+        "id": 502,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:vine",
+        "id": 106,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wall_banner",
+        "id": 177,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wall_sign",
+        "id": 68,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wandering_trader_spawn_egg",
+        "id": 520,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:ward_armor_trim_smithing_template",
+        "id": 722,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warden_spawn_egg",
+        "id": 669,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_button",
+        "id": -261,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_door",
+        "id": 654,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_double_slab",
+        "id": -267,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_fence",
+        "id": -257,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_fence_gate",
+        "id": -259,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_fungus",
+        "id": -229,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_fungus_on_a_stick",
+        "id": 655,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:warped_hanging_sign",
+        "id": -507,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_hyphae",
+        "id": -298,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_nylium",
+        "id": -233,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_planks",
+        "id": -243,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_pressure_plate",
+        "id": -263,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_roots",
+        "id": -224,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_sign",
+        "id": 652,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_slab",
+        "id": -265,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_stairs",
+        "id": -255,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_standing_sign",
+        "id": -251,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_stem",
+        "id": -226,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_trapdoor",
+        "id": -247,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_wall_sign",
+        "id": -253,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:warped_wart_block",
+        "id": -227,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:water",
+        "id": 9,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:water_bucket",
+        "id": 387,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waterlily",
+        "id": 111,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_chiseled_copper",
+        "id": -764,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_copper",
+        "id": -344,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_copper_bulb",
+        "id": -780,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_copper_door",
+        "id": -788,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_copper_grate",
+        "id": -772,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_copper_trapdoor",
+        "id": -796,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_cut_copper",
+        "id": -351,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_cut_copper_slab",
+        "id": -365,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_cut_copper_stairs",
+        "id": -358,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_double_cut_copper_slab",
+        "id": -372,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_chiseled_copper",
+        "id": -765,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper",
+        "id": -345,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_bulb",
+        "id": -781,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_door",
+        "id": -789,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_grate",
+        "id": -773,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_copper_trapdoor",
+        "id": -797,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_cut_copper",
+        "id": -352,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_cut_copper_slab",
+        "id": -366,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_cut_copper_stairs",
+        "id": -359,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_exposed_double_cut_copper_slab",
+        "id": -373,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_chiseled_copper",
+        "id": -766,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper",
+        "id": -446,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_bulb",
+        "id": -783,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_door",
+        "id": -791,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_grate",
+        "id": -775,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_copper_trapdoor",
+        "id": -799,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_cut_copper",
+        "id": -447,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_cut_copper_slab",
+        "id": -449,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_cut_copper_stairs",
+        "id": -448,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_oxidized_double_cut_copper_slab",
+        "id": -450,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_chiseled_copper",
+        "id": -767,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper",
+        "id": -346,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_bulb",
+        "id": -782,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_door",
+        "id": -790,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_grate",
+        "id": -774,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_copper_trapdoor",
+        "id": -798,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_cut_copper",
+        "id": -353,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_cut_copper_slab",
+        "id": -367,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_cut_copper_stairs",
+        "id": -360,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:waxed_weathered_double_cut_copper_slab",
+        "id": -374,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wayfinder_armor_trim_smithing_template",
+        "id": 730,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_chiseled_copper",
+        "id": -762,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_copper",
+        "id": -342,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_copper_bulb",
+        "id": -778,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_copper_door",
+        "id": -786,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_copper_grate",
+        "id": -770,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_copper_trapdoor",
+        "id": -794,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_cut_copper",
+        "id": -349,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_cut_copper_slab",
+        "id": -363,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_cut_copper_stairs",
+        "id": -356,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weathered_double_cut_copper_slab",
+        "id": -370,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:web",
+        "id": 30,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:weeping_vines",
+        "id": -231,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wet_sponge",
+        "id": -984,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wheat",
+        "id": 359,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wheat_seeds",
+        "id": 313,
+        "version": 0,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_bundle",
+        "id": 272,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:white_candle",
+        "id": -413,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_candle_cake",
+        "id": -430,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_carpet",
+        "id": 171,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_concrete",
+        "id": 236,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_concrete_powder",
+        "id": 237,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_dye",
+        "id": 436,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_glazed_terracotta",
+        "id": 220,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_shulker_box",
+        "id": 218,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_stained_glass",
+        "id": 241,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_stained_glass_pane",
+        "id": 160,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_terracotta",
+        "id": 159,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_tulip",
+        "id": -835,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:white_wool",
+        "id": 35,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wild_armor_trim_smithing_template",
+        "id": 721,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wind_charge",
+        "id": 277,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:witch_spawn_egg",
+        "id": 479,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wither_rose",
+        "id": -216,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wither_skeleton_skull",
+        "id": -965,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wither_skeleton_spawn_egg",
+        "id": 492,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wither_spawn_egg",
+        "id": 536,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wolf_armor",
+        "id": 741,
+        "version": 2,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:wolf_spawn_egg",
+        "id": 466,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wood",
+        "id": 781,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_axe",
+        "id": 335,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_button",
+        "id": 143,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_door",
+        "id": 384,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_hoe",
+        "id": 354,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_pickaxe",
+        "id": 334,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_pressure_plate",
+        "id": 72,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_shovel",
+        "id": 333,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_slab",
+        "id": 768,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wooden_sword",
+        "id": 332,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:wool",
+        "id": 749,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:writable_book",
+        "id": 544,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:written_book",
+        "id": 545,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_bundle",
+        "id": 273,
+        "version": 1,
+        "componentBased": true
+    },
+    {
+        "name": "minecraft:yellow_candle",
+        "id": -417,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_candle_cake",
+        "id": -434,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_carpet",
+        "id": -600,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_concrete",
+        "id": -631,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_concrete_powder",
+        "id": -712,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_dye",
+        "id": 432,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_glazed_terracotta",
+        "id": 224,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_shulker_box",
+        "id": -616,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_stained_glass",
+        "id": -676,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_stained_glass_pane",
+        "id": -646,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_terracotta",
+        "id": -727,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:yellow_wool",
+        "id": -558,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:zoglin_spawn_egg",
+        "id": 526,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:zombie_head",
+        "id": -966,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:zombie_horse_spawn_egg",
+        "id": 496,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:zombie_pigman_spawn_egg",
+        "id": 475,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:zombie_spawn_egg",
+        "id": 474,
+        "version": 2,
+        "componentBased": false
+    },
+    {
+        "name": "minecraft:zombie_villager_spawn_egg",
+        "id": 505,
+        "version": 2,
+        "componentBased": false
+    }
+]
diff --git a/core/src/main/resources/languages b/core/src/main/resources/languages
index 7499daf71..61642604b 160000
--- a/core/src/main/resources/languages
+++ b/core/src/main/resources/languages
@@ -1 +1 @@
-Subproject commit 7499daf712ad6de70a07fba471b51b4ad92315c5
+Subproject commit 61642604b8af1673f714087837f0c4287bfdc492
diff --git a/core/src/main/resources/mappings b/core/src/main/resources/mappings
index 6808d0e16..2281e339f 160000
--- a/core/src/main/resources/mappings
+++ b/core/src/main/resources/mappings
@@ -1 +1 @@
-Subproject commit 6808d0e16a85e5e569d9d7f89ace59c73196c1f4
+Subproject commit 2281e339fc4aa11d606345f109bd96d4fc6781f8
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 2943521e0..4616ab96d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta5-20241213.160944-20"
-protocol-common = "3.0.0.Beta5-20241213.160944-20"
-protocol-codec = "3.0.0.Beta5-20241213.160944-20"
+protocol-connection = "3.0.0.Beta6-20250203.121006-1"
+protocol-common = "3.0.0.Beta6-20250203.121006-1"
+protocol-codec = "3.0.0.Beta6-20250203.121006-1"
 raknet = "1.0.0.CR3-20250128.101054-17"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.4-20250121.131208-18"

From 04586a453296de1dbf3b3f8c5241e0401a622d2c Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Tue, 11 Feb 2025 19:49:23 +0100
Subject: [PATCH 149/165] Update API version to 2.6.1

---
 gradle.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gradle.properties b/gradle.properties
index c380ec371..5557e53ca 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,5 +8,5 @@ org.gradle.vfs.watch=false
 
 group=org.geysermc
 id=geyser
-version=2.6.0-SNAPSHOT
+version=2.6.1-SNAPSHOT
 description=Allows for players from Minecraft: Bedrock Edition to join Minecraft: Java Edition servers.

From bb6ff4ddb9324978dd076a2f928f5910a5b853b9 Mon Sep 17 00:00:00 2001
From: valaphee <32491319+valaphee@users.noreply.github.com>
Date: Tue, 11 Feb 2025 23:47:51 +0100
Subject: [PATCH 150/165] Update boss event packet serializer in codec
 processor

---
 .../geyser/network/CodecProcessor.java        | 37 ++++++++++++-------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
index b3f3af5ff..f2ed792c7 100644
--- a/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
+++ b/core/src/main/java/org/geysermc/geyser/network/CodecProcessor.java
@@ -29,7 +29,6 @@ import io.netty.buffer.ByteBuf;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodec;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockCodecHelper;
 import org.cloudburstmc.protocol.bedrock.codec.BedrockPacketSerializer;
-import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MobArmorEquipmentSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MobEquipmentSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.MoveEntityAbsoluteSerializer_v291;
 import org.cloudburstmc.protocol.bedrock.codec.v291.serializer.PlayerHotbarSerializer_v291;
@@ -42,6 +41,7 @@ import org.cloudburstmc.protocol.bedrock.codec.v662.serializer.SetEntityMotionSe
 import org.cloudburstmc.protocol.bedrock.codec.v712.serializer.MobArmorEquipmentSerializer_v712;
 import org.cloudburstmc.protocol.bedrock.codec.v748.serializer.InventoryContentSerializer_v748;
 import org.cloudburstmc.protocol.bedrock.codec.v748.serializer.InventorySlotSerializer_v748;
+import org.cloudburstmc.protocol.bedrock.codec.v776.serializer.BossEventSerializer_v776;
 import org.cloudburstmc.protocol.bedrock.packet.AnvilDamagePacket;
 import org.cloudburstmc.protocol.bedrock.packet.BedrockPacket;
 import org.cloudburstmc.protocol.bedrock.packet.BossEventPacket;
@@ -87,6 +87,8 @@ import org.cloudburstmc.protocol.common.util.VarInts;
 
 /**
  * Processes the Bedrock codec to remove or modify unused or unsafe packets and fields.
+ *
+ * TODO: Keep serializers up-to-date!
  */
 @SuppressWarnings("deprecation")
 class CodecProcessor {
@@ -157,7 +159,16 @@ class CodecProcessor {
     /**
      * Serializer that does nothing when trying to deserialize BossEventPacket since it is not used from the client.
      */
-    private static final BedrockPacketSerializer<BossEventPacket> BOSS_EVENT_SERIALIZER = new BossEventSerializer_v486() {
+    private static final BedrockPacketSerializer<BossEventPacket> BOSS_EVENT_SERIALIZER_486 = new BossEventSerializer_v486() {
+        @Override
+        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, BossEventPacket packet) {
+        }
+    };
+
+    /**
+     * Serializer that does nothing when trying to deserialize BossEventPacket since it is not used from the client.
+     */
+    private static final BedrockPacketSerializer<BossEventPacket> BOSS_EVENT_SERIALIZER_776 = new BossEventSerializer_v776() {
         @Override
         public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, BossEventPacket packet) {
         }
@@ -166,16 +177,7 @@ class CodecProcessor {
     /**
      * Serializer that does nothing when trying to deserialize MobArmorEquipmentPacket since it is not used from the client.
      */
-    private static final BedrockPacketSerializer<MobArmorEquipmentPacket> MOB_ARMOR_EQUIPMENT_SERIALIZER_V291 = new MobArmorEquipmentSerializer_v291() {
-        @Override
-        public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, MobArmorEquipmentPacket packet) {
-        }
-    };
-
-    /**
-     * Serializer that does nothing when trying to deserialize MobArmorEquipmentPacket since it is not used from the client.
-     */
-    private static final BedrockPacketSerializer<MobArmorEquipmentPacket> MOB_ARMOR_EQUIPMENT_SERIALIZER_V712 = new MobArmorEquipmentSerializer_v712() {
+    private static final BedrockPacketSerializer<MobArmorEquipmentPacket> MOB_ARMOR_EQUIPMENT_SERIALIZER = new MobArmorEquipmentSerializer_v712() {
         @Override
         public void deserialize(ByteBuf buffer, BedrockCodecHelper helper, MobArmorEquipmentPacket packet) {
         }
@@ -242,6 +244,13 @@ class CodecProcessor {
 
     @SuppressWarnings("unchecked")
     static BedrockCodec processCodec(BedrockCodec codec) {
+        BedrockPacketSerializer<BossEventPacket> bossEventSerializer;
+        if (codec.getProtocolVersion() >= 776) {
+            bossEventSerializer = BOSS_EVENT_SERIALIZER_776;
+        } else {
+            bossEventSerializer = BOSS_EVENT_SERIALIZER_486;
+        }
+
         BedrockCodec.Builder codecBuilder = codec.toBuilder()
             // Illegal unused serverbound EDU packets
             .updateSerializer(PhotoTransferPacket.class, ILLEGAL_SERIALIZER)
@@ -276,8 +285,8 @@ class CodecProcessor {
             .updateSerializer(RiderJumpPacket.class, ILLEGAL_SERIALIZER)
             .updateSerializer(PlayerInputPacket.class, ILLEGAL_SERIALIZER)
             // Ignored only when serverbound
-            .updateSerializer(BossEventPacket.class, BOSS_EVENT_SERIALIZER)
-            .updateSerializer(MobArmorEquipmentPacket.class, MOB_ARMOR_EQUIPMENT_SERIALIZER_V712)
+            .updateSerializer(BossEventPacket.class, bossEventSerializer)
+            .updateSerializer(MobArmorEquipmentPacket.class, MOB_ARMOR_EQUIPMENT_SERIALIZER)
             .updateSerializer(PlayerHotbarPacket.class, PLAYER_HOTBAR_SERIALIZER)
             .updateSerializer(PlayerSkinPacket.class, PLAYER_SKIN_SERIALIZER)
             .updateSerializer(SetEntityDataPacket.class, SET_ENTITY_DATA_SERIALIZER)

From 6c59a821c97d91befd03e2868ccaedb061f87099 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 12 Feb 2025 14:57:26 +0100
Subject: [PATCH 151/165] Fix eating animations not showing

---
 .../CustomItemRegistryPopulator.java          |   5 +++--
 .../DataComponentRegistryPopulator.java       |   3 +++
 .../populator/ItemRegistryPopulator.java      |  19 +++++++++---------
 .../resources/bedrock/item_components.nbt     | Bin 12649 -> 14202 bytes
 gradle/libs.versions.toml                     |   6 +++---
 5 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
index cd19ab147..d1cec3231 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
@@ -33,6 +33,7 @@ import org.cloudburstmc.nbt.NbtMapBuilder;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemVersion;
 import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.api.item.custom.CustomItemData;
 import org.geysermc.geyser.api.item.custom.CustomRenderOffsets;
@@ -106,7 +107,7 @@ public class CustomItemRegistryPopulator {
 
     public static GeyserCustomMappingData registerCustomItem(String customItemName, Item javaItem, GeyserMappingItem mapping, CustomItemData customItemData, int bedrockId, int protocolVersion) {
         NbtMapBuilder builder = createComponentNbt(customItemData, javaItem, mapping, customItemName, bedrockId, protocolVersion);
-        ItemDefinition itemDefinition = new SimpleItemDefinition(customItemName, bedrockId, 1, true, builder.build());
+        ItemDefinition itemDefinition = new SimpleItemDefinition(customItemName, bedrockId, ItemVersion.DATA_DRIVEN, true, builder.build());
 
         return new GeyserCustomMappingData(itemDefinition, customItemName, bedrockId);
     }
@@ -143,7 +144,7 @@ public class CustomItemRegistryPopulator {
             customItemData.isHat(), customItemData.displayHandheld(), protocolVersion);
         ItemMapping customItemMapping = ItemMapping.builder()
                 .bedrockIdentifier(customIdentifier)
-                .bedrockDefinition(new SimpleItemDefinition(customIdentifier, customItemId, 1, true, builder.build()))
+                .bedrockDefinition(new SimpleItemDefinition(customIdentifier, customItemId, ItemVersion.DATA_DRIVEN, true, builder.build()))
                 .bedrockData(0)
                 .bedrockBlockDefinition(null)
                 .toolType(customItemData.toolType())
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
index 742564a39..829e8719e 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
@@ -48,6 +48,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+/**
+ * Loads default item components for all Java items.
+ */
 public final class DataComponentRegistryPopulator {
 
     public static void populate() {
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 6e269b5a3..08f3226f9 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -54,6 +54,7 @@ import org.cloudburstmc.protocol.bedrock.data.definitions.SimpleItemDefinition;
 import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemGroup;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
+import org.cloudburstmc.protocol.bedrock.data.inventory.ItemVersion;
 import org.geysermc.geyser.Constants;
 import org.geysermc.geyser.GeyserBootstrap;
 import org.geysermc.geyser.GeyserImpl;
@@ -212,15 +213,13 @@ public class ItemRegistryPopulator {
                     nextFreeBedrockId = id + 1;
                 }
 
-                NbtMap components = null;
-                if (entry.isComponentBased()) {
-                    components = vanillaComponents.getCompound(entry.getName());
-                    if (components == null) {
-                        throw new RuntimeException("Could not find vanilla components for vanilla component based item! " + entry.getName());
-                    }
+                // Some items, e.g. food, are not component based but still have components
+                NbtMap components = vanillaComponents.getCompound(entry.getName());
+                if (components == null && entry.isComponentBased()) {
+                    throw new RuntimeException("Could not find vanilla components for vanilla component based item! " + entry.getName());
                 }
 
-                ItemDefinition definition = new SimpleItemDefinition(entry.getName().intern(), id, entry.getVersion(), entry.isComponentBased(), components);
+                ItemDefinition definition = new SimpleItemDefinition(entry.getName().intern(), id, ItemVersion.from(entry.getVersion()), entry.isComponentBased(), components);
                 definitions.put(entry.getName(), definition);
                 registry.put(definition.getRuntimeId(), definition);
             }
@@ -453,7 +452,7 @@ public class ItemRegistryPopulator {
                                             int customProtocolId = nextFreeBedrockId++;
                                             mappingItem = mappingItem.withBedrockData(customProtocolId);
                                             bedrockIdentifier = customBlockData.identifier();
-                                            definition = new SimpleItemDefinition(bedrockIdentifier, customProtocolId, 1, false, null);
+                                            definition = new SimpleItemDefinition(bedrockIdentifier, customProtocolId, ItemVersion.DATA_DRIVEN, true, NbtMap.EMPTY);
                                             registry.put(customProtocolId, definition);
                                             customBlockItemDefinitions.put(customBlockData, definition);
                                             customIdMappings.put(customProtocolId, bedrockIdentifier);
@@ -593,7 +592,7 @@ public class ItemRegistryPopulator {
             if (customItemsAllowed) {
                 // Add furnace minecart
                 int furnaceMinecartId = nextFreeBedrockId++;
-                ItemDefinition definition = new SimpleItemDefinition("geysermc:furnace_minecart", furnaceMinecartId, 1, true, registerFurnaceMinecart(furnaceMinecartId));
+                ItemDefinition definition = new SimpleItemDefinition("geysermc:furnace_minecart", furnaceMinecartId, ItemVersion.DATA_DRIVEN, true, registerFurnaceMinecart(furnaceMinecartId));
                 definitions.put("geysermc:furnace_minecart", definition);
                 registry.put(definition.getRuntimeId(), definition);
                 componentItemData.add(definition);
@@ -667,7 +666,7 @@ public class ItemRegistryPopulator {
                     String identifier = customBlock.identifier();
 
                     // TODO verify
-                    final ItemDefinition definition = new SimpleItemDefinition(identifier, customProtocolId, 1, false, null);
+                    final ItemDefinition definition = new SimpleItemDefinition(identifier, customProtocolId, ItemVersion.DATA_DRIVEN, false, null);
                     registry.put(customProtocolId, definition);
                     customBlockItemDefinitions.put(customBlock, definition);
                     customIdMappings.put(customProtocolId, identifier);
diff --git a/core/src/main/resources/bedrock/item_components.nbt b/core/src/main/resources/bedrock/item_components.nbt
index 34d2ac7f0ca1bf5fafda5891c7666b562aa6922f..b34ebf881463170f79c3bde3343aa0761bc4d1e7 100644
GIT binary patch
literal 14202
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
Qsx6BD4=*hhLlr^+0K4I!UjP6A

literal 12649
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
Xkr#9y(Pfc{?&ALgn8T(o6b}Ia*2(6l

diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4616ab96d..1d993bf60 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,9 +10,9 @@ netty-io-uring = "0.0.25.Final-SNAPSHOT"
 guava = "29.0-jre"
 gson = "2.3.1" # Provided by Spigot 1.8.8
 websocket = "1.5.1"
-protocol-connection = "3.0.0.Beta6-20250203.121006-1"
-protocol-common = "3.0.0.Beta6-20250203.121006-1"
-protocol-codec = "3.0.0.Beta6-20250203.121006-1"
+protocol-connection = "3.0.0.Beta6-20250212.131009-3"
+protocol-common = "3.0.0.Beta6-20250212.131009-3"
+protocol-codec = "3.0.0.Beta6-20250212.131009-3"
 raknet = "1.0.0.CR3-20250128.101054-17"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.4-20250121.131208-18"

From 4d36524d05aec6637eeb5d20a6246e6ca7500cf8 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 12 Feb 2025 15:21:47 +0100
Subject: [PATCH 152/165] Fix https://github.com/GeyserMC/Geyser/issues/5280,
 update supported Bedrock version in the README.md

The "tracking" property seems to only be used server-side, so we should not rely on it client-side
---
 README.md                                             |  2 +-
 .../geysermc/geyser/session/cache/LodestoneCache.java | 11 +----------
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/README.md b/README.md
index 9f5c9d8d5..57aaaf6fe 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ The ultimate goal of this project is to allow Minecraft: Bedrock Edition users t
 Special thanks to the DragonProxy project for being a trailblazer in protocol translation and for all the team members who have joined us here!
 
 ## Supported Versions
-Geyser is currently supporting Minecraft Bedrock 1.21.40 - 1.21.50 and Minecraft Java 1.21.4. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
+Geyser is currently supporting Minecraft Bedrock 1.21.40 - 1.21.60 and Minecraft Java 1.21.4. For more information, please see [here](https://geysermc.org/wiki/geyser/supported-versions/).
 
 ## Setting Up
 Take a look [here](https://geysermc.org/wiki/geyser/setup/) for how to set up Geyser.
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/LodestoneCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/LodestoneCache.java
index ee8ebb13f..98aace480 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/LodestoneCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/LodestoneCache.java
@@ -53,13 +53,8 @@ public final class LodestoneCache {
     private int id = 1;
 
     public void cacheInventoryItem(GeyserItemStack itemStack, LodestoneTracker tracker) {
-        if (!tracker.isTracked()) {
-            return;
-        }
-
         GlobalPos position = tracker.getPos();
         if (position == null) {
-            // As of 1.20.6, position can still be null even if tracking is enabled.
             return;
         }
         int x = position.getX();
@@ -86,13 +81,9 @@ public final class LodestoneCache {
     }
 
     public int store(LodestoneTracker tracker) {
-        if (!tracker.isTracked()) {
-            // No coordinates; nothing to convert
-            return 0;
-        }
-
         GlobalPos position = tracker.getPos();
         if (position == null) {
+            // No coordinates; nothing to convert
             return 0;
         }
 

From b0bf867581a45ca6c337120bab18702c3b9886b9 Mon Sep 17 00:00:00 2001
From: Eclipse <eclipse@eclipseisoffline.xyz>
Date: Wed, 12 Feb 2025 15:32:55 +0000
Subject: [PATCH 153/165] Add basic support for the 1.21.2 minecart experiment
 (#5134)

* Add simple translator for move minecart packet

* Cleanup code

* This could be cleaned up even more

* Implement minecart lerping

* Use ClientboundUpdateEnabledFeaturesPacket to set experimental minecart behavior

* Move experiment checking to a per-session check

---------

Co-authored-by: onebeastchris <github@onechris.mozmail.com>
---
 .../geyser/entity/type/MinecartEntity.java    | 162 +++++++++++++++++-
 .../geyser/session/GeyserSession.java         |   6 +
 .../java/JavaUpdateEnabledFeaturesPacket.java |  45 +++++
 .../entity/JavaMoveMinecartTranslator.java    |  47 +++++
 4 files changed, 259 insertions(+), 1 deletion(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateEnabledFeaturesPacket.java
 create mode 100644 core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveMinecartTranslator.java

diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/MinecartEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/MinecartEntity.java
index 9096d8bd6..6faecb389 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/MinecartEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/MinecartEntity.java
@@ -25,20 +25,40 @@
 
 package org.geysermc.geyser.entity.type;
 
+import org.cloudburstmc.math.vector.Vector3d;
 import org.cloudburstmc.math.vector.Vector3f;
 import org.cloudburstmc.protocol.bedrock.data.entity.EntityDataTypes;
+import org.cloudburstmc.protocol.bedrock.packet.MoveEntityDeltaPacket;
+import org.cloudburstmc.protocol.bedrock.packet.SetEntityMotionPacket;
 import org.geysermc.geyser.entity.EntityDefinition;
 import org.geysermc.geyser.entity.EntityDefinitions;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.InteractionResult;
 import org.geysermc.geyser.util.InteractiveTag;
+import org.geysermc.geyser.util.MathUtils;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.MinecartStep;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveMinecartPacket;
 
+import java.util.LinkedList;
+import java.util.List;
 import java.util.UUID;
 
-public class MinecartEntity extends Entity {
+public class MinecartEntity extends Entity implements Tickable {
+    private static final int POS_ROT_LERP_TICKS = 3;
+
+    private final List<MinecartStep> lerpSteps = new LinkedList<>();
+    private final List<MinecartStep> currentLerpSteps = new LinkedList<>();
+
+    private MinecartStep lastCompletedStep = new MinecartStep(Vector3d.ZERO, Vector3d. ZERO, 0.0F, 0.0F, 0.0F);
+    private float currentStepsTotalWeight = 0.0F;
+    private int lerpDelay = 0;
+
+    private PartialStep cachedPartialStep;
+    private int cachedStepDelay;
+    private float cachedDelta;
 
     public MinecartEntity(GeyserSession session, int entityId, long geyserId, UUID uuid, EntityDefinition<?> definition, Vector3f position, Vector3f motion, float yaw, float pitch, float headYaw) {
         super(session, entityId, geyserId, uuid, definition, position.add(0d, definition.offset(), 0d), motion, yaw, pitch, headYaw);
@@ -58,6 +78,131 @@ public class MinecartEntity extends Entity {
         dirtyMetadata.put(EntityDataTypes.CUSTOM_DISPLAY, (byte) (entityMetadata.getPrimitiveValue() ? 1 : 0));
     }
 
+    @Override
+    public void tick() {
+        if (!session.isUsingExperimentalMinecartLogic()) {
+            return;
+        }
+
+        // All minecart lerp code here and in the methods below has been based off of the code in the Java NewMinecartBehavior class
+        lerpDelay--;
+        if (lerpDelay <= 0) {
+            updateCompletedStep();
+            currentLerpSteps.clear();
+            if (!lerpSteps.isEmpty()) {
+                currentLerpSteps.addAll(lerpSteps);
+                lerpSteps.clear();
+                currentStepsTotalWeight = 0.0F;
+
+                for (MinecartStep step : currentLerpSteps) {
+                    currentStepsTotalWeight += step.weight();
+                }
+
+                lerpDelay = currentStepsTotalWeight == 0.0F ? 0 : POS_ROT_LERP_TICKS;
+            }
+        }
+
+        if (isLerping()) {
+            float delta = 1.0F; // This is always 1, maybe it should be removed
+
+            Vector3f position = getCurrentLerpPosition(delta).toFloat();
+            Vector3f movement = getCurrentLerpMovement(delta).toFloat();
+            setPosition(position);
+            setMotion(movement);
+
+            setYaw(180.0F - getCurrentLerpYaw(delta));
+            setPitch(getCurrentLerpPitch(delta));
+
+            MoveEntityDeltaPacket moveEntityPacket = new MoveEntityDeltaPacket();
+            moveEntityPacket.setRuntimeEntityId(geyserId);
+
+            moveEntityPacket.setX(position.getX());
+            moveEntityPacket.setY(position.getY() + definition.offset());
+            moveEntityPacket.setZ(position.getZ());
+            moveEntityPacket.getFlags().add(MoveEntityDeltaPacket.Flag.HAS_X);
+            moveEntityPacket.getFlags().add(MoveEntityDeltaPacket.Flag.HAS_Y);
+            moveEntityPacket.getFlags().add(MoveEntityDeltaPacket.Flag.HAS_Z);
+
+            moveEntityPacket.setYaw(getYaw());
+            moveEntityPacket.setPitch(getPitch());
+            moveEntityPacket.getFlags().add(MoveEntityDeltaPacket.Flag.HAS_YAW);
+            moveEntityPacket.getFlags().add(MoveEntityDeltaPacket.Flag.HAS_PITCH);
+
+            SetEntityMotionPacket entityMotionPacket = new SetEntityMotionPacket();
+            entityMotionPacket.setRuntimeEntityId(geyserId);
+            entityMotionPacket.setMotion(movement);
+
+            session.sendUpstreamPacket(moveEntityPacket);
+            session.sendUpstreamPacket(entityMotionPacket);
+        }
+    }
+
+    public void handleMinecartMovePacket(ClientboundMoveMinecartPacket packet) {
+        lerpSteps.addAll(packet.getLerpSteps());
+    }
+
+    private boolean isLerping() {
+        return !currentLerpSteps.isEmpty();
+    }
+
+    private float getCurrentLerpPitch(float delta) {
+        PartialStep partialStep = getCurrentLerpStep(delta);
+        return lerpRotation(partialStep.delta, partialStep.previousStep.xRot(), partialStep.currentStep.xRot());
+    }
+
+    private float getCurrentLerpYaw(float delta) {
+        PartialStep partialStep = getCurrentLerpStep(delta);
+        return lerpRotation(partialStep.delta, partialStep.previousStep.yRot(), partialStep.currentStep.yRot());
+    }
+
+    private Vector3d getCurrentLerpPosition(float delta) {
+        PartialStep partialStep = getCurrentLerpStep(delta);
+        return lerp(partialStep.delta, partialStep.previousStep.position(), partialStep.currentStep.position());
+    }
+
+    private Vector3d getCurrentLerpMovement(float delta) {
+        PartialStep partialStep = getCurrentLerpStep(delta);
+        return lerp(partialStep.delta, partialStep.previousStep.movement(), partialStep.currentStep.movement());
+    }
+
+    private PartialStep getCurrentLerpStep(float delta) {
+        if (cachedDelta != delta || lerpDelay != cachedStepDelay || cachedPartialStep == null) {
+            float g = ((POS_ROT_LERP_TICKS - lerpDelay) + delta) / POS_ROT_LERP_TICKS;
+            float totalWeight = 0.0F;
+            float stepDelta = 1.0F;
+            boolean foundStep = false;
+
+            int step;
+            for (step = 0; step < currentLerpSteps.size(); step++) {
+                float currentWeight = currentLerpSteps.get(step).weight();
+                if (!(currentWeight <= 0.0F)) {
+                    totalWeight += currentWeight;
+                    if ((double) totalWeight >= currentStepsTotalWeight * (double) g) {
+                        float h = totalWeight - currentWeight;
+                        stepDelta = (g * currentStepsTotalWeight - h) / currentWeight;
+                        foundStep = true;
+                        break;
+                    }
+                }
+            }
+
+            if (!foundStep) {
+                step = currentLerpSteps.size() - 1;
+            }
+
+            MinecartStep currentStep = currentLerpSteps.get(step);
+            MinecartStep previousStep = step > 0 ? currentLerpSteps.get(step - 1) : lastCompletedStep;
+            cachedPartialStep = new PartialStep(stepDelta, currentStep, previousStep);
+            cachedStepDelay = lerpDelay;
+            cachedDelta = delta;
+        }
+        return cachedPartialStep;
+    }
+
+    private void updateCompletedStep() {
+        lastCompletedStep = new MinecartStep(position.toDouble(), motion.toDouble(), yaw, pitch, 0.0F);
+    }
+
     @Override
     public void moveAbsolute(Vector3f position, float yaw, float pitch, float headYaw, boolean isOnGround, boolean teleported) {
         super.moveAbsolute(position.add(0d, this.definition.offset(), 0d), yaw, pitch, headYaw, isOnGround, teleported);
@@ -103,4 +248,19 @@ public class MinecartEntity extends Entity {
             }
         }
     }
+
+    private static Vector3d lerp(double delta, Vector3d start, Vector3d end) {
+        return Vector3d.from(lerp(delta, start.getX(), end.getX()), lerp(delta, start.getY(), end.getY()), lerp(delta, start.getZ(), end.getZ()));
+    }
+
+    public static double lerp(double delta, double start, double end) {
+        return start + delta * (end - start);
+    }
+
+    private static float lerpRotation(float delta, float start, float end) {
+        return start + delta * MathUtils.wrapDegrees(end - start);
+    }
+
+    private record PartialStep(float delta, MinecartStep currentStep, MinecartStep previousStep) {
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 14a7f42a9..f9802fe52 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -477,6 +477,12 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     @Setter
     private boolean oldSmithingTable = false;
 
+    /**
+     * Whether to use the minecart_improvements experiment
+     */
+    @Setter
+    private boolean isUsingExperimentalMinecartLogic = false;
+
     /**
      * The current attack speed of the player. Used for sending proper cooldown timings.
      * Setting a default fixes cooldowns not showing up on a fresh world.
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateEnabledFeaturesPacket.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateEnabledFeaturesPacket.java
new file mode 100644
index 000000000..15ea7c684
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaUpdateEnabledFeaturesPacket.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2025 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java;
+
+import net.kyori.adventure.key.Key;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.configuration.clientbound.ClientboundUpdateEnabledFeaturesPacket;
+
+import java.util.Arrays;
+
+@Translator(packet = ClientboundUpdateEnabledFeaturesPacket.class)
+public class JavaUpdateEnabledFeaturesPacket extends PacketTranslator<ClientboundUpdateEnabledFeaturesPacket> {
+
+    private final static Key MINECART_EXPERIMENT = Key.key("minecart_improvements");
+
+    @Override
+    public void translate(GeyserSession session, ClientboundUpdateEnabledFeaturesPacket packet) {
+        session.setUsingExperimentalMinecartLogic(Arrays.asList(packet.getFeatures()).contains(MINECART_EXPERIMENT));
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveMinecartTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveMinecartTranslator.java
new file mode 100644
index 000000000..dc004ffba
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaMoveMinecartTranslator.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2024 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.translator.protocol.java.entity;
+
+import org.geysermc.geyser.entity.type.Entity;
+import org.geysermc.geyser.entity.type.MinecartEntity;
+import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.protocol.PacketTranslator;
+import org.geysermc.geyser.translator.protocol.Translator;
+import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundMoveMinecartPacket;
+
+@Translator(packet = ClientboundMoveMinecartPacket.class)
+public class JavaMoveMinecartTranslator extends PacketTranslator<ClientboundMoveMinecartPacket> {
+
+    @Override
+    public void translate(GeyserSession session, ClientboundMoveMinecartPacket packet) {
+        if (!packet.getLerpSteps().isEmpty()) {
+            Entity entity = session.getEntityCache().getEntityByJavaId(packet.getEntityId());
+            if (entity instanceof MinecartEntity minecart) {
+                minecart.handleMinecartMovePacket(packet);
+            }
+        }
+    }
+}

From d5b5712e60107175ccaed7fab21deca09c0f15cf Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Wed, 12 Feb 2025 20:40:05 +0100
Subject: [PATCH 154/165] Fix custom skulls (#5338)

---
 .../geyser/item/components/Rarity.java        |  4 +--
 .../org/geysermc/geyser/item/type/Item.java   |  5 ---
 .../geyser/item/type/PlayerHeadItem.java      | 36 +++++++++----------
 .../populator/ItemRegistryPopulator.java      |  7 ++--
 .../geyser/session/cache/SkullCache.java      |  2 --
 .../translator/item/ItemTranslator.java       |  3 +-
 6 files changed, 23 insertions(+), 34 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/item/components/Rarity.java b/core/src/main/java/org/geysermc/geyser/item/components/Rarity.java
index 6fa74ea35..437fc5391 100644
--- a/core/src/main/java/org/geysermc/geyser/item/components/Rarity.java
+++ b/core/src/main/java/org/geysermc/geyser/item/components/Rarity.java
@@ -26,6 +26,7 @@
 package org.geysermc.geyser.item.components;
 
 import lombok.Getter;
+import org.checkerframework.checker.nullness.qual.NonNull;
 
 @Getter
 public enum Rarity {
@@ -44,8 +45,7 @@ public enum Rarity {
 
     private static final Rarity[] VALUES = values();
 
-    public static Rarity fromId(int id) {
+    public static @NonNull Rarity fromId(Integer id) {
         return VALUES.length > id ? VALUES[id] : VALUES[0];
     }
-
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 738d57788..056e8b48a 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -37,7 +37,6 @@ import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.item.BedrockEnchantment;
 import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.registry.Registries;
@@ -95,10 +94,6 @@ public class Item {
         return baseComponents.getOrDefault(DataComponentType.MAX_STACK_SIZE, 1);
     }
 
-    public Rarity defaultRarity() {
-        return Rarity.fromId(baseComponents.getOrDefault(DataComponentType.RARITY, 0));
-    }
-
     /**
      * Returns an unmodifiable {@link DataComponents} view containing known data components.
      * Optionally, additional components can be provided to replace (or add to)
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java b/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java
index d4999c80d..003aa0a73 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java
@@ -25,13 +25,14 @@
 
 package org.geysermc.geyser.item.type;
 
-import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.checkerframework.checker.nullness.qual.NonNull;
+import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
+import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
@@ -44,24 +45,21 @@ public class PlayerHeadItem extends BlockItem {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        // TODO verify
-        // Also - ChatColor.YELLOW + ChatColor.ITALIC + MessageTranslator.convertMessageLenient(nameTag.getValue(), session.locale())) this code existed if a custom name was already present.
-        // But I think we would always overwrite that because translateDisplayProperties runs after this method.
-        String customName = builder.getCustomName();
-        if (customName == null) {
-            GameProfile profile = components.get(DataComponentType.PROFILE);
-            if (profile != null) {
-                String name = profile.getName();
-                if (name != null) {
-                    // Add correct name of player skull
-                    String displayName = ChatColor.RESET + ChatColor.YELLOW +
-                            MinecraftLocale.getLocaleString("block.minecraft.player_head.named", session.locale()).replace("%s", name);
-                    builder.setCustomName(displayName);
-                } else {
-                    // No name found so default to "Player Head"
-                    builder.setCustomName(ChatColor.RESET + ChatColor.YELLOW +
-                            MinecraftLocale.getLocaleString("block.minecraft.player_head", session.locale()));
-                }
+        // Use the correct color, determined by the rarity of the item
+        char rarity = Rarity.fromId(components.get(DataComponentType.RARITY)).getColor();
+
+        GameProfile profile = components.get(DataComponentType.PROFILE);
+        if (profile != null) {
+            String name = profile.getName();
+            if (name != null) {
+                // Add correct name of player skull
+                String displayName = ChatColor.RESET + ChatColor.ESCAPE + rarity +
+                        MinecraftLocale.getLocaleString("block.minecraft.player_head.named", session.locale()).replace("%s", name);
+                builder.setCustomName(displayName);
+            } else {
+                // No name found so default to "Player Head"
+                builder.setCustomName(ChatColor.RESET + ChatColor.ESCAPE + rarity +
+                        MinecraftLocale.getLocaleString("block.minecraft.player_head", session.locale()));
             }
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
index 08f3226f9..c0c006549 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/ItemRegistryPopulator.java
@@ -67,7 +67,6 @@ import org.geysermc.geyser.api.item.custom.NonVanillaCustomItemData;
 import org.geysermc.geyser.inventory.item.StoredItemMappings;
 import org.geysermc.geyser.item.GeyserCustomMappingData;
 import org.geysermc.geyser.item.Items;
-import org.geysermc.geyser.item.components.Rarity;
 import org.geysermc.geyser.item.type.BlockItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.level.block.property.Properties;
@@ -491,9 +490,8 @@ public class ItemRegistryPopulator {
                     mappingBuilder = mappingBuilder.toolType(mappingItem.getToolType().intern());
                 }
 
-                if (javaOnlyItems.contains(javaItem) || javaItem.defaultRarity() != Rarity.COMMON) {
+                if (javaOnlyItems.contains(javaItem)) {
                     // These items don't exist on Bedrock, so set up a variable that indicates they should have custom names
-                    // Or, ensure that we are translating these at all times to account for rarity colouring
                     mappingBuilder = mappingBuilder.translationString((javaItem instanceof BlockItem ? "block." : "item.") + entry.getKey().replace(":", "."));
                     GeyserImpl.getInstance().getLogger().debug("Adding " + entry.getKey() + " as an item that needs to be translated.");
                 }
@@ -665,8 +663,7 @@ public class ItemRegistryPopulator {
                     int customProtocolId = nextFreeBedrockId++;
                     String identifier = customBlock.identifier();
 
-                    // TODO verify
-                    final ItemDefinition definition = new SimpleItemDefinition(identifier, customProtocolId, ItemVersion.DATA_DRIVEN, false, null);
+                    final ItemDefinition definition = new SimpleItemDefinition(identifier, customProtocolId, ItemVersion.NONE, false, null);
                     registry.put(customProtocolId, definition);
                     customBlockItemDefinitions.put(customBlock, definition);
                     customIdMappings.put(customProtocolId, identifier);
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java
index a3cf1247f..08f73a381 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/SkullCache.java
@@ -64,8 +64,6 @@ public class SkullCache {
 
     private Vector3f lastPlayerPosition;
 
-    private long lastCleanup = System.currentTimeMillis();
-
     public SkullCache(GeyserSession session) {
         this.session = session;
         this.maxVisibleSkulls = session.getGeyser().getConfig().getMaxVisibleCustomSkulls();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index 3f9bf7446..a41c4ee84 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -174,7 +174,7 @@ public final class ItemTranslator {
         // Translate item-specific components
         javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
 
-        Rarity rarity = Rarity.fromId(components.getOrDefault(DataComponentType.RARITY, 0));
+        Rarity rarity = Rarity.fromId(components.get(DataComponentType.RARITY));
         String customName = getCustomName(session, customComponents, bedrockItem, rarity.getColor(), false, false);
         if (customName != null) {
             PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
@@ -611,6 +611,7 @@ public final class ItemTranslator {
         }
 
         if (textures == null || textures.isEmpty()) {
+            // TODO the java client looks up the texture properties here and updates the item
             return null;
         }
 

From 3e6172642d4e894c4b76414ddd6228ee5497fe97 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 16 Feb 2025 16:58:44 +0100
Subject: [PATCH 155/165] Update MCPL, resolves issues with the
 ClientboundPlayerInfoUpdatePacket

---
 .../java/org/geysermc/geyser/session/GeyserSessionAdapter.java  | 2 +-
 gradle/libs.versions.toml                                       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java
index 9e17e9cd3..812456644 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSessionAdapter.java
@@ -232,7 +232,7 @@ public class GeyserSessionAdapter extends SessionAdapter {
     @Override
     public void packetError(PacketErrorEvent event) {
         geyser.getLogger().warning(GeyserLocale.getLocaleStringLog("geyser.network.downstream_error",
-            (event.getPacketClass() != null ? "(" + event.getPacketClass().getSimpleName() + ")" : "") +
+            (event.getPacketClass() != null ? "(" + event.getPacketClass().getSimpleName() + ") " : "") +
                 event.getCause().getMessage())
         );
         if (geyser.getConfig().isDebugMode())
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 1d993bf60..c4fc04bf7 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta6-20250212.131009-3"
 protocol-codec = "3.0.0.Beta6-20250212.131009-3"
 raknet = "1.0.0.CR3-20250128.101054-17"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-20250121.131208-18"
+mcprotocollib = "1.21.4-20250216.154737-20"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From ecc10d656093d03720b708498741b29729d324e8 Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 16 Feb 2025 15:18:55 -0500
Subject: [PATCH 156/165] Update direct connection/compression disabler for
 newest BungeeCord

Fixes #5348
---
 .../GeyserBungeeCompressionDisabler.java          |  6 ++++--
 .../platform/bungeecord/GeyserBungeeInjector.java | 10 +++++++++-
 .../bungeecord/GeyserBungeePingPassthrough.java   | 15 +++++++++++++++
 3 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeCompressionDisabler.java b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeCompressionDisabler.java
index 485079a05..23ab36363 100644
--- a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeCompressionDisabler.java
+++ b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeCompressionDisabler.java
@@ -28,6 +28,7 @@ package org.geysermc.geyser.platform.bungeecord;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelOutboundHandlerAdapter;
 import io.netty.channel.ChannelPromise;
+import net.md_5.bungee.netty.LengthPrependerAndCompressor;
 import net.md_5.bungee.protocol.packet.LoginSuccess;
 import net.md_5.bungee.protocol.packet.SetCompression;
 
@@ -40,8 +41,9 @@ public class GeyserBungeeCompressionDisabler extends ChannelOutboundHandlerAdapt
             // Fixes https://github.com/GeyserMC/Geyser/issues/4281
             // The server may send a LoginDisconnect packet after compression is set.
             if (!compressionDisabled) {
-                if (ctx.pipeline().get("compress") != null) {
-                    ctx.pipeline().remove("compress");
+                LengthPrependerAndCompressor compressor = ctx.pipeline().get(LengthPrependerAndCompressor.class);
+                if (compressor.isCompress()) {
+                    compressor.setCompress(false);
                     compressionDisabled = true;
                 }
                 if (ctx.pipeline().get("decompress") != null) {
diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeInjector.java b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeInjector.java
index 7c60ba95d..459bde3af 100644
--- a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeInjector.java
+++ b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeeInjector.java
@@ -73,6 +73,14 @@ public class GeyserBungeeInjector extends GeyserInjector implements Listener {
             throw new UnsupportedOperationException("Geyser does not currently support multiple listeners with injection! " +
                     "Please reach out to us on our Discord at https://discord.gg/GeyserMC so we can hear feedback on your setup.");
         }
+
+        // TODO remove
+        try {
+            ProxyServer.class.getMethod("unsafe");
+        } catch (NoSuchMethodException e) {
+            throw new UnsupportedOperationException("You're using an outdated version of BungeeCord - please update. Thank you!");
+        }
+
         ListenerInfo listenerInfo = proxy.getConfig().getListeners().stream().findFirst().orElseThrow(IllegalStateException::new);
 
         Class<? extends ProxyServer> proxyClass = proxy.getClass();
@@ -138,7 +146,7 @@ public class GeyserBungeeInjector extends GeyserInjector implements Listener {
                         if (channelInitializer == null) {
                             // Proxy has finished initializing; we can safely grab this variable without fear of plugins modifying it
                             // (Older versions of ViaVersion replace this to inject)
-                            channelInitializer = PipelineUtils.SERVER_CHILD;
+                            channelInitializer = proxy.unsafe().getFrontendChannelInitializer().getChannelInitializer();
                         }
                         initChannel.invoke(channelInitializer, ch);
 
diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePingPassthrough.java b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePingPassthrough.java
index 1193a52b3..472c5f10a 100644
--- a/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePingPassthrough.java
+++ b/bootstrap/bungeecord/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePingPassthrough.java
@@ -186,6 +186,21 @@ public class GeyserBungeePingPassthrough implements IGeyserPingPassthrough, List
             return false;
         }
 
+        @Override
+        public boolean isTransferred() {
+            return false;
+        }
+
+        @Override
+        public CompletableFuture<byte[]> retrieveCookie(String s) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public CompletableFuture<byte[]> sendData(String s, byte[] bytes) {
+            throw new UnsupportedOperationException();
+        }
+
         @Override
         public Unsafe unsafe() {
             throw new UnsupportedOperationException();

From 778c0819ef76abb51eab191d0e6250c2a2e2618e Mon Sep 17 00:00:00 2001
From: Camotoy <20743703+Camotoy@users.noreply.github.com>
Date: Sun, 16 Feb 2025 15:35:07 -0500
Subject: [PATCH 157/165] Add the Gradle versions file, too...

---
 gradle/libs.versions.toml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index c4fc04bf7..f9bfd758e 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -30,7 +30,7 @@ cloud = "2.0.0-rc.2"
 cloud-minecraft = "2.0.0-beta.9"
 cloud-minecraft-modded = "2.0.0-beta.10"
 commodore = "2.2"
-bungeecord = "a7c6ede"
+bungeecord = "1.21-R0.1-20250215.224541-54"
 velocity = "3.3.0-SNAPSHOT"
 viaproxy = "3.3.2-SNAPSHOT"
 fabric-loader = "0.16.9"
@@ -116,7 +116,7 @@ neoforge-minecraft = { group = "net.neoforged", name = "neoforge", version.ref =
 
 adapters-spigot = { group = "org.geysermc.geyser.adapters", name = "spigot-all", version.ref = "adapters" }
 adapters-paper = { group = "org.geysermc.geyser.adapters", name = "paper-all", version.ref = "adapters" }
-bungeecord-proxy = { group = "com.github.SpigotMC.BungeeCord", name = "bungeecord-proxy", version.ref = "bungeecord" }
+bungeecord-proxy = { group = "net.md-5", name = "bungeecord-proxy", version.ref = "bungeecord" }
 checker-qual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checkerframework" }
 commodore = { group = "me.lucko", name = "commodore", version.ref = "commodore" }
 guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }

From 7448a994ad2b4edc2bd4617035cd277834575f83 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Tue, 18 Feb 2025 15:12:38 +0100
Subject: [PATCH 158/165] Fix: Server-side requested container closing (#5346)

* Work on closing inventories

* Test more container types, add very hacky player container close workaround

* Only send close container packet to Java edition when needed

* Adjust warning to hopefully find where desync issues occur

* don't crash when closing lecterns

* remove debug logging

* Don't send container close packet to the Java server when not needed, mainly for fake lecterns
---
 .../geysermc/geyser/inventory/Container.java  |  4 +-
 .../geysermc/geyser/inventory/Inventory.java  |  8 +++
 .../geyser/inventory/LecternContainer.java    | 11 ++--
 .../holder/BlockInventoryHolder.java          | 52 ++++++++++++-------
 .../inventory/holder/InventoryHolder.java     |  3 +-
 .../populator/BlockRegistryPopulator.java     | 10 ++++
 .../geyser/registry/type/BlockMappings.java   |  3 +-
 .../geyser/session/GeyserSession.java         |  8 +++
 .../AbstractBlockInventoryTranslator.java     | 10 +++-
 .../inventory/AnvilInventoryTranslator.java   |  6 +++
 .../inventory/BeaconInventoryTranslator.java  |  5 ++
 .../inventory/BrewingInventoryTranslator.java |  6 +++
 .../CartographyInventoryTranslator.java       |  6 +++
 .../inventory/CrafterInventoryTranslator.java |  5 ++
 .../CraftingInventoryTranslator.java          |  6 +++
 .../EnchantingInventoryTranslator.java        |  6 +++
 .../Generic3X3InventoryTranslator.java        |  6 +++
 .../GrindstoneInventoryTranslator.java        |  6 +++
 .../inventory/HopperInventoryTranslator.java  |  7 +++
 .../inventory/LecternInventoryTranslator.java | 11 ++--
 .../inventory/LoomInventoryTranslator.java    |  6 +++
 .../inventory/OldSmithingTableTranslator.java |  6 +++
 .../inventory/PlayerInventoryTranslator.java  | 30 ++++++++---
 .../inventory/ShulkerInventoryTranslator.java |  6 +++
 .../SmithingInventoryTranslator.java          |  6 +++
 .../StonecutterInventoryTranslator.java       |  6 +++
 .../chest/DoubleChestInventoryTranslator.java | 18 ++++++-
 .../chest/SingleChestInventoryTranslator.java |  2 +-
 .../BlastFurnaceInventoryTranslator.java      |  7 +++
 .../furnace/FurnaceInventoryTranslator.java   |  7 +++
 .../furnace/SmokerInventoryTranslator.java    |  7 +++
 .../AbstractHorseInventoryTranslator.java     |  2 +
 .../BedrockContainerCloseTranslator.java      |  4 +-
 .../BedrockLecternUpdateTranslator.java       |  4 +-
 .../JavaContainerCloseTranslator.java         |  1 +
 .../inventory/JavaOpenBookTranslator.java     |  4 +-
 .../geysermc/geyser/util/InventoryUtils.java  | 10 +++-
 37 files changed, 255 insertions(+), 50 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/inventory/Container.java b/core/src/main/java/org/geysermc/geyser/inventory/Container.java
index e78a4d2c6..f2db415c0 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/Container.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/Container.java
@@ -25,12 +25,12 @@
 
 package org.geysermc.geyser.inventory;
 
-import org.geysermc.geyser.level.block.type.Block;
-import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import lombok.Getter;
 import org.checkerframework.checker.nullness.qual.NonNull;
+import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
+import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import org.jetbrains.annotations.Range;
 
 /**
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java b/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
index c960ed1a2..4639e0151 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
@@ -171,4 +171,12 @@ public abstract class Inventory {
     public void resetNextStateId() {
         nextStateId = -1;
     }
+
+    /**
+     * Whether we should be sending a {@link org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket}
+     * when closing the inventory.
+     */
+    public boolean shouldConfirmContainerClose() {
+        return true;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java b/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java
index ff21f561e..9988188f1 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/LecternContainer.java
@@ -43,7 +43,7 @@ public class LecternContainer extends Container {
     @Setter
     private Vector3i position;
 
-    private boolean isFakeLectern = false;
+    private boolean isBookInPlayerInventory = false;
 
     public LecternContainer(String title, int id, int size, ContainerType containerType, PlayerInventory playerInventory) {
         super(title, id, size, containerType, playerInventory);
@@ -55,7 +55,7 @@ public class LecternContainer extends Container {
      */
     @Override
     public void setItem(int slot, @NonNull GeyserItemStack newItem, GeyserSession session) {
-        if (isFakeLectern) {
+        if (isBookInPlayerInventory) {
             session.getPlayerInventory().setItem(slot, newItem, session);
         } else {
             super.setItem(slot, newItem, session);
@@ -67,7 +67,12 @@ public class LecternContainer extends Container {
      * See {@link LecternContainer#setItem(int, GeyserItemStack, GeyserSession)} as for why this is separate.
      */
     public void setFakeLecternBook(GeyserItemStack book, GeyserSession session) {
-        this.isFakeLectern = true;
+        this.isBookInPlayerInventory = true;
         super.setItem(0, book, session);
     }
+
+    @Override
+    public boolean shouldConfirmContainerClose() {
+        return !isBookInPlayerInventory;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java b/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java
index 385a1e2bd..1bf30bc7e 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/holder/BlockInventoryHolder.java
@@ -155,32 +155,46 @@ public class BlockInventoryHolder extends InventoryHolder {
     }
 
     @Override
-    public void closeInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory) {
-        if (inventory instanceof Container container) {
-            if (container.isUsingRealBlock() && !(container instanceof LecternContainer)) {
-                // No need to reset a block since we didn't change any blocks
-                // But send a container close packet because we aren't destroying the original.
-                ContainerClosePacket packet = new ContainerClosePacket();
-                packet.setId((byte) inventory.getBedrockId());
-                packet.setServerInitiated(true);
-                packet.setType(ContainerType.CONTAINER);
-                session.sendUpstreamPacket(packet);
-                return;
-            }
-        } else {
-            GeyserImpl.getInstance().getLogger().warning("Tried to close a non-container inventory in a block inventory holder! ");
-            if (GeyserImpl.getInstance().getLogger().isDebug()) {
-                GeyserImpl.getInstance().getLogger().debug("Current inventory: " + inventory);
-                GeyserImpl.getInstance().getLogger().debug("Open inventory: " + session.getOpenInventory());
-            }
+    public void closeInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory, ContainerType type) {
+        if (!(inventory instanceof Container container)) {
+            GeyserImpl.getInstance().getLogger().warning("Tried to close a non-container inventory in a block inventory holder! Please report this error on discord.");
+            GeyserImpl.getInstance().getLogger().warning("Current inventory translator: " + translator.getClass().getSimpleName());
+            GeyserImpl.getInstance().getLogger().warning("Current inventory: " + inventory.getClass().getSimpleName());
             // Try to save ourselves? maybe?
             // https://github.com/GeyserMC/Geyser/issues/4141
-            // TODO: improve once this issue is pinned down properly
+            // TODO: improve once this issue is pinned down
             session.setOpenInventory(null);
             session.setInventoryTranslator(InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR);
             return;
         }
 
+        // Bedrock broke inventory closing. I wish i was kidding.
+        // "type" is explicitly passed to keep track of which inventory types can be closed without
+        // ""workarounds"". yippie.
+        // Further, Lecterns cannot be closed with any of the two methods below.
+        if (container.isUsingRealBlock() && !(container instanceof LecternContainer)) {
+            if (type != null) {
+                // No need to reset a block since we didn't change any blocks
+                // But send a container close packet because we aren't destroying the original.
+                ContainerClosePacket packet = new ContainerClosePacket();
+                packet.setId((byte) inventory.getBedrockId());
+                packet.setServerInitiated(true);
+                packet.setType(type);
+                session.sendUpstreamPacket(packet);
+                return;
+            }
+
+            // Destroy the block. There's no inventory to view => it gets closed!
+            Vector3i holderPos = inventory.getHolderPosition();
+            UpdateBlockPacket blockPacket = new UpdateBlockPacket();
+            blockPacket.setDataLayer(0);
+            blockPacket.setBlockPosition(holderPos);
+            blockPacket.setDefinition(session.getBlockMappings().getBedrockAir());
+            blockPacket.getFlags().addAll(UpdateBlockPacket.FLAG_ALL_PRIORITY);
+            session.sendUpstreamPacket(blockPacket);
+        }
+
+        // Reset to correct block
         Vector3i holderPos = inventory.getHolderPosition();
         int realBlock = session.getGeyser().getWorldManager().getBlockAt(session, holderPos.getX(), holderPos.getY(), holderPos.getZ());
         UpdateBlockPacket blockPacket = new UpdateBlockPacket();
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/holder/InventoryHolder.java b/core/src/main/java/org/geysermc/geyser/inventory/holder/InventoryHolder.java
index 986df53db..d61193c7a 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/holder/InventoryHolder.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/holder/InventoryHolder.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.inventory.holder;
 
+import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
@@ -32,5 +33,5 @@ import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 public abstract class InventoryHolder {
     public abstract boolean prepareInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory);
     public abstract void openInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory);
-    public abstract void closeInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory);
+    public abstract void closeInventory(InventoryTranslator translator, GeyserSession session, Inventory inventory, ContainerType containerType);
 }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
index 29591ce9e..59cdd52c4 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/BlockRegistryPopulator.java
@@ -245,6 +245,7 @@ public final class BlockRegistryPopulator {
             GeyserBedrockBlock airDefinition = null;
             BlockDefinition commandBlockDefinition = null;
             BlockDefinition mobSpawnerBlockDefinition = null;
+            BlockDefinition netherPortalBlockDefinition = null;
             BlockDefinition waterDefinition = null;
             BlockDefinition movingBlockDefinition = null;
             Iterator<NbtMap> blocksIterator = BLOCKS_NBT.iterator();
@@ -330,6 +331,10 @@ public final class BlockRegistryPopulator {
                     structureBlockDefinitions.put(mode.toUpperCase(Locale.ROOT), bedrockDefinition);
                 }
 
+                if (block == Blocks.NETHER_PORTAL) {
+                    netherPortalBlockDefinition = bedrockDefinition;
+                }
+
                 boolean waterlogged = blockState.getValue(Properties.WATERLOGGED, false)
                         || block == Blocks.BUBBLE_COLUMN || block == Blocks.KELP || block == Blocks.KELP_PLANT
                         || block == Blocks.SEAGRASS || block == Blocks.TALL_SEAGRASS;
@@ -358,6 +363,11 @@ public final class BlockRegistryPopulator {
             }
             builder.mobSpawnerBlock(mobSpawnerBlockDefinition);
 
+            if (netherPortalBlockDefinition == null) {
+                throw new AssertionError("Unable to find nether portal block in palette");
+            }
+            builder.netherPortalBlock(netherPortalBlockDefinition);
+
             if (waterDefinition  == null) {
                 throw new AssertionError("Unable to find water in palette");
             }
diff --git a/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java b/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java
index be96fec0e..c783aee56 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/type/BlockMappings.java
@@ -64,6 +64,7 @@ public class BlockMappings implements DefinitionRegistry<BlockDefinition> {
 
     BlockDefinition commandBlock;
     BlockDefinition mobSpawnerBlock;
+    BlockDefinition netherPortalBlock;
 
     Map<NbtMap, BlockDefinition> itemFrames;
     Map<Block, NbtMap> flowerPotBlocks;
@@ -137,4 +138,4 @@ public class BlockMappings implements DefinitionRegistry<BlockDefinition> {
     public boolean isRegistered(BlockDefinition bedrockBlock) {
         return getDefinition(bedrockBlock.getRuntimeId()) == bedrockBlock;
     }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index f9802fe52..4a2863b9e 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -526,6 +526,14 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     @Setter
     private boolean placedBucket;
 
+    /**
+     * Stores whether the Java server requested the player inventory to be closed.
+     * Used to prevent our hacky player inventory closing workaround in {@link org.geysermc.geyser.translator.inventory.PlayerInventoryTranslator#closeInventory(GeyserSession, Inventory)}
+     * to run when the closing is initated by the Bedrock client.
+     */
+    @Setter
+    private boolean serverRequestedClosePlayerInventory;
+
     /**
      * Counts how many ticks have occurred since an arm animation started.
      * -1 means there is no active arm swing; -2 means an arm swing will start in a tick.
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/AbstractBlockInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/AbstractBlockInventoryTranslator.java
index 4476391c8..0cd60987d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/AbstractBlockInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/AbstractBlockInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.holder.BlockInventoryHolder;
@@ -86,7 +87,7 @@ public abstract class AbstractBlockInventoryTranslator extends BaseInventoryTran
 
     @Override
     public void closeInventory(GeyserSession session, Inventory inventory) {
-        holder.closeInventory(this, session, inventory);
+        holder.closeInventory(this, session, inventory, closeContainerType(inventory));
     }
 
     @Override
@@ -98,4 +99,11 @@ public abstract class AbstractBlockInventoryTranslator extends BaseInventoryTran
     public void updateSlot(GeyserSession session, Inventory inventory, int slot) {
         updater.updateSlot(this, session, inventory, slot);
     }
+
+    /*
+    So. Sometime in 1.21, Bedrock just broke the ContainerClosePacket. As in: Geyser sends it, the player ignores it.
+    But only for some blocks! And some blocks only respond to specific container types (dispensers/droppers now require the specific type...)
+    When this returns null, we just... break the block, and replace it. Primitive. But if that works... fine.
+     */
+    public abstract @Nullable ContainerType closeContainerType(Inventory inventory);
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java
index cbc8ce7bd..f43d1301b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/AnvilInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
@@ -115,4 +116,9 @@ public class AnvilInventoryTranslator extends AbstractBlockInventoryTranslator {
         anvilContainer.setUseJavaLevelCost(true);
         updateSlot(session, anvilContainer, 1);
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.@Nullable ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java
index 6edbd925e..2b731000d 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BeaconInventoryTranslator.java
@@ -147,4 +147,9 @@ public class BeaconInventoryTranslator extends AbstractBlockInventoryTranslator
     public Inventory createInventory(String name, int windowId, ContainerType containerType, PlayerInventory playerInventory) {
         return new BeaconContainer(name, windowId, this.size, containerType, playerInventory);
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java
index 5147fb75d..d3b5299eb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BrewingInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
@@ -106,4 +107,9 @@ public class BrewingInventoryTranslator extends AbstractBlockInventoryTranslator
             default -> super.javaSlotToBedrockContainer(slot);
         };
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return ContainerType.BREWING_STAND;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java
index 65fc7b35c..2cb4d0f14 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/CartographyInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
 import org.geysermc.geyser.inventory.*;
@@ -88,4 +89,9 @@ public class CartographyInventoryTranslator extends AbstractBlockInventoryTransl
     public Inventory createInventory(String name, int windowId, ContainerType containerType, PlayerInventory playerInventory) {
         return new CartographyContainer(name, windowId, this.size, containerType, playerInventory);
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.@Nullable ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java
index 83076640a..390c0d6e6 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/CrafterInventoryTranslator.java
@@ -162,4 +162,9 @@ public class CrafterInventoryTranslator extends AbstractBlockInventoryTranslator
 
         BlockEntityUtils.updateBlockEntity(session, tag.build(), container.getHolderPosition());
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java
index 577d87fe5..6c9dad5f3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/CraftingInventoryTranslator.java
@@ -29,6 +29,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.SlotType;
 import org.geysermc.geyser.inventory.updater.UIInventoryUpdater;
 import org.geysermc.geyser.level.block.Blocks;
@@ -86,4 +87,9 @@ public class CraftingInventoryTranslator extends AbstractBlockInventoryTranslato
     public static boolean isCraftingGrid(int slot) {
         return slot >= 1 && slot <= 9;
     }
+
+    @Override
+    public ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java
index eb0e351e1..10386c23e 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/EnchantingInventoryTranslator.java
@@ -26,6 +26,7 @@
 package org.geysermc.geyser.translator.inventory;
 
 import it.unimi.dsi.fastutil.ints.IntSets;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.EnchantOptionData;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
@@ -170,4 +171,9 @@ public class EnchantingInventoryTranslator extends AbstractBlockInventoryTransla
     public Inventory createInventory(String name, int windowId, ContainerType containerType, PlayerInventory playerInventory) {
         return new EnchantingContainer(name, windowId, this.size, containerType, playerInventory);
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.@Nullable ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/Generic3X3InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/Generic3X3InventoryTranslator.java
index 80040e375..0f90240d1 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/Generic3X3InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/Generic3X3InventoryTranslator.java
@@ -68,4 +68,10 @@ public class Generic3X3InventoryTranslator extends AbstractBlockInventoryTransla
         }
         return super.javaSlotToBedrockContainer(javaSlot);
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType closeContainerType(Inventory inventory) {
+        return ((Generic3X3Container) inventory).isDropper() ? org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType.DROPPER :
+            org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType.DISPENSER;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java
index d3283de40..2c4430ac3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/GrindstoneInventoryTranslator.java
@@ -29,6 +29,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.updater.UIInventoryUpdater;
 import org.geysermc.geyser.level.block.Blocks;
 
@@ -66,4 +67,9 @@ public class GrindstoneInventoryTranslator extends AbstractBlockInventoryTransla
             default -> super.javaSlotToBedrock(slot);
         };
     }
+
+    @Override
+    public ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/HopperInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/HopperInventoryTranslator.java
index fdcd7bf57..37cb4a813 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/HopperInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/HopperInventoryTranslator.java
@@ -25,9 +25,11 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.updater.ContainerInventoryUpdater;
 import org.geysermc.geyser.level.block.Blocks;
 
@@ -46,4 +48,9 @@ public class HopperInventoryTranslator extends AbstractBlockInventoryTranslator
         }
         return super.javaSlotToBedrockContainer(javaSlot);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return ContainerType.HOPPER;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
index 414ab655a..c5814e336 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
@@ -62,7 +63,7 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
     @Override
     public boolean prepareInventory(GeyserSession session, Inventory inventory) {
         super.prepareInventory(session, inventory);
-        if (((LecternContainer) inventory).isFakeLectern()) {
+        if (((LecternContainer) inventory).isBookInPlayerInventory()) {
             // See JavaOpenBookTranslator; this isn't a lectern but a book in the player inventory
             updateBook(session, inventory, inventory.getItem(0));
             receivedBook = true;
@@ -98,7 +99,6 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
         // Now: Restore the lectern, if it actually exists
         if (lecternContainer.isUsingRealBlock()) {
             boolean hasBook = session.getGeyser().getWorldManager().blockAt(session, position).getValue(Properties.HAS_BOOK, false);
-
             NbtMap map = LecternBlock.getBaseLecternTag(position, hasBook);
             BlockEntityUtils.updateBlockEntity(session, map, position);
         }
@@ -131,7 +131,7 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
     @Override
     public void updateSlot(GeyserSession session, Inventory inventory, int slot) {
         // If we're not in a real lectern, the Java server thinks we are still in the player inventory.
-        if (((LecternContainer) inventory).isFakeLectern()) {
+        if (((LecternContainer) inventory).isBookInPlayerInventory()) {
             InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR.updateSlot(session, session.getPlayerInventory(), slot);
             return;
         }
@@ -141,6 +141,11 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
         }
     }
 
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.@Nullable ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
+
     /**
      * Translate the data of the book in the lectern into a block entity tag.
      */
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
index 998108154..9fb407336 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
@@ -27,6 +27,7 @@ package org.geysermc.geyser.translator.inventory;
 
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
@@ -207,4 +208,9 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
         }
         return super.getSlotType(javaSlot);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
index fc9c4f587..1ee8b18eb 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/OldSmithingTableTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
@@ -145,4 +146,9 @@ public class OldSmithingTableTranslator extends AbstractBlockInventoryTranslator
         slotPacket.setItem(UPGRADE_TEMPLATE.apply(session.getUpstream().getProtocolVersion()));
         session.sendUpstreamPacket(slotPacket);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index c69293717..45deacaad 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -28,6 +28,8 @@ package org.geysermc.geyser.translator.inventory;
 import it.unimi.dsi.fastutil.ints.IntIterator;
 import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
 import it.unimi.dsi.fastutil.ints.IntSet;
+import org.cloudburstmc.math.vector.Vector3i;
+import org.cloudburstmc.protocol.bedrock.data.definitions.BlockDefinition;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerId;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.CreativeItemData;
@@ -41,10 +43,10 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.SwapAction;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.action.TransferItemStackRequestAction;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.response.ItemStackResponse;
-import org.cloudburstmc.protocol.bedrock.packet.ContainerClosePacket;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerOpenPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventoryContentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.InventorySlotPacket;
+import org.cloudburstmc.protocol.bedrock.packet.UpdateBlockPacket;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
 import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.inventory.Inventory;
@@ -65,6 +67,7 @@ import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.S
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 import java.util.function.IntFunction;
 
 public class PlayerInventoryTranslator extends InventoryTranslator {
@@ -577,11 +580,26 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
 
     @Override
     public void closeInventory(GeyserSession session, Inventory inventory) {
-        ContainerClosePacket packet = new ContainerClosePacket();
-        packet.setServerInitiated(true);
-        packet.setId((byte) ContainerId.INVENTORY);
-        packet.setType(org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType.INVENTORY);
-        session.sendUpstreamPacket(packet);
+        if (session.isServerRequestedClosePlayerInventory()) {
+            Vector3i pos = session.getPlayerEntity().getPosition().toInt();
+
+            UpdateBlockPacket packet = new UpdateBlockPacket();
+            packet.setBlockPosition(pos);
+            packet.setDefinition(session.getBlockMappings().getNetherPortalBlock());
+            packet.setDataLayer(0);
+            packet.getFlags().add(UpdateBlockPacket.Flag.PRIORITY);
+            session.sendUpstreamPacket(packet);
+
+            session.scheduleInEventLoop(() -> {
+                BlockDefinition definition = session.getBlockMappings().getBedrockBlock(session.getGeyser().getWorldManager().blockAt(session, pos));
+
+                packet.setBlockPosition(pos);
+                packet.setDefinition(definition);
+                packet.getFlags().add(UpdateBlockPacket.Flag.PRIORITY);
+                packet.setDataLayer(0);
+                session.sendUpstreamPacket(packet);
+            }, 50, TimeUnit.MILLISECONDS);
+        }
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/ShulkerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/ShulkerInventoryTranslator.java
index 464bf07f7..ccf0d32be 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/ShulkerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/ShulkerInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.math.vector.Vector3i;
 import org.cloudburstmc.nbt.NbtMap;
 import org.cloudburstmc.nbt.NbtMapBuilder;
@@ -80,4 +81,9 @@ public class ShulkerInventoryTranslator extends AbstractBlockInventoryTranslator
         }
         return super.javaSlotToBedrockContainer(javaSlot);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return ContainerType.CONTAINER;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
index 2a9e974f3..8067585d3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/SmithingInventoryTranslator.java
@@ -29,6 +29,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.updater.UIInventoryUpdater;
 import org.geysermc.geyser.level.block.Blocks;
 
@@ -74,4 +75,9 @@ public class SmithingInventoryTranslator extends AbstractBlockInventoryTranslato
             default -> super.javaSlotToBedrock(slot);
         };
     }
+
+    @Override
+    public ContainerType closeContainerType(Inventory inventory) {
+        return null;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java
index df7e15fef..90ef13fd5 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/StonecutterInventoryTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.inventory;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequest;
 import org.cloudburstmc.protocol.bedrock.data.inventory.itemstack.request.ItemStackRequestSlotData;
@@ -125,4 +126,9 @@ public class StonecutterInventoryTranslator extends AbstractBlockInventoryTransl
     public Inventory createInventory(String name, int windowId, ContainerType containerType, PlayerInventory playerInventory) {
         return new StonecutterContainer(name, windowId, this.size, containerType, playerInventory);
     }
+
+    @Override
+    public org.cloudburstmc.protocol.bedrock.data.inventory.@Nullable ContainerType closeContainerType(Inventory inventory) {
+        return org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType.STONECUTTER;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/DoubleChestInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/DoubleChestInventoryTranslator.java
index 856cc1876..93b9d8e04 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/DoubleChestInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/DoubleChestInventoryTranslator.java
@@ -34,6 +34,7 @@ import org.cloudburstmc.protocol.bedrock.packet.BlockEntityDataPacket;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerClosePacket;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerOpenPacket;
 import org.cloudburstmc.protocol.bedrock.packet.UpdateBlockPacket;
+import org.geysermc.geyser.GeyserImpl;
 import org.geysermc.geyser.inventory.Container;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.level.block.Blocks;
@@ -43,6 +44,7 @@ import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.level.physics.Direction;
 import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.session.GeyserSession;
+import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.level.block.entity.BlockEntityTranslator;
 import org.geysermc.geyser.translator.level.block.entity.DoubleChestBlockEntityTranslator;
 import org.geysermc.geyser.util.InventoryUtils;
@@ -146,13 +148,25 @@ public class DoubleChestInventoryTranslator extends ChestInventoryTranslator {
 
     @Override
     public void closeInventory(GeyserSession session, Inventory inventory) {
-        if (((Container) inventory).isUsingRealBlock()) {
+        if (!(inventory instanceof Container container)) {
+            GeyserImpl.getInstance().getLogger().warning("Tried to close a non-container inventory in a block inventory holder! Please report this error on discord.");
+            GeyserImpl.getInstance().getLogger().warning("Current inventory translator: " + session.getInventoryTranslator().getClass().getSimpleName());
+            GeyserImpl.getInstance().getLogger().warning("Current inventory: " + inventory.getClass().getSimpleName());
+            // Try to save ourselves? maybe?
+            // https://github.com/GeyserMC/Geyser/issues/4141
+            // TODO: improve once this issue is pinned down
+            session.setOpenInventory(null);
+            session.setInventoryTranslator(InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR);
+            return;
+        }
+
+        if (container.isUsingRealBlock()) {
             // No need to reset a block since we didn't change any blocks
             // But send a container close packet because we aren't destroying the original.
             ContainerClosePacket packet = new ContainerClosePacket();
             packet.setId((byte) inventory.getBedrockId());
             packet.setServerInitiated(true);
-            packet.setType(ContainerType.MINECART_CHEST);
+            packet.setType(ContainerType.CONTAINER);
             session.sendUpstreamPacket(packet);
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java
index 94bdeb281..30a9ff8d6 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/chest/SingleChestInventoryTranslator.java
@@ -67,6 +67,6 @@ public class SingleChestInventoryTranslator extends ChestInventoryTranslator {
 
     @Override
     public void closeInventory(GeyserSession session, Inventory inventory) {
-        holder.closeInventory(this, session, inventory);
+        holder.closeInventory(this, session, inventory, ContainerType.CONTAINER);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/BlastFurnaceInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/BlastFurnaceInventoryTranslator.java
index 185cafc51..5f2721ae3 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/BlastFurnaceInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/BlastFurnaceInventoryTranslator.java
@@ -25,9 +25,11 @@
 
 package org.geysermc.geyser.translator.inventory.furnace;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.level.block.Blocks;
 
 public class BlastFurnaceInventoryTranslator extends AbstractFurnaceInventoryTranslator {
@@ -42,4 +44,9 @@ public class BlastFurnaceInventoryTranslator extends AbstractFurnaceInventoryTra
         }
         return super.javaSlotToBedrockContainer(slot);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return ContainerType.BLAST_FURNACE;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/FurnaceInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/FurnaceInventoryTranslator.java
index bc96f7105..8a520dde2 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/FurnaceInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/FurnaceInventoryTranslator.java
@@ -25,9 +25,11 @@
 
 package org.geysermc.geyser.translator.inventory.furnace;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.level.block.Blocks;
 
 public class FurnaceInventoryTranslator extends AbstractFurnaceInventoryTranslator {
@@ -42,4 +44,9 @@ public class FurnaceInventoryTranslator extends AbstractFurnaceInventoryTranslat
         }
         return super.javaSlotToBedrockContainer(slot);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return ContainerType.FURNACE;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/SmokerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/SmokerInventoryTranslator.java
index 380446f09..2b676c424 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/SmokerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/furnace/SmokerInventoryTranslator.java
@@ -25,9 +25,11 @@
 
 package org.geysermc.geyser.translator.inventory.furnace;
 
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerSlotType;
 import org.cloudburstmc.protocol.bedrock.data.inventory.ContainerType;
 import org.geysermc.geyser.inventory.BedrockContainerSlot;
+import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.level.block.Blocks;
 
 public class SmokerInventoryTranslator extends AbstractFurnaceInventoryTranslator {
@@ -42,4 +44,9 @@ public class SmokerInventoryTranslator extends AbstractFurnaceInventoryTranslato
         }
         return super.javaSlotToBedrockContainer(slot);
     }
+
+    @Override
+    public @Nullable ContainerType closeContainerType(Inventory inventory) {
+        return ContainerType.SMOKER;
+    }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/AbstractHorseInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/AbstractHorseInventoryTranslator.java
index 538133e0e..06d62fadf 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/AbstractHorseInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/horse/AbstractHorseInventoryTranslator.java
@@ -50,6 +50,8 @@ public abstract class AbstractHorseInventoryTranslator extends BaseInventoryTran
 
     @Override
     public void closeInventory(GeyserSession session, Inventory inventory) {
+        // TODO find a way to implement
+        // Can cause inventory de-sync if the Java server requests an inventory close
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockContainerCloseTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockContainerCloseTranslator.java
index d675a07e9..4554bbe38 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockContainerCloseTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockContainerCloseTranslator.java
@@ -25,7 +25,6 @@
 
 package org.geysermc.geyser.translator.protocol.bedrock;
 
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
 import org.cloudburstmc.protocol.bedrock.packet.ContainerClosePacket;
 import org.geysermc.geyser.inventory.Inventory;
 import org.geysermc.geyser.inventory.MerchantContainer;
@@ -54,8 +53,7 @@ public class BedrockContainerCloseTranslator extends PacketTranslator<ContainerC
         Inventory openInventory = session.getOpenInventory();
         if (openInventory != null) {
             if (bedrockId == openInventory.getBedrockId()) {
-                ServerboundContainerClosePacket closeWindowPacket = new ServerboundContainerClosePacket(openInventory.getJavaId());
-                session.sendDownstreamGamePacket(closeWindowPacket);
+                InventoryUtils.sendJavaContainerClose(session, openInventory);
                 InventoryUtils.closeInventory(session, openInventory.getJavaId(), false);
             } else if (openInventory.isPending()) {
                 InventoryUtils.displayInventory(session, openInventory);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockLecternUpdateTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockLecternUpdateTranslator.java
index 31a2d74cf..4ba81c967 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockLecternUpdateTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockLecternUpdateTranslator.java
@@ -34,7 +34,6 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerButtonClickPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
 
 /**
  * Used to translate moving pages, or closing the inventory
@@ -52,8 +51,7 @@ public class BedrockLecternUpdateTranslator extends PacketTranslator<LecternUpda
 
         if (lecternContainer.getCurrentBedrockPage() == packet.getPage()) {
             // The same page means Bedrock is closing the window
-            ServerboundContainerClosePacket closeWindowPacket = new ServerboundContainerClosePacket(lecternContainer.getJavaId());
-            session.sendDownstreamGamePacket(closeWindowPacket);
+            InventoryUtils.sendJavaContainerClose(session, lecternContainer);
             InventoryUtils.closeInventory(session, lecternContainer.getJavaId(), false);
         } else {
             // Each "page" Bedrock gives to us actually represents two pages (think opening a book and seeing two pages)
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java
index c5786d9aa..d9c4566dd 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java
@@ -38,6 +38,7 @@ public class JavaContainerCloseTranslator extends PacketTranslator<ClientboundCo
     public void translate(GeyserSession session, ClientboundContainerClosePacket packet) {
         // Sometimes the server can request a window close of ID 0... when the window isn't even open
         // Don't confirm in this instance
+        session.setServerRequestedClosePlayerInventory(packet.getContainerId() == 0);
         InventoryUtils.closeInventory(session, packet.getContainerId(), (session.getOpenInventory() != null && session.getOpenInventory().getJavaId() == packet.getContainerId()));
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenBookTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenBookTranslator.java
index 172880725..9189898f7 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenBookTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaOpenBookTranslator.java
@@ -36,7 +36,6 @@ import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundOpenBookPacket;
-import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClosePacket;
 
 import java.util.Objects;
 
@@ -65,8 +64,7 @@ public class JavaOpenBookTranslator extends PacketTranslator<ClientboundOpenBook
             if (openInventory != null) {
                 InventoryUtils.closeInventory(session, openInventory.getJavaId(), true);
 
-                ServerboundContainerClosePacket closeWindowPacket = new ServerboundContainerClosePacket(openInventory.getJavaId());
-                session.sendDownstreamGamePacket(closeWindowPacket);
+                InventoryUtils.sendJavaContainerClose(session, openInventory);
             }
 
             InventoryTranslator translator = InventoryTranslator.inventoryTranslator(ContainerType.LECTERN);
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 042f37a89..4266c33ce 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -119,8 +119,7 @@ public class InventoryUtils {
             }
         } else {
             // Can occur if we e.g. did not find a spot to put a fake container in
-            ServerboundContainerClosePacket closePacket = new ServerboundContainerClosePacket(inventory.getJavaId());
-            session.sendDownstreamGamePacket(closePacket);
+            sendJavaContainerClose(session, inventory);
             session.setOpenInventory(null);
             session.setInventoryTranslator(InventoryTranslator.PLAYER_INVENTORY_TRANSLATOR);
         }
@@ -161,6 +160,13 @@ public class InventoryUtils {
         }
     }
 
+    public static void sendJavaContainerClose(GeyserSession session, Inventory inventory) {
+        if (inventory.shouldConfirmContainerClose()) {
+            ServerboundContainerClosePacket closeWindowPacket = new ServerboundContainerClosePacket(inventory.getJavaId());
+            session.sendDownstreamGamePacket(closeWindowPacket);
+        }
+    }
+
     /**
      * Finds a usable block space in the world to place a fake inventory block, and returns the position.
      */

From 4a88117753d262e3398dcd65350b888a2618d4dc Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 19 Feb 2025 14:27:22 +0100
Subject: [PATCH 159/165] Update to latest MCPL changes, fix issues with the
 force-player-inventory workaround

---
 .../geyser/entity/EntityDefinition.java       |   7 +-
 .../geyser/entity/EntityDefinitions.java      | 314 +++++++++---------
 .../geyser/entity/type/FireworkEntity.java    |   2 +-
 .../geyser/entity/type/ItemFrameEntity.java   |   2 +-
 .../geyser/entity/type/LivingEntity.java      |   4 +-
 .../entity/type/ThrownPotionEntity.java       |   6 +-
 .../living/animal/tameable/WolfEntity.java    |   4 +-
 .../geyser/inventory/AnvilContainer.java      |   4 +-
 .../geyser/inventory/GeyserItemStack.java     |   7 +-
 .../geysermc/geyser/inventory/Inventory.java  |   4 +-
 .../updater/AnvilInventoryUpdater.java        |  20 +-
 .../geysermc/geyser/item/type/ArmorItem.java  |   4 +-
 .../geysermc/geyser/item/type/ArrowItem.java  |   4 +-
 .../geysermc/geyser/item/type/BannerItem.java |  10 +-
 .../geyser/item/type/CompassItem.java         |   6 +-
 .../geyser/item/type/CrossbowItem.java        |   4 +-
 .../geyser/item/type/DecoratedPotItem.java    |   4 +-
 .../geyser/item/type/EnchantedBookItem.java   |   6 +-
 .../geyser/item/type/FilledMapItem.java       |   4 +-
 .../geyser/item/type/FireworkRocketItem.java  |   6 +-
 .../geyser/item/type/FireworkStarItem.java    |   6 +-
 .../geyser/item/type/GoatHornItem.java        |  12 +-
 .../org/geysermc/geyser/item/type/Item.java   |  19 +-
 .../geysermc/geyser/item/type/LightItem.java  |   4 +-
 .../geysermc/geyser/item/type/MapItem.java    |   4 +-
 .../geyser/item/type/OminousBottleItem.java   |   6 +-
 .../geyser/item/type/PlayerHeadItem.java      |   6 +-
 .../geysermc/geyser/item/type/PotionItem.java |   6 +-
 .../geysermc/geyser/item/type/ShieldItem.java |   6 +-
 .../geyser/item/type/ShulkerBoxItem.java      |   8 +-
 .../geyser/item/type/TippedArrowItem.java     |   4 +-
 .../item/type/TropicalFishBucketItem.java     |   4 +-
 .../geyser/item/type/WritableBookItem.java    |   4 +-
 .../geyser/item/type/WrittenBookItem.java     |   4 +-
 .../geysermc/geyser/level/WorldManager.java   |   3 +-
 .../geyser/level/block/type/SkullBlock.java   |   6 +-
 .../CustomItemRegistryPopulator.java          |   7 +-
 .../DataComponentRegistryPopulator.java       |   3 +-
 .../geyser/session/GeyserSession.java         |   2 +-
 .../geyser/session/cache/BundleCache.java     |   4 +-
 .../geyser/session/cache/WorldCache.java      |   4 +-
 .../entity/EntityMetadataTranslator.java      |   2 +-
 .../inventory/BundleInventoryTranslator.java  |   6 +-
 .../inventory/InventoryTranslator.java        |   7 +-
 .../inventory/LecternInventoryTranslator.java |   6 +-
 .../inventory/LoomInventoryTranslator.java    |   6 +-
 .../inventory/PlayerInventoryTranslator.java  |  14 +-
 .../translator/item/CustomItemTranslator.java |   8 +-
 .../translator/item/ItemTranslator.java       |  36 +-
 .../entity/VaultBlockEntityTranslator.java    |   6 +-
 .../bedrock/BedrockBookEditTranslator.java    |   6 +-
 ...BedrockInventoryTransactionTranslator.java |   4 +-
 .../java/JavaRecipeBookAddTranslator.java     |   2 +-
 .../entity/JavaSetEquipmentTranslator.java    |   6 +-
 .../JavaContainerCloseTranslator.java         |   3 +-
 .../BlockSoundInteractionTranslator.java      |   4 +-
 .../org/geysermc/geyser/util/BlockUtils.java  |   6 +-
 .../geysermc/geyser/util/InventoryUtils.java  |   2 +-
 .../org/geysermc/geyser/util/ItemUtils.java   |   8 +-
 .../network/ScoreboardIssueTests.java         |   8 +-
 gradle/libs.versions.toml                     |   2 +-
 61 files changed, 346 insertions(+), 340 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java
index 5b4dc0969..d26a25d2c 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinition.java
@@ -26,9 +26,6 @@
 package org.geysermc.geyser.entity;
 
 import it.unimi.dsi.fastutil.objects.ObjectArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.function.BiConsumer;
 import lombok.Setter;
 import lombok.experimental.Accessors;
 import org.geysermc.geyser.GeyserImpl;
@@ -41,6 +38,10 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetad
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
 
+import java.util.List;
+import java.util.Locale;
+import java.util.function.BiConsumer;
+
 /**
  * Represents data for an entity. This includes properties such as height and width, as well as the list of entity
  * metadata translators needed to translate the properties sent from the server. The translators are structured in such
diff --git a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
index b17e3d21d..c8488238d 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/EntityDefinitions.java
@@ -147,7 +147,7 @@ import org.geysermc.geyser.entity.type.living.monster.raid.VindicatorEntity;
 import org.geysermc.geyser.entity.type.player.PlayerEntity;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.FloatEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType;
@@ -310,14 +310,14 @@ public final class EntityDefinitions {
 
     static {
         EntityDefinition<Entity> entityBase = EntityDefinition.builder(Entity::new)
-                .addTranslator(MetadataType.BYTE, Entity::setFlags)
-                .addTranslator(MetadataType.INT, Entity::setAir) // Air/bubbles
-                .addTranslator(MetadataType.OPTIONAL_CHAT, Entity::setDisplayName)
-                .addTranslator(MetadataType.BOOLEAN, Entity::setDisplayNameVisible)
-                .addTranslator(MetadataType.BOOLEAN, Entity::setSilent)
-                .addTranslator(MetadataType.BOOLEAN, Entity::setGravity)
-                .addTranslator(MetadataType.POSE, (entity, entityMetadata) -> entity.setPose(entityMetadata.getValue()))
-                .addTranslator(MetadataType.INT, Entity::setFreezing)
+                .addTranslator(MetadataTypes.BYTE, Entity::setFlags)
+                .addTranslator(MetadataTypes.INT, Entity::setAir) // Air/bubbles
+                .addTranslator(MetadataTypes.OPTIONAL_CHAT, Entity::setDisplayName)
+                .addTranslator(MetadataTypes.BOOLEAN, Entity::setDisplayNameVisible)
+                .addTranslator(MetadataTypes.BOOLEAN, Entity::setSilent)
+                .addTranslator(MetadataTypes.BOOLEAN, Entity::setGravity)
+                .addTranslator(MetadataTypes.POSE, (entity, entityMetadata) -> entity.setPose(entityMetadata.getValue()))
+                .addTranslator(MetadataTypes.INT, Entity::setFreezing)
                 .build();
 
         // Extends entity
@@ -325,9 +325,9 @@ public final class EntityDefinitions {
             AREA_EFFECT_CLOUD = EntityDefinition.inherited(AreaEffectCloudEntity::new, entityBase)
                     .type(EntityType.AREA_EFFECT_CLOUD)
                     .height(0.5f).width(1.0f)
-                    .addTranslator(MetadataType.FLOAT, AreaEffectCloudEntity::setRadius)
+                    .addTranslator(MetadataTypes.FLOAT, AreaEffectCloudEntity::setRadius)
                     .addTranslator(null) // Waiting
-                    .addTranslator(MetadataType.PARTICLE, AreaEffectCloudEntity::setParticle)
+                    .addTranslator(MetadataTypes.PARTICLE, AreaEffectCloudEntity::setParticle)
                     .build();
             DRAGON_FIREBALL = EntityDefinition.inherited(FireballEntity::new, entityBase)
                     .type(EntityType.DRAGON_FIREBALL)
@@ -337,8 +337,8 @@ public final class EntityDefinitions {
                     .type(EntityType.END_CRYSTAL)
                     .heightAndWidth(2.0f)
                     .identifier("minecraft:ender_crystal")
-                    .addTranslator(MetadataType.OPTIONAL_POSITION, EnderCrystalEntity::setBlockTarget)
-                    .addTranslator(MetadataType.BOOLEAN,
+                    .addTranslator(MetadataTypes.OPTIONAL_POSITION, EnderCrystalEntity::setBlockTarget)
+                    .addTranslator(MetadataTypes.BOOLEAN,
                             (enderCrystalEntity, entityMetadata) -> enderCrystalEntity.setFlag(EntityFlag.SHOW_BOTTOM, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue())) // There is a base located on the ender crystal
                     .build();
             EXPERIENCE_ORB = EntityDefinition.inherited(ExpOrbEntity::new, entityBase)
@@ -365,21 +365,21 @@ public final class EntityDefinitions {
                     .type(EntityType.FIREWORK_ROCKET)
                     .heightAndWidth(0.25f)
                     .identifier("minecraft:fireworks_rocket")
-                    .addTranslator(MetadataType.ITEM, FireworkEntity::setFireworkItem)
-                    .addTranslator(MetadataType.OPTIONAL_VARINT, FireworkEntity::setPlayerGliding)
+                    .addTranslator(MetadataTypes.ITEM, FireworkEntity::setFireworkItem)
+                    .addTranslator(MetadataTypes.OPTIONAL_VARINT, FireworkEntity::setPlayerGliding)
                     .addTranslator(null) // Shot at angle
                     .build();
             FISHING_BOBBER = EntityDefinition.<FishingHookEntity>inherited(null, entityBase)
                     .type(EntityType.FISHING_BOBBER)
                     .identifier("minecraft:fishing_hook")
-                    .addTranslator(MetadataType.INT, FishingHookEntity::setHookedEntity)
+                    .addTranslator(MetadataTypes.INT, FishingHookEntity::setHookedEntity)
                     .addTranslator(null) // Biting TODO check
                     .build();
             ITEM = EntityDefinition.inherited(ItemEntity::new, entityBase)
                     .type(EntityType.ITEM)
                     .heightAndWidth(0.25f)
                     .offset(0.125f)
-                    .addTranslator(MetadataType.ITEM, ItemEntity::setItem)
+                    .addTranslator(MetadataTypes.ITEM, ItemEntity::setItem)
                     .build();
             LEASH_KNOT = EntityDefinition.inherited(LeashKnotEntity::new, entityBase)
                     .type(EntityType.LEASH_KNOT)
@@ -394,7 +394,7 @@ public final class EntityDefinitions {
                     .build();
             PAINTING = EntityDefinition.<PaintingEntity>inherited(null, entityBase)
                     .type(EntityType.PAINTING)
-                    .addTranslator(MetadataType.PAINTING_VARIANT, PaintingEntity::setPaintingType)
+                    .addTranslator(MetadataTypes.PAINTING_VARIANT, PaintingEntity::setPaintingType)
                     .build();
             SHULKER_BULLET = EntityDefinition.inherited(ThrowableEntity::new, entityBase)
                     .type(EntityType.SHULKER_BULLET)
@@ -404,14 +404,14 @@ public final class EntityDefinitions {
                     .type(EntityType.TNT)
                     .heightAndWidth(0.98f)
                     .offset(0.49f)
-                    .addTranslator(MetadataType.INT, TNTEntity::setFuseLength)
+                    .addTranslator(MetadataTypes.INT, TNTEntity::setFuseLength)
                     .build();
 
             EntityDefinition<DisplayBaseEntity> displayBase = EntityDefinition.inherited(DisplayBaseEntity::new, entityBase)
                     .addTranslator(null) // Interpolation delay
                     .addTranslator(null) // Transformation interpolation duration
                     .addTranslator(null) // Position/Rotation interpolation duration
-                    .addTranslator(MetadataType.VECTOR3, DisplayBaseEntity::setTranslation) // Translation
+                    .addTranslator(MetadataTypes.VECTOR3, DisplayBaseEntity::setTranslation) // Translation
                     .addTranslator(null) // Scale
                     .addTranslator(null) // Left rotation
                     .addTranslator(null) // Right rotation
@@ -428,7 +428,7 @@ public final class EntityDefinitions {
                     .type(EntityType.TEXT_DISPLAY)
                     .identifier("minecraft:armor_stand")
                     .offset(-0.5f)
-                    .addTranslator(MetadataType.CHAT, TextDisplayEntity::setText)
+                    .addTranslator(MetadataTypes.CHAT, TextDisplayEntity::setText)
                     .addTranslator(null) // Line width
                     .addTranslator(null) // Background color
                     .addTranslator(null) // Text opacity
@@ -439,9 +439,9 @@ public final class EntityDefinitions {
                     .type(EntityType.INTERACTION)
                     .heightAndWidth(1.0f) // default size until server specifies otherwise
                     .identifier("minecraft:armor_stand")
-                    .addTranslator(MetadataType.FLOAT, InteractionEntity::setWidth)
-                    .addTranslator(MetadataType.FLOAT, InteractionEntity::setHeight)
-                    .addTranslator(MetadataType.BOOLEAN, InteractionEntity::setResponse)
+                    .addTranslator(MetadataTypes.FLOAT, InteractionEntity::setWidth)
+                    .addTranslator(MetadataTypes.FLOAT, InteractionEntity::setHeight)
+                    .addTranslator(MetadataTypes.BOOLEAN, InteractionEntity::setResponse)
                     .build();
 
             EntityDefinition<FireballEntity> fireballBase = EntityDefinition.inherited(FireballEntity::new, entityBase)
@@ -457,7 +457,7 @@ public final class EntityDefinitions {
                     .build();
 
             EntityDefinition<ThrowableItemEntity> throwableItemBase = EntityDefinition.inherited(ThrowableItemEntity::new, entityBase)
-                    .addTranslator(MetadataType.ITEM, ThrowableItemEntity::setItem)
+                    .addTranslator(MetadataTypes.ITEM, ThrowableItemEntity::setItem)
                     .build();
             EGG = EntityDefinition.inherited(ThrowableItemEntity::new, throwableItemBase)
                     .type(EntityType.EGG)
@@ -495,14 +495,14 @@ public final class EntityDefinitions {
                     .build();
 
             EntityDefinition<AbstractArrowEntity> abstractArrowBase = EntityDefinition.inherited(AbstractArrowEntity::new, entityBase)
-                    .addTranslator(MetadataType.BYTE, AbstractArrowEntity::setArrowFlags)
+                    .addTranslator(MetadataTypes.BYTE, AbstractArrowEntity::setArrowFlags)
                     .addTranslator(null) // "Piercing level"
                     .addTranslator(null) // If the arrow is in the ground
                     .build();
             ARROW = EntityDefinition.inherited(ArrowEntity::new, abstractArrowBase)
                     .type(EntityType.ARROW)
                     .heightAndWidth(0.25f)
-                    .addTranslator(MetadataType.INT, ArrowEntity::setPotionEffectColor)
+                    .addTranslator(MetadataTypes.INT, ArrowEntity::setPotionEffectColor)
                     .build();
             SPECTRAL_ARROW = EntityDefinition.inherited(abstractArrowBase.factory(), abstractArrowBase)
                     .type(EntityType.SPECTRAL_ARROW)
@@ -513,14 +513,14 @@ public final class EntityDefinitions {
                     .type(EntityType.TRIDENT)
                     .identifier("minecraft:thrown_trident")
                     .addTranslator(null) // Loyalty
-                    .addTranslator(MetadataType.BOOLEAN, (tridentEntity, entityMetadata) -> tridentEntity.setFlag(EntityFlag.ENCHANTED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                    .addTranslator(MetadataTypes.BOOLEAN, (tridentEntity, entityMetadata) -> tridentEntity.setFlag(EntityFlag.ENCHANTED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
                     .build();
 
             // Item frames are handled differently as they are blocks, not items, in Bedrock
             ITEM_FRAME = EntityDefinition.<ItemFrameEntity>inherited(null, entityBase)
                     .type(EntityType.ITEM_FRAME)
-                    .addTranslator(MetadataType.ITEM, ItemFrameEntity::setItemInFrame)
-                    .addTranslator(MetadataType.INT, ItemFrameEntity::setItemRotation)
+                    .addTranslator(MetadataTypes.ITEM, ItemFrameEntity::setItemInFrame)
+                    .addTranslator(MetadataTypes.INT, ItemFrameEntity::setItemRotation)
                     .build();
             GLOW_ITEM_FRAME = EntityDefinition.inherited(ITEM_FRAME.factory(), ITEM_FRAME)
                     .type(EntityType.GLOW_ITEM_FRAME)
@@ -530,27 +530,27 @@ public final class EntityDefinitions {
                     .type(EntityType.MINECART)
                     .height(0.7f).width(0.98f)
                     .offset(0.35f)
-                    .addTranslator(MetadataType.INT, (minecartEntity, entityMetadata) -> minecartEntity.getDirtyMetadata().put(EntityDataTypes.STRUCTURAL_INTEGRITY, entityMetadata.getValue()))
-                    .addTranslator(MetadataType.INT, (minecartEntity, entityMetadata) -> minecartEntity.getDirtyMetadata().put(EntityDataTypes.HURT_DIRECTION, entityMetadata.getValue())) // Direction in which the minecart is shaking
-                    .addTranslator(MetadataType.FLOAT, (minecartEntity, entityMetadata) ->
+                    .addTranslator(MetadataTypes.INT, (minecartEntity, entityMetadata) -> minecartEntity.getDirtyMetadata().put(EntityDataTypes.STRUCTURAL_INTEGRITY, entityMetadata.getValue()))
+                    .addTranslator(MetadataTypes.INT, (minecartEntity, entityMetadata) -> minecartEntity.getDirtyMetadata().put(EntityDataTypes.HURT_DIRECTION, entityMetadata.getValue())) // Direction in which the minecart is shaking
+                    .addTranslator(MetadataTypes.FLOAT, (minecartEntity, entityMetadata) ->
                             // Power in Java, hurt ticks in Bedrock
                             minecartEntity.getDirtyMetadata().put(EntityDataTypes.HURT_TICKS, Math.min((int) ((FloatEntityMetadata) entityMetadata).getPrimitiveValue(), 15)))
-                    .addTranslator(MetadataType.INT, MinecartEntity::setCustomBlock)
-                    .addTranslator(MetadataType.INT, MinecartEntity::setCustomBlockOffset)
-                    .addTranslator(MetadataType.BOOLEAN, MinecartEntity::setShowCustomBlock)
+                    .addTranslator(MetadataTypes.INT, MinecartEntity::setCustomBlock)
+                    .addTranslator(MetadataTypes.INT, MinecartEntity::setCustomBlockOffset)
+                    .addTranslator(MetadataTypes.BOOLEAN, MinecartEntity::setShowCustomBlock)
                     .build();
             CHEST_MINECART = EntityDefinition.inherited(MINECART.factory(), MINECART)
                     .type(EntityType.CHEST_MINECART)
                     .build();
             COMMAND_BLOCK_MINECART = EntityDefinition.inherited(CommandBlockMinecartEntity::new, MINECART)
                     .type(EntityType.COMMAND_BLOCK_MINECART)
-                    .addTranslator(MetadataType.STRING, (entity, entityMetadata) -> entity.getDirtyMetadata().put(EntityDataTypes.COMMAND_BLOCK_NAME, entityMetadata.getValue()))
-                    .addTranslator(MetadataType.CHAT, (entity, entityMetadata) -> entity.getDirtyMetadata().put(EntityDataTypes.COMMAND_BLOCK_LAST_OUTPUT, MessageTranslator.convertMessage(entityMetadata.getValue())))
+                    .addTranslator(MetadataTypes.STRING, (entity, entityMetadata) -> entity.getDirtyMetadata().put(EntityDataTypes.COMMAND_BLOCK_NAME, entityMetadata.getValue()))
+                    .addTranslator(MetadataTypes.CHAT, (entity, entityMetadata) -> entity.getDirtyMetadata().put(EntityDataTypes.COMMAND_BLOCK_LAST_OUTPUT, MessageTranslator.convertMessage(entityMetadata.getValue())))
                     .build();
             FURNACE_MINECART = EntityDefinition.inherited(FurnaceMinecartEntity::new, MINECART)
                     .type(EntityType.FURNACE_MINECART)
                     .identifier("minecraft:minecart")
-                    .addTranslator(MetadataType.BOOLEAN, FurnaceMinecartEntity::setHasFuel)
+                    .addTranslator(MetadataTypes.BOOLEAN, FurnaceMinecartEntity::setHasFuel)
                     .build();
             HOPPER_MINECART = EntityDefinition.inherited(MINECART.factory(), MINECART)
                     .type(EntityType.HOPPER_MINECART)
@@ -566,7 +566,7 @@ public final class EntityDefinitions {
             WITHER_SKULL = EntityDefinition.inherited(WitherSkullEntity::new, entityBase)
                     .type(EntityType.WITHER_SKULL)
                     .heightAndWidth(0.3125f)
-                    .addTranslator(MetadataType.BOOLEAN, WitherSkullEntity::setDangerous)
+                    .addTranslator(MetadataTypes.BOOLEAN, WitherSkullEntity::setDangerous)
                     .build();
             WITHER_SKULL_DANGEROUS = EntityDefinition.inherited(WITHER_SKULL.factory(), WITHER_SKULL)
                     .build(false);
@@ -577,14 +577,14 @@ public final class EntityDefinitions {
             EntityDefinition<BoatEntity> boatBase = EntityDefinition.<BoatEntity>inherited(null, entityBase)
                 .height(0.6f).width(1.6f)
                 .offset(0.35f)
-                .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_TICKS, entityMetadata.getValue())) // Time since last hit
-                .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_DIRECTION, entityMetadata.getValue())) // Rocking direction
-                .addTranslator(MetadataType.FLOAT, (boatEntity, entityMetadata) ->
+                .addTranslator(MetadataTypes.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_TICKS, entityMetadata.getValue())) // Time since last hit
+                .addTranslator(MetadataTypes.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.HURT_DIRECTION, entityMetadata.getValue())) // Rocking direction
+                .addTranslator(MetadataTypes.FLOAT, (boatEntity, entityMetadata) ->
                     // 'Health' in Bedrock, damage taken in Java - it makes motion in Bedrock
                     boatEntity.getDirtyMetadata().put(EntityDataTypes.STRUCTURAL_INTEGRITY, 40 - ((int) ((FloatEntityMetadata) entityMetadata).getPrimitiveValue())))
-                .addTranslator(MetadataType.BOOLEAN, BoatEntity::setPaddlingLeft)
-                .addTranslator(MetadataType.BOOLEAN, BoatEntity::setPaddlingRight)
-                .addTranslator(MetadataType.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.BOAT_BUBBLE_TIME, entityMetadata.getValue())) // May not actually do anything
+                .addTranslator(MetadataTypes.BOOLEAN, BoatEntity::setPaddlingLeft)
+                .addTranslator(MetadataTypes.BOOLEAN, BoatEntity::setPaddlingRight)
+                .addTranslator(MetadataTypes.INT, (boatEntity, entityMetadata) -> boatEntity.getDirtyMetadata().put(EntityDataTypes.BOAT_BUBBLE_TIME, entityMetadata.getValue())) // May not actually do anything
                 .build();
 
             ACACIA_BOAT = buildBoat(boatBase, EntityType.ACACIA_BOAT, BoatEntity.BoatVariant.ACACIA);
@@ -614,41 +614,41 @@ public final class EntityDefinitions {
         }
 
         EntityDefinition<LivingEntity> livingEntityBase = EntityDefinition.inherited(LivingEntity::new, entityBase)
-                .addTranslator(MetadataType.BYTE, LivingEntity::setLivingEntityFlags)
-                .addTranslator(MetadataType.FLOAT, LivingEntity::setHealth)
-                .addTranslator(MetadataType.PARTICLES, LivingEntity::setParticles)
-                .addTranslator(MetadataType.BOOLEAN,
+                .addTranslator(MetadataTypes.BYTE, LivingEntity::setLivingEntityFlags)
+                .addTranslator(MetadataTypes.FLOAT, LivingEntity::setHealth)
+                .addTranslator(MetadataTypes.PARTICLES, LivingEntity::setParticles)
+                .addTranslator(MetadataTypes.BOOLEAN,
                         (livingEntity, entityMetadata) -> livingEntity.getDirtyMetadata().put(EntityDataTypes.EFFECT_AMBIENCE, (byte) (((BooleanEntityMetadata) entityMetadata).getPrimitiveValue() ? 1 : 0)))
                 .addTranslator(null) // Arrow count
                 .addTranslator(null) // Stinger count
-                .addTranslator(MetadataType.OPTIONAL_POSITION, LivingEntity::setBedPosition)
+                .addTranslator(MetadataTypes.OPTIONAL_POSITION, LivingEntity::setBedPosition)
                 .build();
 
         ARMOR_STAND = EntityDefinition.inherited(ArmorStandEntity::new, livingEntityBase)
                 .type(EntityType.ARMOR_STAND)
                 .height(1.975f).width(0.5f)
-                .addTranslator(MetadataType.BYTE, ArmorStandEntity::setArmorStandFlags)
-                .addTranslator(MetadataType.ROTATION, ArmorStandEntity::setHeadRotation)
-                .addTranslator(MetadataType.ROTATION, ArmorStandEntity::setBodyRotation)
-                .addTranslator(MetadataType.ROTATION, ArmorStandEntity::setLeftArmRotation)
-                .addTranslator(MetadataType.ROTATION, ArmorStandEntity::setRightArmRotation)
-                .addTranslator(MetadataType.ROTATION, ArmorStandEntity::setLeftLegRotation)
-                .addTranslator(MetadataType.ROTATION, ArmorStandEntity::setRightLegRotation)
+                .addTranslator(MetadataTypes.BYTE, ArmorStandEntity::setArmorStandFlags)
+                .addTranslator(MetadataTypes.ROTATION, ArmorStandEntity::setHeadRotation)
+                .addTranslator(MetadataTypes.ROTATION, ArmorStandEntity::setBodyRotation)
+                .addTranslator(MetadataTypes.ROTATION, ArmorStandEntity::setLeftArmRotation)
+                .addTranslator(MetadataTypes.ROTATION, ArmorStandEntity::setRightArmRotation)
+                .addTranslator(MetadataTypes.ROTATION, ArmorStandEntity::setLeftLegRotation)
+                .addTranslator(MetadataTypes.ROTATION, ArmorStandEntity::setRightLegRotation)
                 .build();
         PLAYER = EntityDefinition.<PlayerEntity>inherited(null, livingEntityBase)
                 .type(EntityType.PLAYER)
                 .height(1.8f).width(0.6f)
                 .offset(1.62f)
-                .addTranslator(MetadataType.FLOAT, PlayerEntity::setAbsorptionHearts)
+                .addTranslator(MetadataTypes.FLOAT, PlayerEntity::setAbsorptionHearts)
                 .addTranslator(null) // Player score
-                .addTranslator(MetadataType.BYTE, PlayerEntity::setSkinVisibility)
+                .addTranslator(MetadataTypes.BYTE, PlayerEntity::setSkinVisibility)
                 .addTranslator(null) // Player main hand
-                .addTranslator(MetadataType.NBT_TAG, PlayerEntity::setLeftParrot)
-                .addTranslator(MetadataType.NBT_TAG, PlayerEntity::setRightParrot)
+                .addTranslator(MetadataTypes.NBT_TAG, PlayerEntity::setLeftParrot)
+                .addTranslator(MetadataTypes.NBT_TAG, PlayerEntity::setRightParrot)
                 .build();
 
         EntityDefinition<MobEntity> mobEntityBase = EntityDefinition.inherited(MobEntity::new, livingEntityBase)
-                .addTranslator(MetadataType.BYTE, MobEntity::setMobFlags)
+                .addTranslator(MetadataTypes.BYTE, MobEntity::setMobFlags)
                 .build();
 
         // Extends mob
@@ -656,23 +656,23 @@ public final class EntityDefinitions {
             ALLAY = EntityDefinition.inherited(AllayEntity::new, mobEntityBase)
                     .type(EntityType.ALLAY)
                     .height(0.6f).width(0.35f)
-                    .addTranslator(MetadataType.BOOLEAN, AllayEntity::setDancing)
-                    .addTranslator(MetadataType.BOOLEAN, AllayEntity::setCanDuplicate)
+                    .addTranslator(MetadataTypes.BOOLEAN, AllayEntity::setDancing)
+                    .addTranslator(MetadataTypes.BOOLEAN, AllayEntity::setCanDuplicate)
                     .build();
             BAT = EntityDefinition.inherited(BatEntity::new, mobEntityBase)
                     .type(EntityType.BAT)
                     .height(0.9f).width(0.5f)
-                    .addTranslator(MetadataType.BYTE, BatEntity::setBatFlags)
+                    .addTranslator(MetadataTypes.BYTE, BatEntity::setBatFlags)
                     .build();
             BOGGED = EntityDefinition.inherited(BoggedEntity::new, mobEntityBase)
                     .type(EntityType.BOGGED)
                     .height(1.99f).width(0.6f)
-                    .addTranslator(MetadataType.BOOLEAN, BoggedEntity::setSheared)
+                    .addTranslator(MetadataTypes.BOOLEAN, BoggedEntity::setSheared)
                     .build();
             BLAZE = EntityDefinition.inherited(BlazeEntity::new, mobEntityBase)
                     .type(EntityType.BLAZE)
                     .height(1.8f).width(0.6f)
-                    .addTranslator(MetadataType.BYTE, BlazeEntity::setBlazeFlags)
+                    .addTranslator(MetadataTypes.BYTE, BlazeEntity::setBlazeFlags)
                     .build();
             BREEZE = EntityDefinition.inherited(BreezeEntity::new, mobEntityBase)
                     .type(EntityType.BREEZE)
@@ -681,10 +681,10 @@ public final class EntityDefinitions {
             CREAKING = EntityDefinition.inherited(CreakingEntity::new, mobEntityBase)
                     .type(EntityType.CREAKING)
                     .height(2.7f).width(0.9f)
-                    .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setCanMove)
-                    .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setActive)
-                    .addTranslator(MetadataType.BOOLEAN, CreakingEntity::setIsTearingDown)
-                    .addTranslator(MetadataType.OPTIONAL_POSITION, CreakingEntity::setHomePos)
+                    .addTranslator(MetadataTypes.BOOLEAN, CreakingEntity::setCanMove)
+                    .addTranslator(MetadataTypes.BOOLEAN, CreakingEntity::setActive)
+                    .addTranslator(MetadataTypes.BOOLEAN, CreakingEntity::setIsTearingDown)
+                    .addTranslator(MetadataTypes.OPTIONAL_POSITION, CreakingEntity::setHomePos)
                     .properties(new GeyserEntityProperties.Builder()
                         .addEnum(CreakingEntity.CREAKING_STATE,
                             "neutral",
@@ -699,16 +699,16 @@ public final class EntityDefinitions {
                     .type(EntityType.CREEPER)
                     .height(1.7f).width(0.6f)
                     .offset(1.62f)
-                    .addTranslator(MetadataType.INT, CreeperEntity::setSwelling)
-                    .addTranslator(MetadataType.BOOLEAN, (entity, entityMetadata) -> entity.setFlag(EntityFlag.POWERED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
-                    .addTranslator(MetadataType.BOOLEAN, CreeperEntity::setIgnited)
+                    .addTranslator(MetadataTypes.INT, CreeperEntity::setSwelling)
+                    .addTranslator(MetadataTypes.BOOLEAN, (entity, entityMetadata) -> entity.setFlag(EntityFlag.POWERED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                    .addTranslator(MetadataTypes.BOOLEAN, CreeperEntity::setIgnited)
                     .build();
             ENDERMAN = EntityDefinition.inherited(EndermanEntity::new, mobEntityBase)
                     .type(EntityType.ENDERMAN)
                     .height(2.9f).width(0.6f)
-                    .addTranslator(MetadataType.OPTIONAL_BLOCK_STATE, EndermanEntity::setCarriedBlock)
-                    .addTranslator(MetadataType.BOOLEAN, EndermanEntity::setScreaming)
-                    .addTranslator(MetadataType.BOOLEAN, EndermanEntity::setAngry)
+                    .addTranslator(MetadataTypes.OPTIONAL_BLOCK_STATE, EndermanEntity::setCarriedBlock)
+                    .addTranslator(MetadataTypes.BOOLEAN, EndermanEntity::setScreaming)
+                    .addTranslator(MetadataTypes.BOOLEAN, EndermanEntity::setAngry)
                     .build();
             ENDERMITE = EntityDefinition.inherited(MonsterEntity::new, mobEntityBase)
                     .type(EntityType.ENDERMITE)
@@ -716,12 +716,12 @@ public final class EntityDefinitions {
                     .build();
             ENDER_DRAGON = EntityDefinition.inherited(EnderDragonEntity::new, mobEntityBase)
                     .type(EntityType.ENDER_DRAGON)
-                    .addTranslator(MetadataType.INT, EnderDragonEntity::setPhase)
+                    .addTranslator(MetadataTypes.INT, EnderDragonEntity::setPhase)
                     .build();
             GHAST = EntityDefinition.inherited(GhastEntity::new, mobEntityBase)
                     .type(EntityType.GHAST)
                     .heightAndWidth(4.0f)
-                    .addTranslator(MetadataType.BOOLEAN, GhastEntity::setGhastAttacking)
+                    .addTranslator(MetadataTypes.BOOLEAN, GhastEntity::setGhastAttacking)
                     .build();
             GIANT = EntityDefinition.inherited(GiantEntity::new, mobEntityBase)
                     .type(EntityType.GIANT)
@@ -738,7 +738,7 @@ public final class EntityDefinitions {
                     .type(EntityType.PHANTOM)
                     .height(0.5f).width(0.9f)
                     .offset(0.6f)
-                    .addTranslator(MetadataType.INT, PhantomEntity::setPhantomScale)
+                    .addTranslator(MetadataTypes.INT, PhantomEntity::setPhantomScale)
                     .build();
             SILVERFISH = EntityDefinition.inherited(MonsterEntity::new, mobEntityBase)
                     .type(EntityType.SILVERFISH)
@@ -747,26 +747,26 @@ public final class EntityDefinitions {
             SHULKER = EntityDefinition.inherited(ShulkerEntity::new, mobEntityBase)
                     .type(EntityType.SHULKER)
                     .heightAndWidth(1f)
-                    .addTranslator(MetadataType.DIRECTION, ShulkerEntity::setAttachedFace)
-                    .addTranslator(MetadataType.BYTE, ShulkerEntity::setShulkerHeight)
-                    .addTranslator(MetadataType.BYTE, ShulkerEntity::setShulkerColor)
+                    .addTranslator(MetadataTypes.DIRECTION, ShulkerEntity::setAttachedFace)
+                    .addTranslator(MetadataTypes.BYTE, ShulkerEntity::setShulkerHeight)
+                    .addTranslator(MetadataTypes.BYTE, ShulkerEntity::setShulkerColor)
                     .build();
             SKELETON = EntityDefinition.inherited(SkeletonEntity::new, mobEntityBase)
                     .type(EntityType.SKELETON)
                     .height(1.8f).width(0.6f)
                     .offset(1.62f)
-                    .addTranslator(MetadataType.BOOLEAN, SkeletonEntity::setConvertingToStray)
+                    .addTranslator(MetadataTypes.BOOLEAN, SkeletonEntity::setConvertingToStray)
                     .build();
             SNOW_GOLEM = EntityDefinition.inherited(SnowGolemEntity::new, mobEntityBase)
                     .type(EntityType.SNOW_GOLEM)
                     .height(1.9f).width(0.7f)
-                    .addTranslator(MetadataType.BYTE, SnowGolemEntity::setSnowGolemFlags)
+                    .addTranslator(MetadataTypes.BYTE, SnowGolemEntity::setSnowGolemFlags)
                     .build();
             SPIDER = EntityDefinition.inherited(SpiderEntity::new, mobEntityBase)
                     .type(EntityType.SPIDER)
                     .height(0.9f).width(1.4f)
                     .offset(1f)
-                    .addTranslator(MetadataType.BYTE, SpiderEntity::setSpiderFlags)
+                    .addTranslator(MetadataTypes.BYTE, SpiderEntity::setSpiderFlags)
                     .build();
             CAVE_SPIDER = EntityDefinition.inherited(SpiderEntity::new, SPIDER)
                     .type(EntityType.CAVE_SPIDER)
@@ -780,20 +780,20 @@ public final class EntityDefinitions {
             VEX = EntityDefinition.inherited(VexEntity::new, mobEntityBase)
                     .type(EntityType.VEX)
                     .height(0.8f).width(0.4f)
-                    .addTranslator(MetadataType.BYTE, VexEntity::setVexFlags)
+                    .addTranslator(MetadataTypes.BYTE, VexEntity::setVexFlags)
                     .build();
             WARDEN = EntityDefinition.inherited(WardenEntity::new, mobEntityBase)
                     .type(EntityType.WARDEN)
                     .height(2.9f).width(0.9f)
-                    .addTranslator(MetadataType.INT, WardenEntity::setAngerLevel)
+                    .addTranslator(MetadataTypes.INT, WardenEntity::setAngerLevel)
                     .build();
             WITHER = EntityDefinition.inherited(WitherEntity::new, mobEntityBase)
                     .type(EntityType.WITHER)
                     .height(3.5f).width(0.9f)
-                    .addTranslator(MetadataType.INT, WitherEntity::setTarget1)
-                    .addTranslator(MetadataType.INT, WitherEntity::setTarget2)
-                    .addTranslator(MetadataType.INT, WitherEntity::setTarget3)
-                    .addTranslator(MetadataType.INT, WitherEntity::setInvulnerableTicks)
+                    .addTranslator(MetadataTypes.INT, WitherEntity::setTarget1)
+                    .addTranslator(MetadataTypes.INT, WitherEntity::setTarget2)
+                    .addTranslator(MetadataTypes.INT, WitherEntity::setTarget3)
+                    .addTranslator(MetadataTypes.INT, WitherEntity::setInvulnerableTicks)
                     .build();
             WITHER_SKELETON = EntityDefinition.inherited(AbstractSkeletonEntity::new, mobEntityBase)
                     .type(EntityType.WITHER_SKELETON)
@@ -802,23 +802,23 @@ public final class EntityDefinitions {
             ZOGLIN = EntityDefinition.inherited(ZoglinEntity::new, mobEntityBase)
                     .type(EntityType.ZOGLIN)
                     .height(1.4f).width(1.3965f)
-                    .addTranslator(MetadataType.BOOLEAN, ZoglinEntity::setBaby)
+                    .addTranslator(MetadataTypes.BOOLEAN, ZoglinEntity::setBaby)
                     .build();
             ZOMBIE = EntityDefinition.inherited(ZombieEntity::new, mobEntityBase)
                     .type(EntityType.ZOMBIE)
                     .height(1.8f).width(0.6f)
                     .offset(1.62f)
-                    .addTranslator(MetadataType.BOOLEAN, ZombieEntity::setZombieBaby)
+                    .addTranslator(MetadataTypes.BOOLEAN, ZombieEntity::setZombieBaby)
                     .addTranslator(null) // "set special type", doesn't do anything
-                    .addTranslator(MetadataType.BOOLEAN, ZombieEntity::setConvertingToDrowned)
+                    .addTranslator(MetadataTypes.BOOLEAN, ZombieEntity::setConvertingToDrowned)
                     .build();
             ZOMBIE_VILLAGER = EntityDefinition.inherited(ZombieVillagerEntity::new, ZOMBIE)
                     .type(EntityType.ZOMBIE_VILLAGER)
                     .height(1.8f).width(0.6f)
                     .offset(1.62f)
                     .identifier("minecraft:zombie_villager_v2")
-                    .addTranslator(MetadataType.BOOLEAN, ZombieVillagerEntity::setTransforming)
-                    .addTranslator(MetadataType.VILLAGER_DATA, ZombieVillagerEntity::setZombieVillagerData)
+                    .addTranslator(MetadataTypes.BOOLEAN, ZombieVillagerEntity::setTransforming)
+                    .addTranslator(MetadataTypes.VILLAGER_DATA, ZombieVillagerEntity::setZombieVillagerData)
                     .build();
             ZOMBIFIED_PIGLIN = EntityDefinition.inherited(ZombifiedPiglinEntity::new, ZOMBIE) //TODO test how zombie entity metadata is handled?
                     .type(EntityType.ZOMBIFIED_PIGLIN)
@@ -839,7 +839,7 @@ public final class EntityDefinitions {
                     .type(EntityType.GUARDIAN)
                     .heightAndWidth(0.85f)
                     .addTranslator(null) // Moving //TODO
-                    .addTranslator(MetadataType.INT, GuardianEntity::setGuardianTarget)
+                    .addTranslator(MetadataTypes.INT, GuardianEntity::setGuardianTarget)
                     .build();
             ELDER_GUARDIAN = EntityDefinition.inherited(ElderGuardianEntity::new, GUARDIAN)
                     .type(EntityType.ELDER_GUARDIAN)
@@ -849,7 +849,7 @@ public final class EntityDefinitions {
             SLIME = EntityDefinition.inherited(SlimeEntity::new, mobEntityBase)
                     .type(EntityType.SLIME)
                     .heightAndWidth(0.51f)
-                    .addTranslator(MetadataType.INT, SlimeEntity::setSlimeScale)
+                    .addTranslator(MetadataTypes.INT, SlimeEntity::setSlimeScale)
                     .build();
             MAGMA_CUBE = EntityDefinition.inherited(MagmaCubeEntity::new, SLIME)
                     .type(EntityType.MAGMA_CUBE)
@@ -865,7 +865,7 @@ public final class EntityDefinitions {
             PUFFERFISH = EntityDefinition.inherited(PufferFishEntity::new, abstractFishEntityBase)
                     .type(EntityType.PUFFERFISH)
                     .heightAndWidth(0.7f)
-                    .addTranslator(MetadataType.INT, PufferFishEntity::setPufferfishSize)
+                    .addTranslator(MetadataTypes.INT, PufferFishEntity::setPufferfishSize)
                     .build();
             SALMON = EntityDefinition.inherited(abstractFishEntityBase.factory(), abstractFishEntityBase)
                     .type(EntityType.SALMON)
@@ -880,18 +880,18 @@ public final class EntityDefinitions {
                     .type(EntityType.TROPICAL_FISH)
                     .heightAndWidth(0.6f)
                     .identifier("minecraft:tropicalfish")
-                    .addTranslator(MetadataType.INT, TropicalFishEntity::setFishVariant)
+                    .addTranslator(MetadataTypes.INT, TropicalFishEntity::setFishVariant)
                     .build();
 
             EntityDefinition<BasePiglinEntity> abstractPiglinEntityBase = EntityDefinition.inherited(BasePiglinEntity::new, mobEntityBase)
-                    .addTranslator(MetadataType.BOOLEAN, BasePiglinEntity::setImmuneToZombification)
+                    .addTranslator(MetadataTypes.BOOLEAN, BasePiglinEntity::setImmuneToZombification)
                     .build();
             PIGLIN = EntityDefinition.inherited(PiglinEntity::new, abstractPiglinEntityBase)
                     .type(EntityType.PIGLIN)
                     .height(1.95f).width(0.6f)
-                    .addTranslator(MetadataType.BOOLEAN, PiglinEntity::setBaby)
-                    .addTranslator(MetadataType.BOOLEAN, PiglinEntity::setChargingCrossbow)
-                    .addTranslator(MetadataType.BOOLEAN, PiglinEntity::setDancing)
+                    .addTranslator(MetadataTypes.BOOLEAN, PiglinEntity::setBaby)
+                    .addTranslator(MetadataTypes.BOOLEAN, PiglinEntity::setChargingCrossbow)
+                    .addTranslator(MetadataTypes.BOOLEAN, PiglinEntity::setDancing)
                     .build();
             PIGLIN_BRUTE = EntityDefinition.inherited(abstractPiglinEntityBase.factory(), abstractPiglinEntityBase)
                     .type(EntityType.PIGLIN_BRUTE)
@@ -902,7 +902,7 @@ public final class EntityDefinitions {
                     .addTranslator(null) // Celebrating //TODO
                     .build();
             EntityDefinition<SpellcasterIllagerEntity> spellcasterEntityBase = EntityDefinition.inherited(SpellcasterIllagerEntity::new, raidParticipantEntityBase)
-                    .addTranslator(MetadataType.BYTE, SpellcasterIllagerEntity::setSpellType)
+                    .addTranslator(MetadataTypes.BYTE, SpellcasterIllagerEntity::setSpellType)
                     .build();
             EVOKER = EntityDefinition.inherited(spellcasterEntityBase.factory(), spellcasterEntityBase)
                     .type(EntityType.EVOKER)
@@ -918,7 +918,7 @@ public final class EntityDefinitions {
                     .type(EntityType.PILLAGER)
                     .height(1.8f).width(0.6f)
                     .offset(1.62f)
-                    .addTranslator(MetadataType.BOOLEAN, PillagerEntity::setChargingCrossbow)
+                    .addTranslator(MetadataTypes.BOOLEAN, PillagerEntity::setChargingCrossbow)
                     .build();
             RAVAGER = EntityDefinition.inherited(RavagerEntity::new, raidParticipantEntityBase)
                     .type(EntityType.RAVAGER)
@@ -938,7 +938,7 @@ public final class EntityDefinitions {
         }
 
         EntityDefinition<AgeableEntity> ageableEntityBase = EntityDefinition.inherited(AgeableEntity::new, mobEntityBase)
-                .addTranslator(MetadataType.BOOLEAN, AgeableEntity::setBaby)
+                .addTranslator(MetadataTypes.BOOLEAN, AgeableEntity::setBaby)
                 .build();
 
         // Extends ageable
@@ -955,13 +955,13 @@ public final class EntityDefinitions {
                             "rolled_up_relaxing",
                             "rolled_up_unrolling")
                         .build())
-                    .addTranslator(MetadataType.ARMADILLO_STATE, ArmadilloEntity::setArmadilloState)
+                    .addTranslator(MetadataTypes.ARMADILLO_STATE, ArmadilloEntity::setArmadilloState)
                     .build();
             AXOLOTL = EntityDefinition.inherited(AxolotlEntity::new, ageableEntityBase)
                     .type(EntityType.AXOLOTL)
                     .height(0.42f).width(0.7f)
-                    .addTranslator(MetadataType.INT, AxolotlEntity::setVariant)
-                    .addTranslator(MetadataType.BOOLEAN, AxolotlEntity::setPlayingDead)
+                    .addTranslator(MetadataTypes.INT, AxolotlEntity::setVariant)
+                    .addTranslator(MetadataTypes.BOOLEAN, AxolotlEntity::setPlayingDead)
                     .addTranslator(null) // From bucket
                     .build();
             BEE = EntityDefinition.inherited(BeeEntity::new, ageableEntityBase)
@@ -970,8 +970,8 @@ public final class EntityDefinitions {
                     .properties(new GeyserEntityProperties.Builder()
                         .addBoolean("minecraft:has_nectar")
                         .build())
-                    .addTranslator(MetadataType.BYTE, BeeEntity::setBeeFlags)
-                    .addTranslator(MetadataType.INT, BeeEntity::setAngerTime)
+                    .addTranslator(MetadataTypes.BYTE, BeeEntity::setBeeFlags)
+                    .addTranslator(MetadataTypes.INT, BeeEntity::setAngerTime)
                     .build();
             CHICKEN = EntityDefinition.inherited(ChickenEntity::new, ageableEntityBase)
                     .type(EntityType.CHICKEN)
@@ -984,89 +984,89 @@ public final class EntityDefinitions {
             FOX = EntityDefinition.inherited(FoxEntity::new, ageableEntityBase)
                     .type(EntityType.FOX)
                     .height(0.7f).width(0.6f)
-                    .addTranslator(MetadataType.INT, FoxEntity::setFoxVariant)
-                    .addTranslator(MetadataType.BYTE, FoxEntity::setFoxFlags)
+                    .addTranslator(MetadataTypes.INT, FoxEntity::setFoxVariant)
+                    .addTranslator(MetadataTypes.BYTE, FoxEntity::setFoxFlags)
                     .addTranslator(null) // Trusted player 1
                     .addTranslator(null) // Trusted player 2
                     .build();
             FROG = EntityDefinition.inherited(FrogEntity::new, ageableEntityBase)
                     .type(EntityType.FROG)
                     .heightAndWidth(0.5f)
-                    .addTranslator(MetadataType.FROG_VARIANT, FrogEntity::setFrogVariant)
-                    .addTranslator(MetadataType.OPTIONAL_VARINT, FrogEntity::setTongueTarget)
+                    .addTranslator(MetadataTypes.FROG_VARIANT, FrogEntity::setFrogVariant)
+                    .addTranslator(MetadataTypes.OPTIONAL_VARINT, FrogEntity::setTongueTarget)
                     .build();
             HOGLIN = EntityDefinition.inherited(HoglinEntity::new, ageableEntityBase)
                     .type(EntityType.HOGLIN)
                     .height(1.4f).width(1.3965f)
-                    .addTranslator(MetadataType.BOOLEAN, HoglinEntity::setImmuneToZombification)
+                    .addTranslator(MetadataTypes.BOOLEAN, HoglinEntity::setImmuneToZombification)
                     .build();
             GOAT = EntityDefinition.inherited(GoatEntity::new, ageableEntityBase)
                     .type(EntityType.GOAT)
                     .height(1.3f).width(0.9f)
-                    .addTranslator(MetadataType.BOOLEAN, GoatEntity::setScreamer)
-                    .addTranslator(MetadataType.BOOLEAN, GoatEntity::setHasLeftHorn)
-                    .addTranslator(MetadataType.BOOLEAN, GoatEntity::setHasRightHorn)
+                    .addTranslator(MetadataTypes.BOOLEAN, GoatEntity::setScreamer)
+                    .addTranslator(MetadataTypes.BOOLEAN, GoatEntity::setHasLeftHorn)
+                    .addTranslator(MetadataTypes.BOOLEAN, GoatEntity::setHasRightHorn)
                     .build();
             MOOSHROOM = EntityDefinition.inherited(MooshroomEntity::new, ageableEntityBase)
                     .type(EntityType.MOOSHROOM)
                     .height(1.4f).width(0.9f)
-                    .addTranslator(MetadataType.STRING, MooshroomEntity::setVariant)
+                    .addTranslator(MetadataTypes.STRING, MooshroomEntity::setVariant)
                     .build();
             OCELOT = EntityDefinition.inherited(OcelotEntity::new, ageableEntityBase)
                     .type(EntityType.OCELOT)
                     .height(0.7f).width(0.6f)
-                    .addTranslator(MetadataType.BOOLEAN, (ocelotEntity, entityMetadata) -> ocelotEntity.setFlag(EntityFlag.TRUSTING, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                    .addTranslator(MetadataTypes.BOOLEAN, (ocelotEntity, entityMetadata) -> ocelotEntity.setFlag(EntityFlag.TRUSTING, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
                     .build();
             PANDA = EntityDefinition.inherited(PandaEntity::new, ageableEntityBase)
                     .type(EntityType.PANDA)
                     .height(1.25f).width(1.125f)
                     .addTranslator(null) // Unhappy counter
                     .addTranslator(null) // Sneeze counter
-                    .addTranslator(MetadataType.INT, PandaEntity::setEatingCounter)
-                    .addTranslator(MetadataType.BYTE, PandaEntity::setMainGene)
-                    .addTranslator(MetadataType.BYTE, PandaEntity::setHiddenGene)
-                    .addTranslator(MetadataType.BYTE, PandaEntity::setPandaFlags)
+                    .addTranslator(MetadataTypes.INT, PandaEntity::setEatingCounter)
+                    .addTranslator(MetadataTypes.BYTE, PandaEntity::setMainGene)
+                    .addTranslator(MetadataTypes.BYTE, PandaEntity::setHiddenGene)
+                    .addTranslator(MetadataTypes.BYTE, PandaEntity::setPandaFlags)
                     .build();
             PIG = EntityDefinition.inherited(PigEntity::new, ageableEntityBase)
                     .type(EntityType.PIG)
                     .heightAndWidth(0.9f)
-                    .addTranslator(MetadataType.BOOLEAN, (pigEntity, entityMetadata) -> pigEntity.setFlag(EntityFlag.SADDLED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
-                    .addTranslator(MetadataType.INT, PigEntity::setBoost)
+                    .addTranslator(MetadataTypes.BOOLEAN, (pigEntity, entityMetadata) -> pigEntity.setFlag(EntityFlag.SADDLED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                    .addTranslator(MetadataTypes.INT, PigEntity::setBoost)
                     .build();
             POLAR_BEAR = EntityDefinition.inherited(PolarBearEntity::new, ageableEntityBase)
                     .type(EntityType.POLAR_BEAR)
                     .height(1.4f).width(1.3f)
-                    .addTranslator(MetadataType.BOOLEAN, (entity, entityMetadata) -> entity.setFlag(EntityFlag.STANDING, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                    .addTranslator(MetadataTypes.BOOLEAN, (entity, entityMetadata) -> entity.setFlag(EntityFlag.STANDING, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
                     .build();
             RABBIT = EntityDefinition.inherited(RabbitEntity::new, ageableEntityBase)
                     .type(EntityType.RABBIT)
                     .height(0.5f).width(0.4f)
-                    .addTranslator(MetadataType.INT, RabbitEntity::setRabbitVariant)
+                    .addTranslator(MetadataTypes.INT, RabbitEntity::setRabbitVariant)
                     .build();
             SHEEP = EntityDefinition.inherited(SheepEntity::new, ageableEntityBase)
                     .type(EntityType.SHEEP)
                     .height(1.3f).width(0.9f)
-                    .addTranslator(MetadataType.BYTE, SheepEntity::setSheepFlags)
+                    .addTranslator(MetadataTypes.BYTE, SheepEntity::setSheepFlags)
                     .build();
             SNIFFER = EntityDefinition.inherited(SnifferEntity::new, ageableEntityBase)
                     .type(EntityType.SNIFFER)
                     .height(1.75f).width(1.9f)
-                    .addTranslator(MetadataType.SNIFFER_STATE, SnifferEntity::setSnifferState)
+                    .addTranslator(MetadataTypes.SNIFFER_STATE, SnifferEntity::setSnifferState)
                     .addTranslator(null) // Integer, drop seed at tick
                     .build();
             STRIDER = EntityDefinition.inherited(StriderEntity::new, ageableEntityBase)
                     .type(EntityType.STRIDER)
                     .height(1.7f).width(0.9f)
-                    .addTranslator(MetadataType.INT, StriderEntity::setBoost)
-                    .addTranslator(MetadataType.BOOLEAN, StriderEntity::setCold)
-                    .addTranslator(MetadataType.BOOLEAN, StriderEntity::setSaddled)
+                    .addTranslator(MetadataTypes.INT, StriderEntity::setBoost)
+                    .addTranslator(MetadataTypes.BOOLEAN, StriderEntity::setCold)
+                    .addTranslator(MetadataTypes.BOOLEAN, StriderEntity::setSaddled)
                     .build();
             TURTLE = EntityDefinition.inherited(TurtleEntity::new, ageableEntityBase)
                     .type(EntityType.TURTLE)
                     .height(0.4f).width(1.2f)
                     .addTranslator(null) // Home position
-                    .addTranslator(MetadataType.BOOLEAN, TurtleEntity::setPregnant)
-                    .addTranslator(MetadataType.BOOLEAN, TurtleEntity::setLayingEgg)
+                    .addTranslator(MetadataTypes.BOOLEAN, TurtleEntity::setPregnant)
+                    .addTranslator(MetadataTypes.BOOLEAN, TurtleEntity::setLayingEgg)
                     .addTranslator(null) // Travel position
                     .addTranslator(null) // Going home
                     .addTranslator(null) // Travelling
@@ -1080,7 +1080,7 @@ public final class EntityDefinitions {
                     .height(1.8f).width(0.6f)
                     .offset(1.62f)
                     .identifier("minecraft:villager_v2")
-                    .addTranslator(MetadataType.VILLAGER_DATA, VillagerEntity::setVillagerData)
+                    .addTranslator(MetadataTypes.VILLAGER_DATA, VillagerEntity::setVillagerData)
                     .build();
             WANDERING_TRADER = EntityDefinition.inherited(abstractVillagerEntityBase.factory(), abstractVillagerEntityBase)
                     .type(EntityType.WANDERING_TRADER)
@@ -1112,18 +1112,18 @@ public final class EntityDefinitions {
         // Horses
         {
             EntityDefinition<AbstractHorseEntity> abstractHorseEntityBase = EntityDefinition.inherited(AbstractHorseEntity::new, ageableEntityBase)
-                    .addTranslator(MetadataType.BYTE, AbstractHorseEntity::setHorseFlags)
+                    .addTranslator(MetadataTypes.BYTE, AbstractHorseEntity::setHorseFlags)
                     .build();
             CAMEL = EntityDefinition.inherited(CamelEntity::new, abstractHorseEntityBase)
                     .type(EntityType.CAMEL)
                     .height(2.375f).width(1.7f)
-                    .addTranslator(MetadataType.BOOLEAN, CamelEntity::setDashing)
-                    .addTranslator(MetadataType.LONG, CamelEntity::setLastPoseTick)
+                    .addTranslator(MetadataTypes.BOOLEAN, CamelEntity::setDashing)
+                    .addTranslator(MetadataTypes.LONG, CamelEntity::setLastPoseTick)
                     .build();
             HORSE = EntityDefinition.inherited(HorseEntity::new, abstractHorseEntityBase)
                     .type(EntityType.HORSE)
                     .height(1.6f).width(1.3965f)
-                    .addTranslator(MetadataType.INT, HorseEntity::setHorseVariant)
+                    .addTranslator(MetadataTypes.INT, HorseEntity::setHorseVariant)
                     .build();
             SKELETON_HORSE = EntityDefinition.inherited(SkeletonHorseEntity::new, abstractHorseEntityBase)
                     .type(EntityType.SKELETON_HORSE)
@@ -1134,7 +1134,7 @@ public final class EntityDefinitions {
                     .height(1.6f).width(1.3965f)
                     .build();
             EntityDefinition<ChestedHorseEntity> chestedHorseEntityBase = EntityDefinition.inherited(ChestedHorseEntity::new, abstractHorseEntityBase)
-                    .addTranslator(MetadataType.BOOLEAN, (horseEntity, entityMetadata) -> horseEntity.setFlag(EntityFlag.CHESTED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                    .addTranslator(MetadataTypes.BOOLEAN, (horseEntity, entityMetadata) -> horseEntity.setFlag(EntityFlag.CHESTED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
                     .build();
             DONKEY = EntityDefinition.inherited(chestedHorseEntityBase.factory(), chestedHorseEntityBase)
                     .type(EntityType.DONKEY)
@@ -1147,8 +1147,8 @@ public final class EntityDefinitions {
             LLAMA = EntityDefinition.inherited(LlamaEntity::new, chestedHorseEntityBase)
                     .type(EntityType.LLAMA)
                     .height(1.87f).width(0.9f)
-                    .addTranslator(MetadataType.INT, LlamaEntity::setStrength)
-                    .addTranslator(MetadataType.INT, (entity, entityMetadata) -> entity.getDirtyMetadata().put(EntityDataTypes.VARIANT, entityMetadata.getValue()))
+                    .addTranslator(MetadataTypes.INT, LlamaEntity::setStrength)
+                    .addTranslator(MetadataTypes.INT, (entity, entityMetadata) -> entity.getDirtyMetadata().put(EntityDataTypes.VARIANT, entityMetadata.getValue()))
                     .build();
             TRADER_LLAMA = EntityDefinition.inherited(TraderLlamaEntity::new, LLAMA)
                     .type(EntityType.TRADER_LLAMA)
@@ -1157,30 +1157,30 @@ public final class EntityDefinitions {
         }
 
         EntityDefinition<TameableEntity> tameableEntityBase = EntityDefinition.<TameableEntity>inherited(null, ageableEntityBase) // No factory, is abstract
-                .addTranslator(MetadataType.BYTE, TameableEntity::setTameableFlags)
-                .addTranslator(MetadataType.OPTIONAL_UUID, TameableEntity::setOwner)
+                .addTranslator(MetadataTypes.BYTE, TameableEntity::setTameableFlags)
+                .addTranslator(MetadataTypes.OPTIONAL_UUID, TameableEntity::setOwner)
                 .build();
         CAT = EntityDefinition.inherited(CatEntity::new, tameableEntityBase)
                 .type(EntityType.CAT)
                 .height(0.35f).width(0.3f)
-                .addTranslator(MetadataType.CAT_VARIANT, CatEntity::setCatVariant)
-                .addTranslator(MetadataType.BOOLEAN, CatEntity::setResting)
+                .addTranslator(MetadataTypes.CAT_VARIANT, CatEntity::setCatVariant)
+                .addTranslator(MetadataTypes.BOOLEAN, CatEntity::setResting)
                 .addTranslator(null) // "resting state one" //TODO
-                .addTranslator(MetadataType.INT, CatEntity::setCollarColor)
+                .addTranslator(MetadataTypes.INT, CatEntity::setCollarColor)
                 .build();
         PARROT = EntityDefinition.inherited(ParrotEntity::new, tameableEntityBase)
                 .type(EntityType.PARROT)
                 .height(0.9f).width(0.5f)
-                .addTranslator(MetadataType.INT, (parrotEntity, entityMetadata) -> parrotEntity.getDirtyMetadata().put(EntityDataTypes.VARIANT, entityMetadata.getValue())) // Parrot color
+                .addTranslator(MetadataTypes.INT, (parrotEntity, entityMetadata) -> parrotEntity.getDirtyMetadata().put(EntityDataTypes.VARIANT, entityMetadata.getValue())) // Parrot color
                 .build();
         WOLF = EntityDefinition.inherited(WolfEntity::new, tameableEntityBase)
                 .type(EntityType.WOLF)
                 .height(0.85f).width(0.6f)
                 // "Begging" on wiki.vg, "Interested" in Nukkit - the tilt of the head
-                .addTranslator(MetadataType.BOOLEAN, (wolfEntity, entityMetadata) -> wolfEntity.setFlag(EntityFlag.INTERESTED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
-                .addTranslator(MetadataType.INT, WolfEntity::setCollarColor)
-                .addTranslator(MetadataType.INT, WolfEntity::setWolfAngerTime)
-                .addTranslator(MetadataType.WOLF_VARIANT, WolfEntity::setWolfVariant)
+                .addTranslator(MetadataTypes.BOOLEAN, (wolfEntity, entityMetadata) -> wolfEntity.setFlag(EntityFlag.INTERESTED, ((BooleanEntityMetadata) entityMetadata).getPrimitiveValue()))
+                .addTranslator(MetadataTypes.INT, WolfEntity::setCollarColor)
+                .addTranslator(MetadataTypes.INT, WolfEntity::setWolfAngerTime)
+                .addTranslator(MetadataTypes.WOLF_VARIANT, WolfEntity::setWolfVariant)
                 .build();
 
         // As of 1.18 these don't track entity data at all
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/FireworkEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/FireworkEntity.java
index f0739abb3..ebe35320e 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/FireworkEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/FireworkEntity.java
@@ -51,7 +51,7 @@ public class FireworkEntity extends Entity {
         if (item == null) {
             return;
         }
-        DataComponents components = item.getDataComponents();
+        DataComponents components = item.getDataComponentsPatch();
         if (components == null) {
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
index afe0dcdc6..680bdecd8 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ItemFrameEntity.java
@@ -120,7 +120,7 @@ public class ItemFrameEntity extends Entity {
             NbtMap itemDataTag = itemData.getTag();
             if (itemDataTag != null) {
                 // Remove custom name that Geyser sets for items due to translating non-"custom_name" components
-                String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponents(),
+                String customName = ItemTranslator.getCustomName(session, heldItem.getDataComponentsPatch(),
                     session.getItemMappings().getMapping(heldItem), 'f', true, false);
                 if (customName == null) {
                     // No custom name found, must modify tag if custom name exists
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java
index 33064edfe..ca9dca6e0 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/LivingEntity.java
@@ -61,7 +61,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.IntEnt
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.EntityEffectParticleData;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.Particle;
 import org.geysermc.mcprotocollib.protocol.data.game.level.particle.ParticleType;
@@ -344,7 +344,7 @@ public class LivingEntity extends Entity {
      */
     // Implementation note for 1.20.5: this code was moved to the NameTag item.
     protected final InteractionResult checkInteractWithNameTag(GeyserItemStack itemStack) {
-        if (itemStack.getComponent(DataComponentType.CUSTOM_NAME) != null) {
+        if (itemStack.getComponent(DataComponentTypes.CUSTOM_NAME) != null) {
             // The mob shall be named
             return InteractionResult.SUCCESS;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/ThrownPotionEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/ThrownPotionEntity.java
index 88cf4f8b9..e940b074e 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/ThrownPotionEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/ThrownPotionEntity.java
@@ -36,7 +36,7 @@ import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
@@ -59,9 +59,9 @@ public class ThrownPotionEntity extends ThrowableItemEntity {
             setFlag(EntityFlag.LINGERING, false);
         } else {
             // As of Java 1.19.3, the server/client doesn't seem to care of the item is actually a potion?
-            DataComponents components = itemStack.getDataComponents();
+            DataComponents components = itemStack.getDataComponentsPatch();
             if (components != null) {
-                PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+                PotionContents potionContents = components.get(DataComponentTypes.POTION_CONTENTS);
                 if (potionContents != null) {
                     Potion potion = Potion.getByJavaId(potionContents.getPotionId());
                     if (potion != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
index b108c9fbe..c8b6a6f58 100644
--- a/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
+++ b/core/src/main/java/org/geysermc/geyser/entity/type/living/animal/tameable/WolfEntity.java
@@ -51,7 +51,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.Object
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 
 import java.util.Collections;
@@ -129,7 +129,7 @@ public class WolfEntity extends TameableEntity {
         super.setBody(stack);
         isCurseOfBinding = ItemUtils.hasEffect(session, stack, EnchantmentComponent.PREVENT_ARMOR_CHANGE);
         // Not using ItemStack#getDataComponents as that wouldn't include default item components
-        repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentType.REPAIRABLE);
+        repairableItems = GeyserItemStack.from(stack).getComponent(DataComponentTypes.REPAIRABLE);
     }
 
     @Override
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java b/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java
index f5969efbb..fe760c75a 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/AnvilContainer.java
@@ -32,7 +32,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
 
 /**
@@ -73,7 +73,7 @@ public class AnvilContainer extends Container {
         String correctRename;
         newName = rename;
 
-        Component originalName = getInput().getComponent(DataComponentType.CUSTOM_NAME);
+        Component originalName = getInput().getComponent(DataComponentTypes.CUSTOM_NAME);
 
         String plainOriginalName = MessageTranslator.convertToPlainText(originalName, session.locale());
         String plainNewName = MessageTranslator.convertToPlainText(rename);
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
index c4a3542d1..a66b07598 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/GeyserItemStack.java
@@ -43,6 +43,7 @@ import org.geysermc.geyser.session.cache.BundleCache;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.ItemSlotDisplay;
@@ -89,7 +90,7 @@ public class GeyserItemStack {
     }
 
     public static @NonNull GeyserItemStack from(@Nullable ItemStack itemStack) {
-        return itemStack == null ? EMPTY : new GeyserItemStack(itemStack.getId(), itemStack.getAmount(), itemStack.getDataComponents());
+        return itemStack == null ? EMPTY : new GeyserItemStack(itemStack.getId(), itemStack.getAmount(), itemStack.getDataComponentsPatch());
     }
 
     public static @NonNull GeyserItemStack from(@NonNull SlotDisplay slotDisplay) {
@@ -217,11 +218,11 @@ public class GeyserItemStack {
         // Not fresh from server? Then we have changes to apply!~
         if (bundleData != null && !bundleData.freshFromServer()) {
             if (!bundleData.contents().isEmpty()) {
-                getOrCreateComponents().put(DataComponentType.BUNDLE_CONTENTS, bundleData.toComponent());
+                getOrCreateComponents().put(DataComponentTypes.BUNDLE_CONTENTS, bundleData.toComponent());
             } else {
                 if (components != null) {
                     // Empty list = no component = should delete
-                    components.getDataComponents().remove(DataComponentType.BUNDLE_CONTENTS);
+                    components.getDataComponents().remove(DataComponentTypes.BUNDLE_CONTENTS);
                 }
             }
         }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java b/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
index 4639e0151..2c0c2798d 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/Inventory.java
@@ -36,7 +36,7 @@ import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.jetbrains.annotations.Range;
 
 import java.util.Arrays;
@@ -135,7 +135,7 @@ public abstract class Inventory {
 
         // Lodestone caching
         if (newItem.asItem() == Items.COMPASS) {
-            var tracker = newItem.getComponent(DataComponentType.LODESTONE_TRACKER);
+            var tracker = newItem.getComponent(DataComponentTypes.LODESTONE_TRACKER);
             if (tracker != null) {
                 session.getLodestoneCache().cacheInventoryItem(newItem, tracker);
             }
diff --git a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
index 8282607af..ac9e35909 100644
--- a/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
+++ b/core/src/main/java/org/geysermc/geyser/inventory/updater/AnvilInventoryUpdater.java
@@ -44,7 +44,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.inventory.InventoryTranslator;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundRenameItemPacket;
@@ -117,7 +117,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
 
             // Changing the item in the input slot resets the name field on Bedrock, but
             // does not result in a FilterTextPacket
-            String originalName = MessageTranslator.convertToPlainText(input.getComponent(DataComponentType.CUSTOM_NAME), session.locale());
+            String originalName = MessageTranslator.convertToPlainText(input.getComponent(DataComponentTypes.CUSTOM_NAME), session.locale());
             ServerboundRenameItemPacket renameItemPacket = new ServerboundRenameItemPacket(originalName);
             session.sendDownstreamGamePacket(renameItemPacket);
 
@@ -367,9 +367,9 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
     private Object2IntMap<Enchantment> getEnchantments(GeyserSession session, GeyserItemStack itemStack) {
         ItemEnchantments enchantmentComponent;
         if (isEnchantedBook(itemStack)) {
-            enchantmentComponent = itemStack.getComponent(DataComponentType.STORED_ENCHANTMENTS);
+            enchantmentComponent = itemStack.getComponent(DataComponentTypes.STORED_ENCHANTMENTS);
         } else {
-            enchantmentComponent = itemStack.getComponent(DataComponentType.ENCHANTMENTS);
+            enchantmentComponent = itemStack.getComponent(DataComponentTypes.ENCHANTMENTS);
         }
         if (enchantmentComponent != null) {
             Object2IntMap<Enchantment> enchantments = new Object2IntOpenHashMap<>();
@@ -395,7 +395,7 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
     }
 
     private boolean isRepairing(GeyserItemStack input, GeyserItemStack material, GeyserSession session) {
-        HolderSet repairable = input.getComponent(DataComponentType.REPAIRABLE);
+        HolderSet repairable = input.getComponent(DataComponentTypes.REPAIRABLE);
         if (repairable == null) {
             return false;
         }
@@ -409,27 +409,27 @@ public class AnvilInventoryUpdater extends InventoryUpdater {
         }
         // This should really check the name field in all cases, but that requires the localized name
         // of the item which can change depending on NBT and Minecraft Edition
-        Component originalName = anvilContainer.getInput().getComponent(DataComponentType.CUSTOM_NAME);
+        Component originalName = anvilContainer.getInput().getComponent(DataComponentTypes.CUSTOM_NAME);
         if (bedrock && originalName != null && anvilContainer.getNewName() != null) {
             // Check text and formatting
             String legacyOriginalName = MessageTranslator.convertMessage(originalName, session.locale());
             return !legacyOriginalName.equals(anvilContainer.getNewName());
         }
-        return !Objects.equals(originalName, anvilContainer.getResult().getComponent(DataComponentType.CUSTOM_NAME));
+        return !Objects.equals(originalName, anvilContainer.getResult().getComponent(DataComponentTypes.CUSTOM_NAME));
     }
 
     private int getRepairCost(GeyserItemStack itemStack) {
-        return itemStack.getComponentElseGet(DataComponentType.REPAIR_COST, () -> 0);
+        return itemStack.getComponentElseGet(DataComponentTypes.REPAIR_COST, () -> 0);
     }
 
     private boolean hasDurability(GeyserItemStack itemStack) {
         if (itemStack.asItem().defaultMaxDamage() > 0) {
-            return itemStack.getComponent(DataComponentType.UNBREAKABLE) != null;
+            return itemStack.getComponent(DataComponentTypes.UNBREAKABLE) != null;
         }
         return false;
     }
 
     private int getDamage(GeyserItemStack itemStack) {
-        return itemStack.getComponentElseGet(DataComponentType.DAMAGE, () -> 0);
+        return itemStack.getComponentElseGet(DataComponentTypes.DAMAGE, () -> 0);
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java
index ec87728a9..c20cc490e 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ArmorItem.java
@@ -33,7 +33,7 @@ import org.cloudburstmc.protocol.bedrock.data.TrimPattern;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ArmorTrim;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class ArmorItem extends Item {
@@ -46,7 +46,7 @@ public class ArmorItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        ArmorTrim trim = components.get(DataComponentType.TRIM);
+        ArmorTrim trim = components.get(DataComponentTypes.TRIM);
         if (trim != null) {
             TrimMaterial material = session.getRegistryCache().trimMaterials().byId(trim.material().id());
             TrimPattern pattern = session.getRegistryCache().trimPatterns().byId(trim.pattern().id());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java
index b2d3737d8..8aaf389f6 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ArrowItem.java
@@ -33,7 +33,7 @@ import org.geysermc.geyser.item.Items;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
 public class ArrowItem extends Item {
@@ -48,7 +48,7 @@ public class ArrowItem extends Item {
         if (potion != null) {
             itemStack = Items.TIPPED_ARROW.newItemStack(itemStack.getAmount(), itemStack.getComponents());
             PotionContents contents = potion.toComponent();
-            itemStack.getOrCreateComponents().put(DataComponentType.POTION_CONTENTS, contents);
+            itemStack.getOrCreateComponents().put(DataComponentTypes.POTION_CONTENTS, contents);
         }
         return itemStack;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/BannerItem.java b/core/src/main/java/org/geysermc/geyser/item/type/BannerItem.java
index 6ec0da8ed..2a5f76c33 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/BannerItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/BannerItem.java
@@ -44,7 +44,7 @@ import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.util.MinecraftKey;
 import org.geysermc.mcprotocollib.protocol.data.game.Holder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Unit;
 
@@ -206,7 +206,7 @@ public class BannerItem extends BlockItem {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        List<BannerPatternLayer> patterns = components.get(DataComponentType.BANNER_PATTERNS);
+        List<BannerPatternLayer> patterns = components.get(DataComponentTypes.BANNER_PATTERNS);
         if (patterns != null) {
             convertBannerPattern(session, patterns, builder);
         }
@@ -225,9 +225,9 @@ public class BannerItem extends BlockItem {
                         pair.right().ordinal()));
             }
 
-            components.put(DataComponentType.BANNER_PATTERNS, patternLayers);
-            components.put(DataComponentType.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE);
-            components.put(DataComponentType.ITEM_NAME, Component
+            components.put(DataComponentTypes.BANNER_PATTERNS, patternLayers);
+            components.put(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP, Unit.INSTANCE);
+            components.put(DataComponentTypes.ITEM_NAME, Component
                     .translatable("block.minecraft.ominous_banner")
                     .style(Style.style(TextColor.color(16755200)))
             );
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java b/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java
index 1c0ec0d5f..d6403a8c3 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/CompassItem.java
@@ -33,7 +33,7 @@ import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.LodestoneTracker;
 
@@ -62,7 +62,7 @@ public class CompassItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        LodestoneTracker tracker = components.get(DataComponentType.LODESTONE_TRACKER);
+        LodestoneTracker tracker = components.get(DataComponentTypes.LODESTONE_TRACKER);
         if (tracker != null) {
             int trackId = session.getLodestoneCache().store(tracker);
             // Set the bedrock tracking id - will return 0 if invalid
@@ -72,7 +72,7 @@ public class CompassItem extends Item {
 
     private boolean isLodestoneCompass(@Nullable DataComponents components) {
         if (components != null) {
-            return components.getDataComponents().containsKey(DataComponentType.LODESTONE_TRACKER);
+            return components.getDataComponents().containsKey(DataComponentTypes.LODESTONE_TRACKER);
         }
         return false;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/CrossbowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/CrossbowItem.java
index 7e1181c4e..13e79958e 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/CrossbowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/CrossbowItem.java
@@ -33,7 +33,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.List;
@@ -47,7 +47,7 @@ public class CrossbowItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        List<ItemStack> chargedProjectiles = components.get(DataComponentType.CHARGED_PROJECTILES);
+        List<ItemStack> chargedProjectiles = components.get(DataComponentTypes.CHARGED_PROJECTILES);
         if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) {
             ItemStack javaProjectile = chargedProjectiles.get(0);
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/DecoratedPotItem.java b/core/src/main/java/org/geysermc/geyser/item/type/DecoratedPotItem.java
index 578ba4063..fa08bd7ec 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/DecoratedPotItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/DecoratedPotItem.java
@@ -31,7 +31,7 @@ import org.geysermc.geyser.level.block.type.Block;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.ArrayList;
@@ -47,7 +47,7 @@ public class DecoratedPotItem extends BlockItem {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        List<Integer> decorations = components.get(DataComponentType.POT_DECORATIONS); // TODO maybe unbox in MCProtocolLib
+        List<Integer> decorations = components.get(DataComponentTypes.POT_DECORATIONS); // TODO maybe unbox in MCProtocolLib
         if (decorations != null) {
             List<String> sherds = new ArrayList<>(decorations.size());
             for (Integer decoration : decorations) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/EnchantedBookItem.java b/core/src/main/java/org/geysermc/geyser/item/type/EnchantedBookItem.java
index 8b0f3e22e..f5ddb698b 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/EnchantedBookItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/EnchantedBookItem.java
@@ -36,7 +36,7 @@ import org.geysermc.geyser.item.enchantment.Enchantment;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
 
@@ -54,7 +54,7 @@ public class EnchantedBookItem extends Item {
         super.translateComponentsToBedrock(session, components, builder);
 
         List<NbtMap> bedrockEnchants = new ArrayList<>();
-        ItemEnchantments enchantments = components.get(DataComponentType.STORED_ENCHANTMENTS);
+        ItemEnchantments enchantments = components.get(DataComponentTypes.STORED_ENCHANTMENTS);
         if (enchantments != null) { // TODO don't duplicate code?
             for (Map.Entry<Integer, Integer> enchantment : enchantments.getEnchantments().entrySet()) {
                 NbtMap bedrockTag = remapEnchantment(session, enchantment.getKey(), enchantment.getValue(), builder);
@@ -94,7 +94,7 @@ public class EnchantedBookItem extends Item {
                 }
             }
             if (!javaEnchantments.isEmpty()) {
-                components.put(DataComponentType.STORED_ENCHANTMENTS, new ItemEnchantments(javaEnchantments, true));
+                components.put(DataComponentTypes.STORED_ENCHANTMENTS, new ItemEnchantments(javaEnchantments, true));
             }
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java b/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java
index 07a0ad133..82c45ff31 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/FilledMapItem.java
@@ -29,7 +29,7 @@ import org.cloudburstmc.protocol.bedrock.data.inventory.ItemData;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class FilledMapItem extends MapItem {
@@ -45,7 +45,7 @@ public class FilledMapItem extends MapItem {
             //return builder.tag(NbtMap.builder().putInt("map", 0).build()); TODO if this is *still* broken, let's move it to translateComponentsToBedrock
             return builder;
         } else {
-            Integer mapColor = components.get(DataComponentType.MAP_COLOR);
+            Integer mapColor = components.get(DataComponentTypes.MAP_COLOR);
             if (mapColor != null) {
                 // Note: damage 5 treasure map, 6 ???
                 // Java Edition allows any color; Bedrock only allows some. So let's take what colors we can get
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java b/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java
index 862325a90..265d3aad7 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/FireworkRocketItem.java
@@ -35,7 +35,7 @@ import org.geysermc.geyser.level.FireworkColor;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Fireworks;
 
@@ -51,7 +51,7 @@ public class FireworkRocketItem extends Item implements BedrockRequiresTagItem {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        Fireworks fireworks = components.get(DataComponentType.FIREWORKS);
+        Fireworks fireworks = components.get(DataComponentTypes.FIREWORKS);
         if (fireworks == null) {
             return;
         }
@@ -87,7 +87,7 @@ public class FireworkRocketItem extends Item implements BedrockRequiresTagItem {
                         javaExplosions.add(javaExplosion);
                     }
                 }
-                components.put(DataComponentType.FIREWORKS, new Fireworks(1, javaExplosions));
+                components.put(DataComponentTypes.FIREWORKS, new Fireworks(1, javaExplosions));
             }
         }
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/FireworkStarItem.java b/core/src/main/java/org/geysermc/geyser/item/type/FireworkStarItem.java
index 5ac0f475c..170d386fd 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/FireworkStarItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/FireworkStarItem.java
@@ -30,7 +30,7 @@ import org.cloudburstmc.nbt.NbtMap;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Fireworks;
 
@@ -43,7 +43,7 @@ public class FireworkStarItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        Fireworks.FireworkExplosion explosion = components.get(DataComponentType.FIREWORK_EXPLOSION);
+        Fireworks.FireworkExplosion explosion = components.get(DataComponentTypes.FIREWORK_EXPLOSION);
         if (explosion != null) {
             NbtMap newExplosion = FireworkRocketItem.translateExplosionToBedrock(explosion);
             builder.putCompound("FireworksItem", newExplosion);
@@ -87,7 +87,7 @@ public class FireworkStarItem extends Item {
             if (newExplosion == null) {
                 return;
             }
-            components.put(DataComponentType.FIREWORK_EXPLOSION, newExplosion);
+            components.put(DataComponentTypes.FIREWORK_EXPLOSION, newExplosion);
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java b/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java
index 9af07a40e..bd1ac0724 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/GoatHornItem.java
@@ -34,7 +34,7 @@ import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.Holder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Instrument;
 
@@ -50,7 +50,7 @@ public class GoatHornItem extends Item {
             return builder;
         }
 
-        Holder<Instrument> holder = components.get(DataComponentType.INSTRUMENT);
+        Holder<Instrument> holder = components.get(DataComponentTypes.INSTRUMENT);
         if (holder != null) {
             GeyserInstrument instrument = GeyserInstrument.fromHolder(session, holder);
             int bedrockId = instrument.bedrockId();
@@ -66,9 +66,9 @@ public class GoatHornItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        Holder<Instrument> holder = components.get(DataComponentType.INSTRUMENT);
-        if (holder != null && components.get(DataComponentType.HIDE_TOOLTIP) == null
-            && components.get(DataComponentType.HIDE_ADDITIONAL_TOOLTIP) == null) {
+        Holder<Instrument> holder = components.get(DataComponentTypes.INSTRUMENT);
+        if (holder != null && components.get(DataComponentTypes.HIDE_TOOLTIP) == null
+            && components.get(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP) == null) {
             GeyserInstrument instrument = GeyserInstrument.fromHolder(session, holder);
             if (instrument.bedrockInstrument() == null) {
                 builder.getOrCreateLore().add(instrument.description());
@@ -82,7 +82,7 @@ public class GoatHornItem extends Item {
 
         int damage = itemData.getDamage();
         // This could cause an issue since -1 is returned for non-vanilla goat horns
-        itemStack.getOrCreateComponents().put(DataComponentType.INSTRUMENT, Holder.ofId(GeyserInstrument.bedrockIdToJava(session, damage)));
+        itemStack.getOrCreateComponents().put(DataComponentTypes.INSTRUMENT, Holder.ofId(GeyserInstrument.bedrockIdToJava(session, damage)));
 
         return itemStack;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/Item.java b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
index 056e8b48a..f0ae57018 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/Item.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/Item.java
@@ -49,6 +49,7 @@ import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.text.MessageTranslator;
 import org.geysermc.geyser.util.MinecraftKey;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DyedItemColor;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
@@ -83,7 +84,7 @@ public class Item {
     }
 
     public int defaultMaxDamage() {
-        return baseComponents.getOrDefault(DataComponentType.MAX_DAMAGE, 0);
+        return baseComponents.getOrDefault(DataComponentTypes.MAX_DAMAGE, 0);
     }
 
     public int defaultAttackDamage() {
@@ -91,7 +92,7 @@ public class Item {
     }
 
     public int defaultMaxStackSize() {
-        return baseComponents.getOrDefault(DataComponentType.MAX_STACK_SIZE, 1);
+        return baseComponents.getOrDefault(DataComponentTypes.MAX_STACK_SIZE, 1);
     }
 
     /**
@@ -157,21 +158,21 @@ public class Item {
      * Takes components from Java Edition and map them into Bedrock.
      */
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
-        List<Component> loreComponents = components.get(DataComponentType.LORE);
-        if (loreComponents != null && components.get(DataComponentType.HIDE_TOOLTIP) == null) {
+        List<Component> loreComponents = components.get(DataComponentTypes.LORE);
+        if (loreComponents != null && components.get(DataComponentTypes.HIDE_TOOLTIP) == null) {
             List<String> lore = builder.getOrCreateLore();
             for (Component loreComponent : loreComponents) {
                 lore.add(MessageTranslator.convertMessage(loreComponent, session.locale()));
             }
         }
 
-        Integer damage = components.get(DataComponentType.DAMAGE);
+        Integer damage = components.get(DataComponentTypes.DAMAGE);
         if (damage != null) {
             builder.setDamage(damage);
         }
 
         List<NbtMap> enchantNbtList = new ArrayList<>();
-        ItemEnchantments enchantments = components.get(DataComponentType.ENCHANTMENTS);
+        ItemEnchantments enchantments = components.get(DataComponentTypes.ENCHANTMENTS);
         if (enchantments != null) {
             for (Map.Entry<Integer, Integer> enchantment : enchantments.getEnchantments().entrySet()) {
                 NbtMap enchantNbt = remapEnchantment(session, enchantment.getKey(), enchantment.getValue(), builder);
@@ -185,7 +186,7 @@ public class Item {
             builder.putList("ench", NbtType.COMPOUND, enchantNbtList);
         }
 
-        Integer repairCost = components.get(DataComponentType.REPAIR_COST);
+        Integer repairCost = components.get(DataComponentTypes.REPAIR_COST);
         // Java sets repair cost to 0 on all items via default components, that trips up Bedrock crafting.
         // See https://github.com/GeyserMC/Geyser/issues/5220 for more details
         if (repairCost != null && repairCost != 0) {
@@ -193,7 +194,7 @@ public class Item {
         }
 
         // If the tag exists, it's unbreakable; the value is just weather to show the tooltip. As of Java 1.21
-        if (components.getDataComponents().containsKey(DataComponentType.UNBREAKABLE)) {
+        if (components.getDataComponents().containsKey(DataComponentTypes.UNBREAKABLE)) {
             builder.putByte("Unbreakable", (byte) 1);
         }
 
@@ -265,7 +266,7 @@ public class Item {
     }
 
     protected final void translateDyedColor(DataComponents components, BedrockItemBuilder builder) {
-        DyedItemColor dyedItemColor = components.get(DataComponentType.DYED_COLOR);
+        DyedItemColor dyedItemColor = components.get(DataComponentTypes.DYED_COLOR);
         if (dyedItemColor != null) {
             builder.putInt("customColor", dyedItemColor.getRgb());
         }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java b/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
index d176ff367..36509f042 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/LightItem.java
@@ -33,7 +33,7 @@ import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.BlockStateProperties;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class LightItem extends BlockItem {
@@ -63,7 +63,7 @@ public class LightItem extends BlockItem {
     private static ItemMapping getLightLevelMapping(DataComponents components, ItemMappings mappings) {
         String lightLevel = "15";
         if (components != null) {
-            BlockStateProperties blockStateProperties = components.get(DataComponentType.BLOCK_STATE);
+            BlockStateProperties blockStateProperties = components.get(DataComponentTypes.BLOCK_STATE);
 
             if (blockStateProperties != null) {
                 lightLevel = blockStateProperties.getProperties().get(Properties.LEVEL.name());
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/MapItem.java b/core/src/main/java/org/geysermc/geyser/item/type/MapItem.java
index 5d8a1667d..f19da5968 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/MapItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/MapItem.java
@@ -28,7 +28,7 @@ package org.geysermc.geyser.item.type;
 import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class MapItem extends Item {
@@ -40,7 +40,7 @@ public class MapItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        Integer mapValue = components.get(DataComponentType.MAP_ID);
+        Integer mapValue = components.get(DataComponentTypes.MAP_ID);
         if (mapValue == null) {
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java b/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java
index 92a8d726d..0579e1c5b 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/OminousBottleItem.java
@@ -32,7 +32,7 @@ import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class OminousBottleItem extends Item {
@@ -47,7 +47,7 @@ public class OminousBottleItem extends Item {
             // Level 1 ominous bottle is null components - Java 1.21.
             return builder;
         }
-        Integer amplifier = components.get(DataComponentType.OMINOUS_BOTTLE_AMPLIFIER);
+        Integer amplifier = components.get(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER);
         if (amplifier != null) {
             builder.damage(amplifier);
         }
@@ -62,7 +62,7 @@ public class OminousBottleItem extends Item {
         if (damage == 0) {
             return itemStack;
         }
-        itemStack.getOrCreateComponents().put(DataComponentType.OMINOUS_BOTTLE_AMPLIFIER, damage);
+        itemStack.getOrCreateComponents().put(DataComponentTypes.OMINOUS_BOTTLE_AMPLIFIER, damage);
         return itemStack;
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java b/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java
index 003aa0a73..502d9be0d 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/PlayerHeadItem.java
@@ -33,7 +33,7 @@ import org.geysermc.geyser.text.ChatColor;
 import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.auth.GameProfile;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 public class PlayerHeadItem extends BlockItem {
@@ -46,9 +46,9 @@ public class PlayerHeadItem extends BlockItem {
         super.translateComponentsToBedrock(session, components, builder);
 
         // Use the correct color, determined by the rarity of the item
-        char rarity = Rarity.fromId(components.get(DataComponentType.RARITY)).getColor();
+        char rarity = Rarity.fromId(components.get(DataComponentTypes.RARITY)).getColor();
 
-        GameProfile profile = components.get(DataComponentType.PROFILE);
+        GameProfile profile = components.get(DataComponentTypes.PROFILE);
         if (profile != null) {
             String name = profile.getName();
             if (name != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
index 89e60b325..2cdd6e4c1 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/PotionItem.java
@@ -35,7 +35,7 @@ import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
@@ -47,7 +47,7 @@ public class PotionItem extends Item {
     @Override
     public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
         if (components == null) return super.translateToBedrock(session, count, components, mapping, mappings);
-        PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+        PotionContents potionContents = components.get(DataComponentTypes.POTION_CONTENTS);
         if (potionContents != null) {
             ItemDefinition customItemDefinition = CustomItemTranslator.getCustomItem(components, mapping);
             if (customItemDefinition == null) {
@@ -73,7 +73,7 @@ public class PotionItem extends Item {
         Potion potion = Potion.getByBedrockId(itemData.getDamage());
         GeyserItemStack itemStack = super.translateToJava(session, itemData, mapping, mappings);
         if (potion != null) {
-            itemStack.getOrCreateComponents().put(DataComponentType.POTION_CONTENTS, potion.toComponent());
+            itemStack.getOrCreateComponents().put(DataComponentTypes.POTION_CONTENTS, potion.toComponent());
         }
         return itemStack;
     }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java
index 98ef80d95..01cea9c17 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ShieldItem.java
@@ -29,7 +29,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.List;
@@ -43,12 +43,12 @@ public class ShieldItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        List<BannerPatternLayer> patterns = components.get(DataComponentType.BANNER_PATTERNS);
+        List<BannerPatternLayer> patterns = components.get(DataComponentTypes.BANNER_PATTERNS);
         if (patterns != null) {
             BannerItem.convertBannerPattern(session, patterns, builder);
         }
         // Shield pattern backing color
-        Integer baseColor = components.get(DataComponentType.BASE_COLOR);
+        Integer baseColor = components.get(DataComponentTypes.BASE_COLOR);
         if (baseColor != null) {
             builder.putInt("Base", 15 - baseColor);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java b/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
index 5d14f748c..a53a9b7bc 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/ShulkerBoxItem.java
@@ -40,7 +40,7 @@ import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.item.CustomItemTranslator;
 import org.geysermc.geyser.translator.item.ItemTranslator;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
@@ -56,7 +56,7 @@ public class ShulkerBoxItem extends BlockItem {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        List<ItemStack> contents = components.get(DataComponentType.CONTAINER);
+        List<ItemStack> contents = components.get(DataComponentTypes.CONTAINER);
         if (contents == null || contents.isEmpty()) {
             // Empty shulker box
             return;
@@ -71,7 +71,7 @@ public class ShulkerBoxItem extends BlockItem {
 
             int bedrockData = boxMapping.getBedrockData();
             String bedrockIdentifier = boxMapping.getBedrockIdentifier();
-            DataComponents boxComponents = item.getDataComponents();
+            DataComponents boxComponents = item.getDataComponentsPatch();
 
             if (boxComponents != null) {
                 // Check for custom items
@@ -82,7 +82,7 @@ public class ShulkerBoxItem extends BlockItem {
                 } else {
                     // Manual checks for potions/tipped arrows
                     if (boxMapping.getJavaItem() instanceof PotionItem || boxMapping.getJavaItem() instanceof ArrowItem) {
-                        PotionContents potionContents = boxComponents.get(DataComponentType.POTION_CONTENTS);
+                        PotionContents potionContents = boxComponents.get(DataComponentTypes.POTION_CONTENTS);
                         if (potionContents != null) {
                             Potion potion = Potion.getByJavaId(potionContents.getPotionId());
                             if (potion != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
index 09e4ee21f..ae77be643 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/TippedArrowItem.java
@@ -31,7 +31,7 @@ import org.geysermc.geyser.inventory.item.Potion;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.ItemMappings;
 import org.geysermc.geyser.session.GeyserSession;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.PotionContents;
 
@@ -43,7 +43,7 @@ public class TippedArrowItem extends ArrowItem {
     @Override
     public ItemData.Builder translateToBedrock(GeyserSession session, int count, DataComponents components, ItemMapping mapping, ItemMappings mappings) {
         if (components != null) {
-            PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+            PotionContents potionContents = components.get(DataComponentTypes.POTION_CONTENTS);
             if (potionContents != null) {
                 Potion potion = Potion.getByJavaId(potionContents.getPotionId());
                 if (potion != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/TropicalFishBucketItem.java b/core/src/main/java/org/geysermc/geyser/item/type/TropicalFishBucketItem.java
index 7c5ad26f6..a93cc5934 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/TropicalFishBucketItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/TropicalFishBucketItem.java
@@ -36,7 +36,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.MinecraftLocale;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.List;
@@ -57,7 +57,7 @@ public class TropicalFishBucketItem extends Item {
         builder.putString("CustomName", MinecraftLocale.getLocaleString("entity.minecraft.tropical_fish", session.locale()));
         // Add Java's client side lore tag
         // Do you know how frequently Java NBT used to be before 1.20.5? It was a lot. And now it's just this lowly check.
-        NbtMap entityTag = components.get(DataComponentType.BUCKET_ENTITY_DATA);
+        NbtMap entityTag = components.get(DataComponentTypes.BUCKET_ENTITY_DATA);
         if (entityTag != null && !entityTag.isEmpty()) {
             //TODO test
             int bucketVariant = entityTag.getInt("BucketVariantTag");
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/WritableBookItem.java b/core/src/main/java/org/geysermc/geyser/item/type/WritableBookItem.java
index 55ad16b20..177ca0b2a 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/WritableBookItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/WritableBookItem.java
@@ -32,7 +32,7 @@ import org.cloudburstmc.nbt.NbtType;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Filterable;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.WritableBookContent;
@@ -49,7 +49,7 @@ public class WritableBookItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        WritableBookContent bookContent = components.get(DataComponentType.WRITABLE_BOOK_CONTENT);
+        WritableBookContent bookContent = components.get(DataComponentTypes.WRITABLE_BOOK_CONTENT);
         if (bookContent == null) {
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/item/type/WrittenBookItem.java b/core/src/main/java/org/geysermc/geyser/item/type/WrittenBookItem.java
index dd41a5e89..9cb661e70 100644
--- a/core/src/main/java/org/geysermc/geyser/item/type/WrittenBookItem.java
+++ b/core/src/main/java/org/geysermc/geyser/item/type/WrittenBookItem.java
@@ -33,7 +33,7 @@ import org.cloudburstmc.nbt.NbtType;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.text.MessageTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Filterable;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.WrittenBookContent;
@@ -54,7 +54,7 @@ public class WrittenBookItem extends Item {
     public void translateComponentsToBedrock(@NonNull GeyserSession session, @NonNull DataComponents components, @NonNull BedrockItemBuilder builder) {
         super.translateComponentsToBedrock(session, components, builder);
 
-        WrittenBookContent bookContent = components.get(DataComponentType.WRITTEN_BOOK_CONTENT);
+        WrittenBookContent bookContent = components.get(DataComponentTypes.WRITTEN_BOOK_CONTENT);
         if (bookContent == null) {
             return;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/level/WorldManager.java b/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
index c33fc7665..b0422913d 100644
--- a/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
+++ b/core/src/main/java/org/geysermc/geyser/level/WorldManager.java
@@ -38,6 +38,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.Difficulty;
 
@@ -202,7 +203,7 @@ public abstract class WorldManager {
         try {
             Map<DataComponentType<?>, DataComponent<?, ?>> components = new HashMap<>();
             Int2ObjectMaps.fastForEach(map, entry -> {
-                DataComponentType<?> type = DataComponentType.from(entry.getIntKey());
+                DataComponentType<?> type = DataComponentTypes.from(entry.getIntKey());
                 ByteBuf buf = Unpooled.wrappedBuffer(entry.getValue());
                 DataComponent<?, ?> value = type.readDataComponent(buf);
                 components.put(type, value);
diff --git a/core/src/main/java/org/geysermc/geyser/level/block/type/SkullBlock.java b/core/src/main/java/org/geysermc/geyser/level/block/type/SkullBlock.java
index 6e791d674..d41d160f8 100644
--- a/core/src/main/java/org/geysermc/geyser/level/block/type/SkullBlock.java
+++ b/core/src/main/java/org/geysermc/geyser/level/block/type/SkullBlock.java
@@ -34,7 +34,7 @@ import org.geysermc.geyser.inventory.GeyserItemStack;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.SkullCache;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.Collections;
@@ -79,7 +79,7 @@ public class SkullBlock extends Block {
                 .putInt("y", position.getY())
                 .putInt("z", position.getZ());
         DataComponents components = itemStack.getOrCreateComponents();
-        components.put(DataComponentType.BLOCK_ENTITY_DATA, builder.build());
+        components.put(DataComponentTypes.BLOCK_ENTITY_DATA, builder.build());
 
         UUID uuid = skull.getUuid();
         String texturesProperty = skull.getTexturesProperty();
@@ -87,7 +87,7 @@ public class SkullBlock extends Block {
         if (texturesProperty != null) {
             profile.setProperties(Collections.singletonList(new GameProfile.Property("textures", texturesProperty)));
         }
-        components.put(DataComponentType.PROFILE, profile);
+        components.put(DataComponentTypes.PROFILE, profile);
         return itemStack.getItemStack();
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
index d1cec3231..4b92c6250 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/CustomItemRegistryPopulator.java
@@ -48,7 +48,8 @@ import org.geysermc.geyser.registry.mappings.MappingsConfigReader;
 import org.geysermc.geyser.registry.type.GeyserMappingItem;
 import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.registry.type.NonVanillaItemRegistration;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.ArrayList;
@@ -134,8 +135,8 @@ public class CustomItemRegistryPopulator {
         String customIdentifier = customItemData.identifier();
 
         DataComponents components = new DataComponents(new HashMap<>());
-        components.put(DataComponentType.MAX_STACK_SIZE, customItemData.stackSize());
-        components.put(DataComponentType.MAX_DAMAGE, customItemData.maxDamage());
+        components.put(DataComponentTypes.MAX_STACK_SIZE, customItemData.stackSize());
+        components.put(DataComponentTypes.MAX_DAMAGE, customItemData.maxDamage());
 
         Item item = new Item(customIdentifier, Item.builder().components(components));
         Items.register(item, customItemData.javaId());
diff --git a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
index 829e8719e..ef3168f41 100644
--- a/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
+++ b/core/src/main/java/org/geysermc/geyser/registry/populator/DataComponentRegistryPopulator.java
@@ -39,6 +39,7 @@ import org.geysermc.geyser.registry.Registries;
 import org.geysermc.mcprotocollib.protocol.codec.MinecraftTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.io.InputStream;
@@ -74,7 +75,7 @@ public final class DataComponentRegistryPopulator {
                     byte[] bytes = Base64.getDecoder().decode(encodedValue);
                     ByteBuf buf = Unpooled.wrappedBuffer(bytes);
                     int varInt = MinecraftTypes.readVarInt(buf);
-                    DataComponentType<?> dataComponentType = DataComponentType.from(varInt);
+                    DataComponentType<?> dataComponentType = DataComponentTypes.from(varInt);
                     DataComponent<?, ?> dataComponent = dataComponentType.readDataComponent(buf);
 
                     map.put(dataComponentType, dataComponent);
diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 4a2863b9e..3e18a2829 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -291,7 +291,7 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
 
     private final PlayerInventory playerInventory;
     @Setter
-    private Inventory openInventory;
+    private @Nullable Inventory openInventory;
     @Setter
     private boolean closingInventory;
 
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java
index 8ad31949b..3338a11fc 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/BundleCache.java
@@ -41,7 +41,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.tags.ItemTag;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -75,7 +75,7 @@ public final class BundleCache {
             }
 
             BundleData bundleData;
-            List<ItemStack> rawContents = itemStack.getComponent(DataComponentType.BUNDLE_CONTENTS);
+            List<ItemStack> rawContents = itemStack.getComponent(DataComponentTypes.BUNDLE_CONTENTS);
             if (rawContents != null) {
                 // Use existing list and transform it to support net IDs
                 bundleData = new BundleData(session, rawContents);
diff --git a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
index eb57e0214..6108c6432 100644
--- a/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
+++ b/core/src/main/java/org/geysermc/geyser/session/cache/WorldCache.java
@@ -41,7 +41,7 @@ import org.geysermc.geyser.scoreboard.Scoreboard;
 import org.geysermc.geyser.scoreboard.ScoreboardUpdater.ScoreboardSession;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.ChunkUtils;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.UseCooldown;
 import org.geysermc.mcprotocollib.protocol.data.game.setting.Difficulty;
 
@@ -221,7 +221,7 @@ public final class WorldCache {
     }
 
     public boolean hasCooldown(GeyserItemStack item) {
-        UseCooldown cooldown = item.getComponent(DataComponentType.USE_COOLDOWN);
+        UseCooldown cooldown = item.getComponent(DataComponentTypes.USE_COOLDOWN);
         String cooldownGroup;
         if (cooldown != null && cooldown.cooldownGroup() != null) {
             cooldownGroup = cooldown.cooldownGroup().asString();
diff --git a/core/src/main/java/org/geysermc/geyser/translator/entity/EntityMetadataTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/entity/EntityMetadataTranslator.java
index 194194501..1c9f7e8fa 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/entity/EntityMetadataTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/entity/EntityMetadataTranslator.java
@@ -25,9 +25,9 @@
 
 package org.geysermc.geyser.translator.entity;
 
+import org.geysermc.geyser.entity.type.Entity;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
-import org.geysermc.geyser.entity.type.Entity;
 
 import java.util.function.BiConsumer;
 
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
index bbe94ba95..333304f61 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/BundleInventoryTranslator.java
@@ -44,7 +44,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.BundleCache;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.thirdparty.Fraction;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 
 import java.util.List;
@@ -308,13 +308,13 @@ public final class BundleInventoryTranslator {
         if (components != null) {
             // NOTE: this seems to be Java-only, so it can technically cause a bundle weight desync,
             // but it'll be so rare we can probably ignore it.
-            List<?> bees = components.get(DataComponentType.BEES);
+            List<?> bees = components.get(DataComponentTypes.BEES);
             if (bees != null && !bees.isEmpty()) {
                 // Bees be heavy, I guess.
                 return Fraction.ONE;
             }
         }
-        return Fraction.getFraction(1, itemStack.getComponentElseGet(DataComponentType.MAX_STACK_SIZE, () -> itemStack.asItem().defaultMaxStackSize()));
+        return Fraction.getFraction(1, itemStack.getComponentElseGet(DataComponentTypes.MAX_STACK_SIZE, () -> itemStack.asItem().defaultMaxStackSize()));
     }
 
     public static int capacityForItemStack(Fraction bundleWeight, GeyserItemStack itemStack) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index e6c670eea..21ffdfa96 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -75,7 +75,8 @@ import org.geysermc.geyser.translator.inventory.furnace.SmokerInventoryTranslato
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.ItemUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
@@ -261,7 +262,7 @@ public abstract class InventoryTranslator {
                             GeyserItemStack javaItem = inventory.getItem(sourceSlot);
                             if (javaItem.asItem() == Items.PLAYER_HEAD
                                     && javaItem.hasNonBaseComponents()) {
-                                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentType.PROFILE));
+                                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentTypes.PROFILE));
                             }
                         } else if (sourceSlot == 5) {
                             //we are probably removing the head, so restore the original skin
@@ -1040,7 +1041,7 @@ public abstract class InventoryTranslator {
             // As of 1.16.210: Bedrock needs confirmation on what the current item durability is.
             // If 0 is sent, then Bedrock thinks the item is not damaged
             int durability = 0;
-            Integer damage = itemStack.getComponent(DataComponentType.DAMAGE);
+            Integer damage = itemStack.getComponent(DataComponentTypes.DAMAGE);
             if (damage != null) {
                 durability = ItemUtils.getCorrectBedrockDurability(itemStack.asItem(), damage);
             }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
index c5814e336..f62bfbc7c 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LecternInventoryTranslator.java
@@ -43,7 +43,7 @@ import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.util.BlockEntityUtils;
 import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.WritableBookContent;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.WrittenBookContent;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerButtonClickPacket;
@@ -164,11 +164,11 @@ public class LecternInventoryTranslator extends AbstractBlockInventoryTranslator
             NbtMap blockEntityTag;
             if (book.hasNonBaseComponents()) {
                 int pages = 0;
-                WrittenBookContent writtenBookComponents = book.getComponent(DataComponentType.WRITTEN_BOOK_CONTENT);
+                WrittenBookContent writtenBookComponents = book.getComponent(DataComponentTypes.WRITTEN_BOOK_CONTENT);
                 if (writtenBookComponents != null) {
                     pages = writtenBookComponents.getPages().size();
                 } else {
-                    WritableBookContent writableBookComponents = book.getComponent(DataComponentType.WRITABLE_BOOK_CONTENT);
+                    WritableBookContent writableBookComponents = book.getComponent(DataComponentTypes.WRITABLE_BOOK_CONTENT);
                     if (writableBookComponents != null) {
                         pages = writableBookComponents.getPages().size();
                     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
index 9fb407336..d75228f9b 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/LoomInventoryTranslator.java
@@ -49,7 +49,7 @@ import org.geysermc.geyser.item.type.DyeItem;
 import org.geysermc.geyser.level.block.Blocks;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.BannerPatternLayer;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerButtonClickPacket;
 
 import java.util.ArrayList;
@@ -157,9 +157,9 @@ public class LoomInventoryTranslator extends AbstractBlockInventoryTranslator {
         inputCopy.setNetId(session.getNextItemNetId());
         BannerPatternLayer bannerPatternLayer = BannerItem.getJavaBannerPattern(session, pattern); // TODO
         if (bannerPatternLayer != null) {
-            List<BannerPatternLayer> patternsList = new ArrayList<>(inputCopy.getComponentElseGet(DataComponentType.BANNER_PATTERNS, ArrayList::new));
+            List<BannerPatternLayer> patternsList = new ArrayList<>(inputCopy.getComponentElseGet(DataComponentTypes.BANNER_PATTERNS, ArrayList::new));
             patternsList.add(bannerPatternLayer);
-            inputCopy.getOrCreateComponents().put(DataComponentType.BANNER_PATTERNS, patternsList);
+            inputCopy.getOrCreateComponents().put(DataComponentTypes.BANNER_PATTERNS, patternsList);
         }
 
         // Set the new item as the output
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index 45deacaad..f95bbb7c4 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -61,7 +61,7 @@ import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundSetCreativeModeSlotPacket;
 
 import java.util.Arrays;
@@ -110,7 +110,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             if (i == 5 &&
                     item.asItem() == Items.PLAYER_HEAD &&
                     item.hasNonBaseComponents()) {
-                FakeHeadProvider.setHead(session, session.getPlayerEntity(), item.getComponent(DataComponentType.PROFILE));
+                FakeHeadProvider.setHead(session, session.getPlayerEntity(), item.getComponent(DataComponentTypes.PROFILE));
             }
         }
         armorContentPacket.setContents(Arrays.asList(contents));
@@ -154,7 +154,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
             // Check for custom skull
             if (javaItem.asItem() == Items.PLAYER_HEAD
                     && javaItem.hasNonBaseComponents()) {
-                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentType.PROFILE));
+                FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentTypes.PROFILE));
             } else {
                 FakeHeadProvider.restoreOriginalSkin(session, session.getPlayerEntity());
             }
@@ -523,7 +523,7 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                         dropStack = javaCreativeItem;
                     } else {
                         // Specify custom count
-                        dropStack = new ItemStack(javaCreativeItem.getId(), dropAction.getCount(), javaCreativeItem.getDataComponents());
+                        dropStack = new ItemStack(javaCreativeItem.getId(), dropAction.getCount(), javaCreativeItem.getDataComponentsPatch());
                     }
                     ServerboundSetCreativeModeSlotPacket creativeDropPacket = new ServerboundSetCreativeModeSlotPacket((short)-1, dropStack);
                     session.sendDownstreamGamePacket(creativeDropPacket);
@@ -581,22 +581,20 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
     @Override
     public void closeInventory(GeyserSession session, Inventory inventory) {
         if (session.isServerRequestedClosePlayerInventory()) {
+            session.setServerRequestedClosePlayerInventory(false);
             Vector3i pos = session.getPlayerEntity().getPosition().toInt();
 
             UpdateBlockPacket packet = new UpdateBlockPacket();
             packet.setBlockPosition(pos);
             packet.setDefinition(session.getBlockMappings().getNetherPortalBlock());
             packet.setDataLayer(0);
-            packet.getFlags().add(UpdateBlockPacket.Flag.PRIORITY);
+            packet.getFlags().add(UpdateBlockPacket.Flag.NETWORK);
             session.sendUpstreamPacket(packet);
 
             session.scheduleInEventLoop(() -> {
                 BlockDefinition definition = session.getBlockMappings().getBedrockBlock(session.getGeyser().getWorldManager().blockAt(session, pos));
-
-                packet.setBlockPosition(pos);
                 packet.setDefinition(definition);
                 packet.getFlags().add(UpdateBlockPacket.Flag.PRIORITY);
-                packet.setDataLayer(0);
                 session.sendUpstreamPacket(packet);
             }, 50, TimeUnit.MILLISECONDS);
         }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
index c6318c461..d1a265039 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/CustomItemTranslator.java
@@ -27,7 +27,7 @@ package org.geysermc.geyser.translator.item;
 
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.CustomModelData;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import it.unimi.dsi.fastutil.Pair;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.cloudburstmc.protocol.bedrock.data.definitions.ItemDefinition;
@@ -55,7 +55,7 @@ public final class CustomItemTranslator {
 
         // TODO 1.21.4
         float customModelDataInt = 0;
-        CustomModelData customModelData = components.get(DataComponentType.CUSTOM_MODEL_DATA);
+        CustomModelData customModelData = components.get(DataComponentTypes.CUSTOM_MODEL_DATA);
         if (customModelData != null) {
             if (!customModelData.floats().isEmpty()) {
                 customModelDataInt = customModelData.floats().get(0);
@@ -63,7 +63,7 @@ public final class CustomItemTranslator {
         }
 
         boolean checkDamage = mapping.getJavaItem().defaultMaxDamage() > 0;
-        int damage = !checkDamage ? 0 : components.getOrDefault(DataComponentType.DAMAGE, 0);
+        int damage = !checkDamage ? 0 : components.getOrDefault(DataComponentTypes.DAMAGE, 0);
         boolean unbreakable = checkDamage && !isDamaged(components, damage);
 
         for (Pair<CustomItemOptions, ItemDefinition> mappingTypes : customMappings) {
@@ -119,7 +119,7 @@ public final class CustomItemTranslator {
 
     private static boolean isDamagableItem(DataComponents components) {
         // mapping.getMaxDamage > 0 should also be checked (return false if not true) but we already check prior to this function
-        return components.get(DataComponentType.UNBREAKABLE) == null;
+        return components.get(DataComponentTypes.UNBREAKABLE) == null;
     }
 
     private CustomItemTranslator() {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
index a41c4ee84..f2213bd07 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/item/ItemTranslator.java
@@ -64,7 +64,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.AttributeT
 import org.geysermc.mcprotocollib.protocol.data.game.entity.attribute.ModifierOperation;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.AdventureModePredicate;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemAttributeModifiers;
@@ -161,7 +161,7 @@ public final class ItemTranslator {
             return ItemData.AIR;
         }
         // Java item needs to be loaded separately. The mapping for tipped arrow would
-        return translateToBedrock(session, Registries.JAVA_ITEMS.get().get(stack.getId()), bedrockItem, stack.getAmount(), stack.getDataComponents())
+        return translateToBedrock(session, Registries.JAVA_ITEMS.get().get(stack.getId()), bedrockItem, stack.getAmount(), stack.getDataComponentsPatch())
                 .build();
     }
 
@@ -174,22 +174,22 @@ public final class ItemTranslator {
         // Translate item-specific components
         javaItem.translateComponentsToBedrock(session, components, nbtBuilder);
 
-        Rarity rarity = Rarity.fromId(components.get(DataComponentType.RARITY));
+        Rarity rarity = Rarity.fromId(components.get(DataComponentTypes.RARITY));
         String customName = getCustomName(session, customComponents, bedrockItem, rarity.getColor(), false, false);
         if (customName != null) {
-            PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+            PotionContents potionContents = components.get(DataComponentTypes.POTION_CONTENTS);
             // Make custom effect information visible
             // Ignore when item have "hide_additional_tooltip" component
-            if (potionContents != null && components.get(DataComponentType.HIDE_ADDITIONAL_TOOLTIP) == null) {
+            if (potionContents != null && components.get(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP) == null) {
                 customName += getPotionEffectInfo(potionContents, session.locale());
             }
 
             nbtBuilder.setCustomName(customName);
         }
 
-        boolean hideTooltips = components.get(DataComponentType.HIDE_TOOLTIP) != null;
+        boolean hideTooltips = components.get(DataComponentTypes.HIDE_TOOLTIP) != null;
 
-        ItemAttributeModifiers attributeModifiers = components.get(DataComponentType.ATTRIBUTE_MODIFIERS);
+        ItemAttributeModifiers attributeModifiers = components.get(DataComponentTypes.ATTRIBUTE_MODIFIERS);
         if (attributeModifiers != null && attributeModifiers.isShowInTooltip() && !hideTooltips) {
             // only add if attribute modifiers do not indicate to hide them
             addAttributeLore(session, attributeModifiers, nbtBuilder, session.locale());
@@ -200,7 +200,7 @@ public final class ItemTranslator {
         }
 
         // Add enchantment override. We can't remove it - enchantments would stop showing - but we can add it.
-        if (components.getOrDefault(DataComponentType.ENCHANTMENT_GLINT_OVERRIDE, false) && !GLINT_PRESENT.contains(javaItem)) {
+        if (components.getOrDefault(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, false) && !GLINT_PRESENT.contains(javaItem)) {
             NbtMapBuilder nbtMapBuilder = nbtBuilder.getOrCreateNbt();
             nbtMapBuilder.putIfAbsent("ench", NbtList.EMPTY);
         }
@@ -219,14 +219,14 @@ public final class ItemTranslator {
         }
 
         if (bedrockItem.getJavaItem().equals(Items.PLAYER_HEAD)) {
-            translatePlayerHead(session, components.get(DataComponentType.PROFILE), builder);
+            translatePlayerHead(session, components.get(DataComponentTypes.PROFILE), builder);
         }
 
         translateCustomItem(components, builder, bedrockItem);
 
         // Translate the canDestroy and canPlaceOn Java components
-        AdventureModePredicate canDestroy = components.get(DataComponentType.CAN_BREAK);
-        AdventureModePredicate canPlaceOn = components.get(DataComponentType.CAN_PLACE_ON);
+        AdventureModePredicate canDestroy = components.get(DataComponentTypes.CAN_BREAK);
+        AdventureModePredicate canPlaceOn = components.get(DataComponentTypes.CAN_PLACE_ON);
         String[] canBreak = getCanModify(session, canDestroy);
         String[] canPlace = getCanModify(session, canPlaceOn);
         if (canBreak != null) {
@@ -422,7 +422,7 @@ public final class ItemTranslator {
         int maxDurability = item.defaultMaxDamage();
 
         if (maxDurability != 0 && components != null) {
-            Integer durabilityComponent = components.get(DataComponentType.DAMAGE);
+            Integer durabilityComponent = components.get(DataComponentTypes.DAMAGE);
             if (durabilityComponent != null) {
                 int durability = maxDurability - durabilityComponent;
                 if (durability != maxDurability) {
@@ -516,7 +516,7 @@ public final class ItemTranslator {
         }
 
         if (mapping.getJavaItem().equals(Items.PLAYER_HEAD)) {
-            CustomSkull customSkull = getCustomSkull(itemStack.getComponent(DataComponentType.PROFILE));
+            CustomSkull customSkull = getCustomSkull(itemStack.getComponent(DataComponentTypes.PROFILE));
             if (customSkull != null) {
                 itemDefinition = session.getItemMappings().getCustomBlockItemDefinitions().get(customSkull.getCustomBlockData());
             }
@@ -538,26 +538,26 @@ public final class ItemTranslator {
     public static String getCustomName(GeyserSession session, DataComponents components, ItemMapping mapping, char translationColor, boolean customNameOnly, boolean includeAll) {
         if (components != null) {
             // ItemStack#getHoverName as of 1.20.5
-            Component customName = components.get(DataComponentType.CUSTOM_NAME);
+            Component customName = components.get(DataComponentTypes.CUSTOM_NAME);
             if (customName != null) {
                 return MessageTranslator.convertMessage(customName, session.locale());
             }
             if (!customNameOnly) {
-                PotionContents potionContents = components.get(DataComponentType.POTION_CONTENTS);
+                PotionContents potionContents = components.get(DataComponentTypes.POTION_CONTENTS);
                 if (potionContents != null) {
-                    String potionName = getPotionName(potionContents, mapping, components.get(DataComponentType.HIDE_ADDITIONAL_TOOLTIP) != null, session.locale());
+                    String potionName = getPotionName(potionContents, mapping, components.get(DataComponentTypes.HIDE_ADDITIONAL_TOOLTIP) != null, session.locale());
                     if (potionName != null) {
                         return ChatColor.RESET + ChatColor.ESCAPE + translationColor + potionName;
                     }
                 }
                 if (includeAll) {
                     // Fix book title display in tooltips of shulker box
-                    WrittenBookContent bookContent = components.get(DataComponentType.WRITTEN_BOOK_CONTENT);
+                    WrittenBookContent bookContent = components.get(DataComponentTypes.WRITTEN_BOOK_CONTENT);
                     if (bookContent != null) {
                         return ChatColor.RESET + ChatColor.ESCAPE + translationColor + bookContent.getTitle().getRaw();
                     }
                 }
-                customName = components.get(DataComponentType.ITEM_NAME);
+                customName = components.get(DataComponentTypes.ITEM_NAME);
                 if (customName != null) {
                     // Get the translated name and prefix it with a reset char to prevent italics - matches Java Edition
                     // behavior as of 1.21
diff --git a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/VaultBlockEntityTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/VaultBlockEntityTranslator.java
index 81be5b33a..46a4b78bf 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/VaultBlockEntityTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/level/block/entity/VaultBlockEntityTranslator.java
@@ -43,7 +43,7 @@ import org.geysermc.geyser.registry.type.ItemMapping;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.item.BedrockItemBuilder;
 import org.geysermc.geyser.translator.item.ItemTranslator;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
 import org.geysermc.mcprotocollib.protocol.data.game.level.block.BlockEntityType;
@@ -132,7 +132,7 @@ public class VaultBlockEntityTranslator extends BlockEntityTranslator {
             "minecraft:potion_contents", (session, tag, components) -> {
                 String potionId = tag.getString("potion");
                 Potion potion = Potion.getByJavaIdentifier(potionId);
-                components.put(DataComponentType.POTION_CONTENTS, potion.toComponent());
+                components.put(DataComponentTypes.POTION_CONTENTS, potion.toComponent());
             },
             "minecraft:enchantments", (session, tag, components) -> { // Enchanted books already have glint. Translating them doesn't matter.
                 NbtMap levels = tag.getCompound("levels");
@@ -145,6 +145,6 @@ public class VaultBlockEntityTranslator extends BlockEntityTranslator {
                         }
                     }
                 }
-                components.put(DataComponentType.ENCHANTMENTS, new ItemEnchantments(enchantments, true));
+                components.put(DataComponentTypes.ENCHANTMENTS, new ItemEnchantments(enchantments, true));
             });
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java
index 700ba0532..e1ab6d242 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockBookEditTranslator.java
@@ -26,7 +26,7 @@
 package org.geysermc.geyser.translator.protocol.bedrock;
 
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Filterable;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.WritableBookContent;
@@ -57,7 +57,7 @@ public class BedrockBookEditTranslator extends PacketTranslator<BookEditPacket>
             ItemStack bookItem = new ItemStack(itemStack.getJavaId(), itemStack.getAmount(), components);
             List<String> pages = new LinkedList<>();
 
-            WritableBookContent writableBookContent = components.get(DataComponentType.WRITABLE_BOOK_CONTENT);
+            WritableBookContent writableBookContent = components.get(DataComponentTypes.WRITABLE_BOOK_CONTENT);
             if (writableBookContent != null) {
                 for (Filterable<String> page : writableBookContent.getPages()) {
                     pages.add(page.getRaw());
@@ -125,7 +125,7 @@ public class BedrockBookEditTranslator extends PacketTranslator<BookEditPacket>
             for (String raw : pages) {
                 filterablePages.add(new Filterable<>(raw, null));
             }
-            components.put(DataComponentType.WRITABLE_BOOK_CONTENT, new WritableBookContent(filterablePages));
+            components.put(DataComponentTypes.WRITABLE_BOOK_CONTENT, new WritableBookContent(filterablePages));
 
             // Update local copy
             session.getPlayerInventory().setItem(36 + session.getPlayerInventory().getHeldItemSlot(), GeyserItemStack.from(bookItem), session);
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
index db1a05011..2a3d1eb57 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockInventoryTransactionTranslator.java
@@ -85,7 +85,7 @@ import org.geysermc.mcprotocollib.protocol.data.game.entity.player.Hand;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.InteractAction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PlayerAction;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.Instrument;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.inventory.ServerboundContainerClickPacket;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundInteractPacket;
@@ -385,7 +385,7 @@ public class BedrockInventoryTransactionTranslator extends PacketTranslator<Inve
                                 if (!session.getWorldCache().hasCooldown(session.getPlayerInventory().getItemInHand())) {
                                     Holder<Instrument> holder = session.getPlayerInventory()
                                         .getItemInHand()
-                                        .getComponent(DataComponentType.INSTRUMENT);
+                                        .getComponent(DataComponentTypes.INSTRUMENT);
                                     if (holder != null) {
                                         GeyserInstrument instrument = GeyserInstrument.fromHolder(session, holder);
                                         if (instrument.bedrockInstrument() != null) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
index 8e83c9f55..332ef32db 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaRecipeBookAddTranslator.java
@@ -225,7 +225,7 @@ public class JavaRecipeBookAddTranslator extends PacketTranslator<ClientboundRec
                 } else if (!(subDisplay instanceof ItemStackSlotDisplay itemStackSlotDisplay)) {
                     id = -1;
                 } else if (itemStackSlotDisplay.itemStack().getAmount() == 1
-                    && itemStackSlotDisplay.itemStack().getDataComponents() == null) {
+                    && itemStackSlotDisplay.itemStack().getDataComponentsPatch() == null) {
                     id = itemStackSlotDisplay.itemStack().getId();
                 } else {
                     id = -1;
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
index cdadb1bb9..388c03bab 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/entity/JavaSetEquipmentTranslator.java
@@ -36,7 +36,7 @@ import org.geysermc.geyser.translator.protocol.PacketTranslator;
 import org.geysermc.geyser.translator.protocol.Translator;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.Equipment;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.ClientboundSetEquipmentPacket;
 
 @Translator(packet = ClientboundSetEquipmentPacket.class)
@@ -65,8 +65,8 @@ public class JavaSetEquipmentTranslator extends PacketTranslator<ClientboundSetE
                     if (livingEntity instanceof PlayerEntity
                             && javaItem != null
                             && javaItem.getId() == Items.PLAYER_HEAD.javaId()
-                            && javaItem.getDataComponents() != null) {
-                        FakeHeadProvider.setHead(session, (PlayerEntity) livingEntity, GeyserItemStack.from(javaItem).getComponent(DataComponentType.PROFILE));
+                            && javaItem.getDataComponentsPatch() != null) {
+                        FakeHeadProvider.setHead(session, (PlayerEntity) livingEntity, GeyserItemStack.from(javaItem).getComponent(DataComponentTypes.PROFILE));
                     } else {
                         FakeHeadProvider.restoreOriginalSkin(session, livingEntity);
                     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java
index d9c4566dd..d8d0a83af 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/inventory/JavaContainerCloseTranslator.java
@@ -25,6 +25,7 @@
 
 package org.geysermc.geyser.translator.protocol.java.inventory;
 
+import org.geysermc.geyser.inventory.PlayerInventory;
 import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.inventory.ClientboundContainerClosePacket;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.translator.protocol.PacketTranslator;
@@ -38,7 +39,7 @@ public class JavaContainerCloseTranslator extends PacketTranslator<ClientboundCo
     public void translate(GeyserSession session, ClientboundContainerClosePacket packet) {
         // Sometimes the server can request a window close of ID 0... when the window isn't even open
         // Don't confirm in this instance
-        session.setServerRequestedClosePlayerInventory(packet.getContainerId() == 0);
+        session.setServerRequestedClosePlayerInventory(packet.getContainerId() == 0 && session.getOpenInventory() instanceof PlayerInventory);
         InventoryUtils.closeInventory(session, packet.getContainerId(), (session.getOpenInventory() != null && session.getOpenInventory().getJavaId() == packet.getContainerId()));
     }
 }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/sound/BlockSoundInteractionTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/sound/BlockSoundInteractionTranslator.java
index b00d3ad2f..ed78bd6ef 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/sound/BlockSoundInteractionTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/sound/BlockSoundInteractionTranslator.java
@@ -31,7 +31,7 @@ import org.geysermc.geyser.level.block.type.BlockState;
 import org.geysermc.geyser.registry.Registries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.player.GameMode;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 
 import java.util.Map;
 
@@ -100,7 +100,7 @@ public interface BlockSoundInteractionTranslator extends SoundInteractionTransla
             return true;
         }
 
-        var canPlaceOn = itemInHand.getComponent(DataComponentType.CAN_PLACE_ON);
+        var canPlaceOn = itemInHand.getComponent(DataComponentTypes.CAN_PLACE_ON);
         if (canPlaceOn == null || canPlaceOn.getPredicates().isEmpty()) {
             // Component doesn't exist - no restrictions apply.
             return true;
diff --git a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
index dd58672f8..d3b4f7b97 100644
--- a/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/BlockUtils.java
@@ -33,7 +33,7 @@ import org.geysermc.geyser.registry.BlockRegistries;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.session.cache.EntityEffectCache;
 import org.geysermc.geyser.translator.collision.BlockCollision;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ToolData;
 
 public final class BlockUtils {
@@ -57,7 +57,7 @@ public final class BlockUtils {
     }
 
     private static boolean isCorrectItemForDrops(GeyserSession session, Block block, GeyserItemStack stack) {
-        ToolData tool = stack.getComponent(DataComponentType.TOOL);
+        ToolData tool = stack.getComponent(DataComponentTypes.TOOL);
         if (tool == null) {
             return false;
         }
@@ -74,7 +74,7 @@ public final class BlockUtils {
     }
 
     private static float getItemDestroySpeed(GeyserSession session, Block block, GeyserItemStack stack) {
-        ToolData tool = stack.getComponent(DataComponentType.TOOL);
+        ToolData tool = stack.getComponent(DataComponentTypes.TOOL);
         if (tool == null) {
             return 1f;
         }
diff --git a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
index 4266c33ce..57afdf44c 100644
--- a/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/InventoryUtils.java
@@ -319,7 +319,7 @@ public class InventoryUtils {
             ItemStack other = itemStackSlotDisplay.itemStack();
             // Amount check might be flimsy?
             return itemStack.getJavaId() == other.getId() && itemStack.getAmount() >= other.getAmount()
-                && Objects.equals(itemStack.getComponents(), other.getDataComponents());
+                && Objects.equals(itemStack.getComponents(), other.getDataComponentsPatch());
         }
         if (slotDisplay instanceof TagSlotDisplay tagSlotDisplay) {
             return session.getTagCache().is(new Tag<>(JavaRegistries.ITEM, tagSlotDisplay.tag()), itemStack.asItem());
diff --git a/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java b/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java
index eca9756e6..6206da048 100644
--- a/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java
+++ b/core/src/main/java/org/geysermc/geyser/util/ItemUtils.java
@@ -34,7 +34,7 @@ import org.geysermc.geyser.item.type.FishingRodItem;
 import org.geysermc.geyser.item.type.Item;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.mcprotocollib.protocol.data.game.item.ItemStack;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentType;
+import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponents;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.ItemEnchantments;
 
@@ -51,7 +51,7 @@ public final class ItemUtils {
             return 0;
         }
 
-        ItemEnchantments enchantmentData = components.get(DataComponentType.ENCHANTMENTS);
+        ItemEnchantments enchantmentData = components.get(DataComponentTypes.ENCHANTMENTS);
         if (enchantmentData == null) {
             return 0;
         }
@@ -69,12 +69,12 @@ public final class ItemUtils {
         if (itemStack == null) {
             return false;
         }
-        DataComponents components = itemStack.getDataComponents();
+        DataComponents components = itemStack.getDataComponentsPatch();
         if (components == null) {
             return false;
         }
 
-        ItemEnchantments enchantmentData = components.get(DataComponentType.ENCHANTMENTS);
+        ItemEnchantments enchantmentData = components.get(DataComponentTypes.ENCHANTMENTS);
         if (enchantmentData == null) {
             return false;
         }
diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
index e01ea7cd3..2ad0ca8ad 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
@@ -45,7 +45,7 @@ import org.geysermc.mcprotocollib.auth.GameProfile;
 import org.geysermc.mcprotocollib.protocol.data.game.PlayerListEntry;
 import org.geysermc.mcprotocollib.protocol.data.game.PlayerListEntryAction;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.EntityMetadata;
-import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataType;
+import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.MetadataTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.BooleanEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ByteEntityMetadata;
 import org.geysermc.mcprotocollib.protocol.data.game.entity.metadata.type.ObjectEntityMetadata;
@@ -213,9 +213,9 @@ public class ScoreboardIssueTests {
 
             // metadata set: invisible, custom name, custom name visible
             context.translate(setEntityDataTranslator, new ClientboundSetEntityDataPacket(1298, new EntityMetadata<?, ?>[]{
-                new ByteEntityMetadata(0, MetadataType.BYTE, (byte) 0x20),
-                new ObjectEntityMetadata<>(2, MetadataType.OPTIONAL_CHAT, Optional.of(Component.text("tesss"))),
-                new BooleanEntityMetadata(3, MetadataType.BOOLEAN, true)
+                new ByteEntityMetadata(0, MetaDataTypes.BYTE, (byte) 0x20),
+                new ObjectEntityMetadata<>(2, MetaDataTypes.OPTIONAL_CHAT, Optional.of(Component.text("tesss"))),
+                new BooleanEntityMetadata(3, MetaDataTypes.BOOLEAN, true)
             }));
 
             assertNextPacketMatch(context, SetEntityDataPacket.class, packet -> {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index f9bfd758e..3ab475829 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -15,7 +15,7 @@ protocol-common = "3.0.0.Beta6-20250212.131009-3"
 protocol-codec = "3.0.0.Beta6-20250212.131009-3"
 raknet = "1.0.0.CR3-20250128.101054-17"
 minecraftauth = "4.1.1"
-mcprotocollib = "1.21.4-20250216.154737-20"
+mcprotocollib = "1.21.4-20250218.175633-22"
 adventure = "4.14.0"
 adventure-platform = "4.3.0"
 junit = "5.9.2"

From ebaaed7542e681955330696985bd4326a4d15b45 Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Wed, 19 Feb 2025 14:46:46 +0100
Subject: [PATCH 160/165] fix test

---
 .../geyser/scoreboard/network/ScoreboardIssueTests.java     | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
index 2ad0ca8ad..2239c9819 100644
--- a/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
+++ b/core/src/test/java/org/geysermc/geyser/scoreboard/network/ScoreboardIssueTests.java
@@ -213,9 +213,9 @@ public class ScoreboardIssueTests {
 
             // metadata set: invisible, custom name, custom name visible
             context.translate(setEntityDataTranslator, new ClientboundSetEntityDataPacket(1298, new EntityMetadata<?, ?>[]{
-                new ByteEntityMetadata(0, MetaDataTypes.BYTE, (byte) 0x20),
-                new ObjectEntityMetadata<>(2, MetaDataTypes.OPTIONAL_CHAT, Optional.of(Component.text("tesss"))),
-                new BooleanEntityMetadata(3, MetaDataTypes.BOOLEAN, true)
+                new ByteEntityMetadata(0, MetadataTypes.BYTE, (byte) 0x20),
+                new ObjectEntityMetadata<>(2, MetadataTypes.OPTIONAL_CHAT, Optional.of(Component.text("tesss"))),
+                new BooleanEntityMetadata(3, MetadataTypes.BOOLEAN, true)
             }));
 
             assertNextPacketMatch(context, SetEntityDataPacket.class, packet -> {

From fd4c80598ed40c2069b2ccc83c39e3fe1cc46aef Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Thu, 20 Feb 2025 17:01:39 +0100
Subject: [PATCH 161/165] Fix skins not showing on 1.21.60

---
 .../geyser/session/GeyserSession.java         | 10 +++++--
 .../geyser/skin/FakeHeadProvider.java         | 30 ++++++++++++-------
 .../org/geysermc/geyser/skin/SkinManager.java | 25 +++++++++-------
 .../geyser/skin/SkullSkinManager.java         | 22 ++++++++------
 .../inventory/InventoryTranslator.java        |  5 ++--
 .../inventory/PlayerInventoryTranslator.java  | 18 ++++++++---
 6 files changed, 70 insertions(+), 40 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
index 3e18a2829..261e57aed 100644
--- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
+++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java
@@ -35,7 +35,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
-import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
 import lombok.AccessLevel;
 import lombok.Getter;
 import lombok.Setter;
@@ -94,6 +93,7 @@ import org.cloudburstmc.protocol.bedrock.packet.ItemComponentPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelEventPacket;
 import org.cloudburstmc.protocol.bedrock.packet.LevelSoundEvent2Packet;
 import org.cloudburstmc.protocol.bedrock.packet.PlayStatusPacket;
+import org.cloudburstmc.protocol.bedrock.packet.SetCommandsEnabledPacket;
 import org.cloudburstmc.protocol.bedrock.packet.SetTimePacket;
 import org.cloudburstmc.protocol.bedrock.packet.StartGamePacket;
 import org.cloudburstmc.protocol.bedrock.packet.SyncEntityPropertyPacket;
@@ -331,10 +331,10 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
     private final Map<Vector3i, ItemFrameEntity> itemFrameCache = new Object2ObjectOpenHashMap<>();
 
     /**
-     * A list of all players that have a player head on with a custom texture.
+     * A map of all players (and their heads) that are wearing a player head with a custom texture.
      * Our workaround for these players is to give them a custom skin and geometry to emulate wearing a custom skull.
      */
-    private final Set<UUID> playerWithCustomHeads = new ObjectOpenHashSet<>();
+    private final Map<UUID, GameProfile> playerWithCustomHeads = new Object2ObjectOpenHashMap<>();
 
     @Setter
     private boolean droppingLecternBook;
@@ -787,6 +787,10 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
         playStatusPacket.setStatus(PlayStatusPacket.Status.PLAYER_SPAWN);
         upstream.sendPacket(playStatusPacket);
 
+        SetCommandsEnabledPacket setCommandsEnabledPacket = new SetCommandsEnabledPacket();
+        setCommandsEnabledPacket.setCommandsEnabled(!geyser.getConfig().isXboxAchievementsEnabled());
+        upstream.sendPacket(setCommandsEnabledPacket);
+
         UpdateAttributesPacket attributesPacket = new UpdateAttributesPacket();
         attributesPacket.setRuntimeEntityId(getPlayerEntity().getGeyserId());
         // Default move speed
diff --git a/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java b/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java
index 2434d6d91..12f002025 100644
--- a/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java
+++ b/core/src/main/java/org/geysermc/geyser/skin/FakeHeadProvider.java
@@ -109,6 +109,12 @@ public class FakeHeadProvider {
             return;
         }
 
+        GameProfile current = session.getPlayerWithCustomHeads().get(entity.getUuid());
+        if (profile.equals(current)) {
+            // We already did this, no need to re-compute
+            return;
+        }
+
         Map<TextureType, Texture> textures;
         try {
             textures = profile.getTextures(false);
@@ -118,7 +124,7 @@ public class FakeHeadProvider {
         }
 
         if (textures == null || textures.isEmpty()) {
-            loadHead(session, entity, profile.getName());
+            loadHeadFromProfile(session, entity, profile);
             return;
         }
 
@@ -133,16 +139,18 @@ public class FakeHeadProvider {
 
         boolean isAlex = skinTexture.getModel() == TextureModel.SLIM;
 
-        loadHead(session, entity, new GameProfileData(skinTexture.getURL(), capeUrl, isAlex));
+        loadHeadFromProfile(session, entity, new GameProfileData(skinTexture.getURL(), capeUrl, isAlex), profile);
     }
 
-    public static void loadHead(GeyserSession session, PlayerEntity entity, String owner) {
-        if (owner == null || owner.isEmpty()) {
-            return;
+    public static void loadHeadFromProfile(GeyserSession session, PlayerEntity entity, GameProfile profile) {
+        CompletableFuture<String> texturesFuture;
+        if (profile.getId() != null) {
+            texturesFuture = SkinProvider.requestTexturesFromUUID(profile.getId().toString());
+        } else {
+            texturesFuture = SkinProvider.requestTexturesFromUsername(profile.getName());
         }
 
-        CompletableFuture<String> completableFuture = SkinProvider.requestTexturesFromUsername(owner);
-        completableFuture.whenCompleteAsync((encodedJson, throwable) -> {
+        texturesFuture.whenCompleteAsync((encodedJson, throwable) -> {
             if (throwable != null) {
                 GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.skin.fail", entity.getUuid()), throwable);
                 return;
@@ -152,17 +160,17 @@ public class FakeHeadProvider {
                 if (gameProfileData == null) {
                     return;
                 }
-                loadHead(session, entity, gameProfileData);
+                loadHeadFromProfile(session, entity, gameProfileData, profile);
             } catch (IOException e) {
                 GeyserImpl.getInstance().getLogger().error(GeyserLocale.getLocaleStringLog("geyser.skin.fail", entity.getUuid(), e.getMessage()));
             }
         });
     }
 
-    public static void loadHead(GeyserSession session, PlayerEntity entity, SkinManager.GameProfileData gameProfileData) {
+    public static void loadHeadFromProfile(GeyserSession session, PlayerEntity entity, SkinManager.GameProfileData gameProfileData, GameProfile profile) {
         String fakeHeadSkinUrl = gameProfileData.skinUrl();
 
-        session.getPlayerWithCustomHeads().add(entity.getUuid());
+        session.getPlayerWithCustomHeads().put(entity.getUuid(), profile);
         String texturesProperty = entity.getTexturesProperty();
         SkinProvider.getExecutorService().execute(() -> {
             try {
@@ -179,7 +187,7 @@ public class FakeHeadProvider {
             return;
         }
 
-        if (!session.getPlayerWithCustomHeads().remove(entity.getUuid())) {
+        if (session.getPlayerWithCustomHeads().remove(entity.getUuid()) == null) {
             return;
         }
 
diff --git a/core/src/main/java/org/geysermc/geyser/skin/SkinManager.java b/core/src/main/java/org/geysermc/geyser/skin/SkinManager.java
index 4c3db7504..8d4090ee4 100644
--- a/core/src/main/java/org/geysermc/geyser/skin/SkinManager.java
+++ b/core/src/main/java/org/geysermc/geyser/skin/SkinManager.java
@@ -47,7 +47,6 @@ import org.geysermc.geyser.text.GeyserLocale;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Base64;
-import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
 import java.util.function.Consumer;
@@ -102,7 +101,7 @@ public class SkinManager {
                                                             Skin skin,
                                                             Cape cape,
                                                             SkinGeometry geometry) {
-        SerializedSkin serializedSkin = getSkin(skin.textureUrl(), skin, cape, geometry);
+        SerializedSkin serializedSkin = getSkin(session, skin.textureUrl(), skin, cape, geometry);
 
         // This attempts to find the XUID of the player so profile images show up for Xbox accounts
         String xuid = "";
@@ -138,7 +137,6 @@ public class SkinManager {
         SkinGeometry geometry = skinData.geometry();
 
         if (entity.getUuid().equals(session.getPlayerEntity().getUuid())) {
-            // TODO is this special behavior needed?
             PlayerListPacket.Entry updatedEntry = buildEntryManually(
                     session,
                     entity.getUuid(),
@@ -158,17 +156,24 @@ public class SkinManager {
             packet.setUuid(entity.getUuid());
             packet.setOldSkinName("");
             packet.setNewSkinName(skin.textureUrl());
-            packet.setSkin(getSkin(skin.textureUrl(), skin, cape, geometry));
+            packet.setSkin(getSkin(session, skin.textureUrl(), skin, cape, geometry));
             packet.setTrustedSkin(true);
             session.sendUpstreamPacket(packet);
         }
     }
 
-    private static SerializedSkin getSkin(String skinId, Skin skin, Cape cape, SkinGeometry geometry) {
-        return SerializedSkin.of(skinId, "", geometry.geometryName(),
-                ImageData.of(skin.skinData()), Collections.emptyList(),
-                ImageData.of(cape.capeData()), geometry.geometryData(),
-                "", true, false, false, cape.capeId(), skinId);
+    private static SerializedSkin getSkin(GeyserSession session, String skinId, Skin skin, Cape cape, SkinGeometry geometry) {
+        return SerializedSkin.builder()
+            .skinId(skinId)
+            .skinResourcePatch(geometry.geometryName())
+            .skinData(ImageData.of(skin.skinData()))
+            .capeData(ImageData.of(cape.capeData()))
+            .geometryData(geometry.geometryData())
+            .premium(true)
+            .capeId(cape.capeId())
+            .fullSkinId(skinId)
+            .geometryDataEngineVersion(session.getClientData().getGameVersion())
+            .build();
     }
 
     public static void requestAndHandleSkinAndCape(PlayerEntity entity, GeyserSession session,
@@ -334,4 +339,4 @@ public class SkinManager {
 
         private static final String DEFAULT_FLOODGATE_STEVE = "https://textures.minecraft.net/texture/31f477eb1a7beee631c2ca64d06f8f68fa93a3386d04452ab27f43acdf1b60cb";
     }
-}
\ No newline at end of file
+}
diff --git a/core/src/main/java/org/geysermc/geyser/skin/SkullSkinManager.java b/core/src/main/java/org/geysermc/geyser/skin/SkullSkinManager.java
index e3f00d3b7..41e4025f1 100644
--- a/core/src/main/java/org/geysermc/geyser/skin/SkullSkinManager.java
+++ b/core/src/main/java/org/geysermc/geyser/skin/SkullSkinManager.java
@@ -35,20 +35,24 @@ import org.geysermc.geyser.entity.type.player.SkullPlayerEntity;
 import org.geysermc.geyser.session.GeyserSession;
 import org.geysermc.geyser.text.GeyserLocale;
 
-import java.util.Collections;
 import java.util.function.BiConsumer;
 import java.util.function.Consumer;
 
 public class SkullSkinManager extends SkinManager {
 
-    public static SerializedSkin buildSkullEntryManually(String skinId, byte[] skinData) {
-        // Prevents https://cdn.discordapp.com/attachments/613194828359925800/779458146191147008/unknown.png
+    public static SerializedSkin buildSkullEntryManually(GeyserSession session, String skinId, byte[] skinData) {
         skinId = skinId + "_skull";
-        return SerializedSkin.of(
-                skinId, "", SkinProvider.SKULL_GEOMETRY.geometryName(), ImageData.of(skinData), Collections.emptyList(),
-                ImageData.of(SkinProvider.EMPTY_CAPE.capeData()), SkinProvider.SKULL_GEOMETRY.geometryData(),
-                "", true, false, false, SkinProvider.EMPTY_CAPE.capeId(), skinId
-        );
+        return SerializedSkin.builder()
+            .skinId(skinId)
+            .skinResourcePatch(SkinProvider.SKULL_GEOMETRY.geometryName())
+            .skinData(ImageData.of(skinData))
+            .capeData(ImageData.of(SkinProvider.EMPTY_CAPE.capeData()))
+            .geometryData(SkinProvider.SKULL_GEOMETRY.geometryData())
+            .premium(true)
+            .capeId(SkinProvider.EMPTY_CAPE.capeId())
+            .fullSkinId(skinId)
+            .geometryDataEngineVersion(session.getClientData().getGameVersion())
+            .build();
     }
 
     public static void requestAndHandleSkin(SkullPlayerEntity entity, GeyserSession session,
@@ -59,7 +63,7 @@ public class SkullSkinManager extends SkinManager {
                 packet.setUuid(entity.getUuid());
                 packet.setOldSkinName("");
                 packet.setNewSkinName(skin.textureUrl());
-                packet.setSkin(buildSkullEntryManually(skin.textureUrl(), skin.skinData()));
+                packet.setSkin(buildSkullEntryManually(session, skin.textureUrl(), skin.skinData()));
                 packet.setTrustedSkin(true);
                 session.sendUpstreamPacket(packet);
             } catch (Exception e) {
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
index 21ffdfa96..6394c5312 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/InventoryTranslator.java
@@ -76,7 +76,6 @@ import org.geysermc.geyser.util.InventoryUtils;
 import org.geysermc.geyser.util.ItemUtils;
 import org.geysermc.mcprotocollib.protocol.data.game.inventory.ContainerType;
 import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
-import org.geysermc.mcprotocollib.protocol.data.game.item.component.DataComponentTypes;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.EmptySlotDisplay;
 import org.geysermc.mcprotocollib.protocol.data.game.recipe.display.slot.SlotDisplay;
 
@@ -258,14 +257,14 @@ public abstract class InventoryTranslator {
 
                     if (this instanceof PlayerInventoryTranslator) {
                         if (destSlot == 5) {
-                            //only set the head if the destination is the head slot
+                            // only set the head if the destination is the head slot
                             GeyserItemStack javaItem = inventory.getItem(sourceSlot);
                             if (javaItem.asItem() == Items.PLAYER_HEAD
                                     && javaItem.hasNonBaseComponents()) {
                                 FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentTypes.PROFILE));
                             }
                         } else if (sourceSlot == 5) {
-                            //we are probably removing the head, so restore the original skin
+                            // we are probably removing the head, so restore the original skin
                             FakeHeadProvider.restoreOriginalSkin(session, session.getPlayerEntity());
                         }
                     }
diff --git a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
index f95bbb7c4..7064f1169 100644
--- a/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
+++ b/core/src/main/java/org/geysermc/geyser/translator/inventory/PlayerInventoryTranslator.java
@@ -279,9 +279,22 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
                         return bundleResponse;
                     }
 
+                    int sourceSlot = bedrockSlotToJava(transferAction.getSource());
+                    int destSlot = bedrockSlotToJava(transferAction.getDestination());
+                    if (destSlot == 5) {
+                        // only set the head if the destination is the head slot
+                        GeyserItemStack javaItem = inventory.getItem(sourceSlot);
+                        if (javaItem.asItem() == Items.PLAYER_HEAD
+                            && javaItem.hasNonBaseComponents()) {
+                            FakeHeadProvider.setHead(session, session.getPlayerEntity(), javaItem.getComponent(DataComponentTypes.PROFILE));
+                        }
+                    } else if (sourceSlot == 5) {
+                        // we are probably removing the head, so restore the original skin
+                        FakeHeadProvider.restoreOriginalSkin(session, session.getPlayerEntity());
+                    }
+
                     int transferAmount = transferAction.getCount();
                     if (isCursor(transferAction.getDestination())) {
-                        int sourceSlot = bedrockSlotToJava(transferAction.getSource());
                         GeyserItemStack sourceItem = inventory.getItem(sourceSlot);
                         if (playerInv.getCursor().isEmpty()) {
                             playerInv.setCursor(sourceItem.copy(0), session);
@@ -294,7 +307,6 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
 
                         affectedSlots.add(sourceSlot);
                     } else if (isCursor(transferAction.getSource())) {
-                        int destSlot = bedrockSlotToJava(transferAction.getDestination());
                         GeyserItemStack sourceItem = playerInv.getCursor();
                         if (inventory.getItem(destSlot).isEmpty()) {
                             inventory.setItem(destSlot, sourceItem.copy(0), session);
@@ -307,8 +319,6 @@ public class PlayerInventoryTranslator extends InventoryTranslator {
 
                         affectedSlots.add(destSlot);
                     } else {
-                        int sourceSlot = bedrockSlotToJava(transferAction.getSource());
-                        int destSlot = bedrockSlotToJava(transferAction.getDestination());
                         GeyserItemStack sourceItem = inventory.getItem(sourceSlot);
                         if (inventory.getItem(destSlot).isEmpty()) {
                             inventory.setItem(destSlot, sourceItem.copy(0), session);

From 07be40256369e8a1cfb3dc464af065391c326d19 Mon Sep 17 00:00:00 2001
From: Alex <40795980+AlexProgrammerDE@users.noreply.github.com>
Date: Sat, 22 Feb 2025 12:31:37 +0100
Subject: [PATCH 162/165] Add run tasks and remove useless variables (#5362)

* Add run tasks and remove useless variables

The benefit of run tasks is that proxies like velocity can be prototyped on without using standalone or a GUI. Thus simplifying the prototyping/fixing process.

* Drop runwaterfall
---
 bootstrap/spigot/build.gradle.kts     | 7 +++++++
 bootstrap/standalone/build.gradle.kts | 3 ---
 bootstrap/velocity/build.gradle.kts   | 7 +++++++
 gradle/libs.versions.toml             | 5 +++++
 4 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/bootstrap/spigot/build.gradle.kts b/bootstrap/spigot/build.gradle.kts
index feabfdd7a..3a6c6b976 100644
--- a/bootstrap/spigot/build.gradle.kts
+++ b/bootstrap/spigot/build.gradle.kts
@@ -1,6 +1,7 @@
 plugins {
     id("geyser.platform-conventions")
     id("geyser.modrinth-uploading-conventions")
+    alias(libs.plugins.runpaper)
 }
 
 dependencies {
@@ -90,3 +91,9 @@ modrinth {
         "1.19.1", "1.19.2", "1.19.3", "1.19.4", "1.20", "1.20.1", "1.20.2", "1.20.3", "1.20.4", "1.20.5", "1.20.6")
     loaders.addAll("spigot", "paper")
 }
+
+tasks {
+    runServer {
+        minecraftVersion(libs.versions.runpaperversion.get())
+    }
+}
diff --git a/bootstrap/standalone/build.gradle.kts b/bootstrap/standalone/build.gradle.kts
index b210693c1..e794c266c 100644
--- a/bootstrap/standalone/build.gradle.kts
+++ b/bootstrap/standalone/build.gradle.kts
@@ -5,9 +5,6 @@ plugins {
     id("geyser.platform-conventions")
 }
 
-val terminalConsoleVersion = "1.2.0"
-val jlineVersion = "3.21.0"
-
 dependencies {
     api(projects.core)
 
diff --git a/bootstrap/velocity/build.gradle.kts b/bootstrap/velocity/build.gradle.kts
index 05035e271..eec6c23d6 100644
--- a/bootstrap/velocity/build.gradle.kts
+++ b/bootstrap/velocity/build.gradle.kts
@@ -1,6 +1,7 @@
 plugins {
     id("geyser.platform-conventions")
     id("geyser.modrinth-uploading-conventions")
+    alias(libs.plugins.runvelocity)
 }
 
 dependencies {
@@ -83,3 +84,9 @@ modrinth {
     uploadFile.set(tasks.getByPath("shadowJar"))
     loaders.addAll("velocity")
 }
+
+tasks {
+    runVelocity {
+        version(libs.versions.runvelocityversion.get())
+    }
+}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 3ab475829..15691e2d9 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -41,6 +41,9 @@ mixin = "0.8.5"
 mixinextras = "0.3.5"
 minecraft = "1.21.4"
 mockito = "5.+"
+runtask = "2.3.1"
+runpaperversion = "1.21.4"
+runvelocityversion = "3.4.0-SNAPSHOT"
 
 # plugin versions
 indra = "3.1.3"
@@ -150,6 +153,8 @@ minotaur = { group = "com.modrinth.minotaur", name = "Minotaur", version.ref = "
 [plugins]
 indra = { id = "net.kyori.indra", version.ref = "indra" }
 blossom = { id = "net.kyori.blossom", version.ref = "blossom" }
+runvelocity = { id = "xyz.jpenilla.run-velocity", version.ref = "runtask" }
+runpaper = { id = "xyz.jpenilla.run-paper", version.ref = "runtask" }
 
 [bundles]
 jackson = [ "jackson-annotations", "jackson-databind", "jackson-dataformat-yaml" ]

From 87d9907413e30c96d588d2c7257e0f590cd169c4 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Sun, 23 Feb 2025 18:37:01 +0100
Subject: [PATCH 163/165] Increase packet limits for multiple connected clients
 playing from one IP address (#5351)

* Fix https://github.com/GeyserMC/Geyser/issues/4926

* Extend the RakServerRateLimiter, now that it is possible

* Update core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java

* cast to int
---
 .../geyser/network/netty/GeyserServer.java    |  4 ++
 .../netty/handler/RakGeyserRateLimiter.java   | 50 +++++++++++++++++++
 .../geyser/session/SessionManager.java        | 35 ++++++++++++-
 gradle/libs.versions.toml                     |  2 +-
 4 files changed, 89 insertions(+), 2 deletions(-)
 create mode 100644 core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java

diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java b/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java
index efbd8bdff..fec254996 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java
@@ -59,6 +59,7 @@ import org.geysermc.geyser.network.CIDRMatcher;
 import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.network.GeyserServerInitializer;
 import org.geysermc.geyser.network.netty.handler.RakConnectionRequestHandler;
+import org.geysermc.geyser.network.netty.handler.RakGeyserRateLimiter;
 import org.geysermc.geyser.network.netty.handler.RakPingHandler;
 import org.geysermc.geyser.network.netty.proxy.ProxyServerHandler;
 import org.geysermc.geyser.ping.GeyserPingInfo;
@@ -175,6 +176,9 @@ public final class GeyserServer {
         if (Boolean.parseBoolean(System.getProperty("Geyser.RakRateLimitingDisabled", "false")) || isWhitelistedProxyProtocol) {
             // We would already block any non-whitelisted IP addresses in onConnectionRequest so we can remove the rate limiter
             channel.pipeline().remove(RakServerRateLimiter.NAME);
+        } else {
+            // Use our own rate limiter to allow multiple players from the same IP
+            channel.pipeline().replace(RakServerRateLimiter.NAME, RakGeyserRateLimiter.NAME, new RakGeyserRateLimiter(channel));
         }
     }
 
diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java b/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java
new file mode 100644
index 000000000..65e66eb33
--- /dev/null
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2019-2025 GeyserMC. http://geysermc.org
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * @author GeyserMC
+ * @link https://github.com/GeyserMC/Geyser
+ */
+
+package org.geysermc.geyser.network.netty.handler;
+
+import io.netty.channel.Channel;
+import org.cloudburstmc.netty.channel.raknet.RakServerChannel;
+import org.cloudburstmc.netty.handler.codec.raknet.server.RakServerRateLimiter;
+import org.geysermc.geyser.GeyserImpl;
+import org.geysermc.geyser.session.SessionManager;
+
+import java.net.InetAddress;
+
+public class RakGeyserRateLimiter extends RakServerRateLimiter {
+    public static final String NAME = "rak-geyser-rate-limiter";
+    private final SessionManager sessionManager;
+
+    public RakGeyserRateLimiter(Channel channel) {
+        super((RakServerChannel) channel);
+        this.sessionManager = GeyserImpl.getInstance().getSessionManager();
+    }
+
+    @Override
+    protected int getAddressMaxPacketCount(InetAddress address) {
+        // Using a factor of 0.8 for now, as the default packet count is already padded for multiple
+        return (int) (super.getAddressMaxPacketCount(address) * sessionManager.getAddressMultiplier(address) * 0.8);
+    }
+}
diff --git a/core/src/main/java/org/geysermc/geyser/session/SessionManager.java b/core/src/main/java/org/geysermc/geyser/session/SessionManager.java
index 14881d059..2175e3aaa 100644
--- a/core/src/main/java/org/geysermc/geyser/session/SessionManager.java
+++ b/core/src/main/java/org/geysermc/geyser/session/SessionManager.java
@@ -32,8 +32,15 @@ import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.geysermc.geyser.text.GeyserLocale;
 
-import java.util.*;
+import java.net.InetAddress;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
 
 public final class SessionManager {
     /**
@@ -47,6 +54,13 @@ public final class SessionManager {
     @Getter
     private final Map<UUID, GeyserSession> sessions = new ConcurrentHashMap<>();
 
+    /**
+     * Stores the number of connected sessions per address they're connected from.
+     * Used to raise per-IP connection limits.
+     */
+    @Getter(AccessLevel.PACKAGE)
+    private final Map<InetAddress, AtomicInteger> connectedClients = new ConcurrentHashMap<>();
+
     /**
      * Called once the player has successfully authenticated to the Geyser server.
      */
@@ -60,6 +74,14 @@ public final class SessionManager {
     public void addSession(UUID uuid, GeyserSession session) {
         pendingSessions.remove(session);
         sessions.put(uuid, session);
+        connectedClients.compute(session.getSocketAddress().getAddress(), (key, count) -> {
+            if (count == null) {
+                return new AtomicInteger(0);
+            }
+
+            count.getAndIncrement();
+            return count;
+        });
     }
 
     public void removeSession(GeyserSession session) {
@@ -68,6 +90,17 @@ public final class SessionManager {
             // Connection was likely pending
             pendingSessions.remove(session);
         }
+        connectedClients.computeIfPresent(session.getSocketAddress().getAddress(), (key, count) -> {
+            if (count.decrementAndGet() <= 0) {
+                return null;
+            }
+            return count;
+        });
+    }
+
+    public int getAddressMultiplier(InetAddress ip) {
+        AtomicInteger atomicInteger = connectedClients.get(ip);
+        return atomicInteger == null ? 1 : atomicInteger.get();
     }
 
     public @Nullable GeyserSession sessionByXuid(@NonNull String xuid) {
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 15691e2d9..ae35c6e34 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -13,7 +13,7 @@ websocket = "1.5.1"
 protocol-connection = "3.0.0.Beta6-20250212.131009-3"
 protocol-common = "3.0.0.Beta6-20250212.131009-3"
 protocol-codec = "3.0.0.Beta6-20250212.131009-3"
-raknet = "1.0.0.CR3-20250128.101054-17"
+raknet = "1.0.0.CR3-20250218.160705-18"
 minecraftauth = "4.1.1"
 mcprotocollib = "1.21.4-20250218.175633-22"
 adventure = "4.14.0"

From f0657c0d86eb7ff392016674f96703809f08caa4 Mon Sep 17 00:00:00 2001
From: chris <github@onechris.mozmail.com>
Date: Sun, 23 Feb 2025 20:25:44 +0100
Subject: [PATCH 164/165] Don't restrict the default packet limit

---
 .../geyser/network/netty/handler/RakGeyserRateLimiter.java     | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java b/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java
index 65e66eb33..2e6f9be79 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/handler/RakGeyserRateLimiter.java
@@ -44,7 +44,6 @@ public class RakGeyserRateLimiter extends RakServerRateLimiter {
 
     @Override
     protected int getAddressMaxPacketCount(InetAddress address) {
-        // Using a factor of 0.8 for now, as the default packet count is already padded for multiple
-        return (int) (super.getAddressMaxPacketCount(address) * sessionManager.getAddressMultiplier(address) * 0.8);
+        return super.getAddressMaxPacketCount(address) * sessionManager.getAddressMultiplier(address);
     }
 }

From 9733311508a249e32a915e67e6569d177abcd59f Mon Sep 17 00:00:00 2001
From: onebeastchris <github@onechris.mozmail.com>
Date: Sun, 23 Feb 2025 21:10:05 +0100
Subject: [PATCH 165/165] Revert latest Geyser changes

---
 .../org/geysermc/geyser/network/netty/GeyserServer.java   | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java b/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java
index fec254996..fd26b63e1 100644
--- a/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java
+++ b/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java
@@ -59,7 +59,6 @@ import org.geysermc.geyser.network.CIDRMatcher;
 import org.geysermc.geyser.network.GameProtocol;
 import org.geysermc.geyser.network.GeyserServerInitializer;
 import org.geysermc.geyser.network.netty.handler.RakConnectionRequestHandler;
-import org.geysermc.geyser.network.netty.handler.RakGeyserRateLimiter;
 import org.geysermc.geyser.network.netty.handler.RakPingHandler;
 import org.geysermc.geyser.network.netty.proxy.ProxyServerHandler;
 import org.geysermc.geyser.ping.GeyserPingInfo;
@@ -176,10 +175,11 @@ public final class GeyserServer {
         if (Boolean.parseBoolean(System.getProperty("Geyser.RakRateLimitingDisabled", "false")) || isWhitelistedProxyProtocol) {
             // We would already block any non-whitelisted IP addresses in onConnectionRequest so we can remove the rate limiter
             channel.pipeline().remove(RakServerRateLimiter.NAME);
-        } else {
-            // Use our own rate limiter to allow multiple players from the same IP
-            channel.pipeline().replace(RakServerRateLimiter.NAME, RakGeyserRateLimiter.NAME, new RakGeyserRateLimiter(channel));
         }
+//        else {
+//            // Use our own rate limiter to allow multiple players from the same IP
+//            channel.pipeline().replace(RakServerRateLimiter.NAME, RakGeyserRateLimiter.NAME, new RakGeyserRateLimiter(channel));
+//        }
     }
 
     public void shutdown() {